• 数据治理之springboot项目入门


    controller和service交互

    1. @Autowired自动装载service的服务
    2. @Service标记该服务已上线

    为什么@Autowired要使用接口而不是实现类?

    1. 解耦:使用时只需要知道哪些功能需要使用即可,不需要知道功能是如何实现的
    2. 实现类可以是本地的不同实现类实现,通过@Qualifier(“别名”)进行指定。也可以是远程的实现类,通过注册中心进行指定。

    mybatis数据层

    1. 创建mapper包
    2. 创建表名+mapper类
    3. 根据根据业务需求,以select, insert, update, delete来命名方法
    4. 使用@Param(“cus”)在参数列表中获取参数
    5. 使用@Insert(“拼接SQL”), 使用#{cus}的形式来使用参数
      • #{参数名}: 半自动指代符,自动判断变量的类型,来决定是否加入单引号,适用于纯参数传递,不包含语法
      • ${SQL语句}: 不做任何判断,使用传递SQL语句
    6. 在接口类上面加上注解@Mapper, mybatis会帮你创建实现类

    mybatis-plus框架

    在mybatis的基础上,封装了 很多现成的插删改查的方法。

    • 凡是单表的插删改查,不用程序员自己写SQL,直接使用现成的方法即可。
    • 如果包含了Join, union子查询等复杂查询。还要使用mybatis自己编写SQL。
    • 帮你封装Service层的代码,自动生成相应代码。
      • impl类继承extends ServiceImpl<数据层mapper类, bean类>
      • 接口类继承extends IService

    使用

    1. 添加mybatis-plus依赖
    2. 继承BaseMapper<自定义bean对象>
    3. 在Service层使用mapper对象调用现成的插删改查方法即可
    4. 查询操作的参数为QueryWrapper, 用于存放各种查询条件,常见的条件为eq, gt, lt, ge, le
      • new QueryWrapper().eq(“数据库字段名”, 函数变量)
      • mapper.selectList(wrapper);

    代码生成器

    1. 引入依赖mybatis-plus-generator 和模板velocity-engine-core + freemarker
    2. 工具类CodeGen3531, 3531是模板号
    public static void main(String[] args) {
            //  String[] tables={ "governance_metric","governance_type","governance_assess_detail"};
            //  String[] tables={ "t_ds_task_definition","t_ds_task_instance"};
            // String[] tables={ "governance_assess_table","governance_assess_tec_owner","governance_assess_global"};
            String[] tables={ "table_meta_info","table_meta_info_extra"  };
    
            FastAutoGenerator.create("jdbc:mysql://hadoop102:3306/dga","root","000000")
                    .globalConfig(builder -> {
                        builder.author("zhangchen")               //作者
                                .outputDir("D:\\Code\\code_java\\data-governance-assesment\\src\\main\\java")    //输出路径(写到java目录)
                                .commentDate("yyyy-MM-dd")
                                .dateType(DateType.ONLY_DATE);  //选择实体类中的日期类型  ,Date or LocalDatetime
                    })
                    .packageConfig(builder -> {                 //各个package 名称
                        builder.parent("com.atguigu.dga")
                                .moduleName("meta")
                                .entity("bean")
                                .service("service")
                                .serviceImpl("service.impl")
                                .controller("controller")
                                .mapper("mapper");
    
                    })
                    .strategyConfig(builder -> {
                        builder.addInclude(tables)
                                .serviceBuilder()
                                .formatServiceFileName("%sService")  //类后缀
                                .formatServiceImplFileName("%sServiceImpl")  //类后缀
                                .entityBuilder()
                                .enableLombok()  //允许使用lombok
                                .controllerBuilder()
                                .formatFileName("%sController")  //类后缀
                                .enableRestStyle()   //生成@RestController 否则是@Controller
                                .mapperBuilder()
                                //生成通用的resultMap 的xml映射
                                .enableBaseResultMap()  //生成xml映射
                                .superClass(BaseMapper.class)  //标配
                                .formatMapperFileName("%sMapper")  //类后缀
                                .enableFileOverride()   //生成代码覆盖已有文件 谨慎开启
                                .mapperAnnotation(Mapper.class) ; //生成代码Mapper上自带@Mapper
    
                    })
                    .templateConfig(new Consumer<TemplateConfig.Builder>() {
                        @Override
                        public void accept(TemplateConfig.Builder builder) {
                            // 实体类使用我们自定义模板
                            builder.entity("templates/myentity.java");
                        }
                    })
                    .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                    .execute();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52

    JSON工具

    1. fastjson, 阿里出品
    2. gson,谷歌出品
    3. jackson,apche出品

    FastJson

    1. java对象转为Json字符串:JSON.toJSONString(obj)
    2. json字符串解析为java对象:
      • 单值对象{}的json,转换成自定义的bean:parseObject(obj, Customer.class)
      • 多值对象JSON.parseArray()

    动态数据源

    1. 添加依赖
    2. 修改application.properties文件
    3. 使用@DS(“数据库名”)来指定Service层和Mapper层的数据库

    日志

    • 日志级别:低级会包含高级别的信息,trace最低,fatal最高,一般很少用。
      1. trace
      2. debug
      3. info
      4. warn
      5. error
      6. fatal
    • 调整日志级别
    logging.level.root=info   #全局日志级别
    logging.level.com.atguigu.dga.meta.mapper=debu #数据层日志级别,为了查看SQL
    
    • 1
    • 2

    连接池

    作用:复用

    参数作用
    initial-size初始连接数
    min-idle最少保持空闲连接数
    max-active最大可活动的连接数
    max-wait最长等待时长
    test-on-borrow借走时测试
    test-while-idle空闲时测试
    test-on-return归还时测试
    # druid的多数据源配置和多数据源插件的自动配置有冲突,排除掉druid的配置
    spring.autoconfigure.exclude=com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
    
    
    spring.datasource.dynamic.datasource.demo.url=jdbc:mysql://hadoop102:3306/dga?characterEncoding=utf-8&useSSL=false
    spring.datasource.dynamic.datasource.demo.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.dynamic.datasource.demo.username=root
    spring.datasource.dynamic.datasource.demo.password=000000
    spring.datasource.dynamic.datasource.demo.druid.initial-size=5
    spring.datasource.dynamic.datasource.demo.druid.min-idle=5
    spring.datasource.dynamic.datasource.demo.druid.max-active=20
    spring.datasource.dynamic.datasource.demo.druid.max-wait=60000
    spring.datasource.dynamic.datasource.demo.druid.test-on-borrow=true
    spring.datasource.dynamic.datasource.demo.druid.test-while-idle=true
    spring.datasource.dynamic.datasource.demo.druid.test-on-return=false
    
    #spring.datasource.dynamic.datasource.demo2.url=jdbc:mysql://hadoop102:3306/atguigu?characterEncoding=utf-8&useSSL=false
    #spring.datasource.dynamic.datasource.demo2.driver-class-name=com.mysql.cj.jdbc.Driver
    #spring.datasource.dynamic.datasource.demo2.username=root
    #spring.datasource.dynamic.datasource.demo2.password=000000
    #spring.datasource.dynamic.datasource.demo2.druid.initial-size=5
    #spring.datasource.dynamic.datasource.demo2.druid.min-idle=5
    #spring.datasource.dynamic.datasource.demo2.druid.max-active=20
    #spring.datasource.dynamic.datasource.demo2.druid.max-wait=60000
    #spring.datasource.dynamic.datasource.demo2.druid.test-on-borrow=true
    #spring.datasource.dynamic.datasource.demo2.druid.test-while-idle=true
    #spring.datasource.dynamic.datasource.demo2.druid.test-on-return=false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
  • 相关阅读:
    WebRTC系列-网络之带宽估计和码率估计(4)接收端带宽估计-发送端paced
    Linux隐藏文件或文件夹
    【产品人卫朋】华为IPD流程体系:集成产品开发框架
    python函数的定义和使用
    ElasticSearch统计总数据量
    用Markdown记录“学习用Markdown写数学公式”
    Elasticsearch跨集群复制(CCR)介绍
    服务端打开12345端口,客户端无法使用12345端口
    C语言自学笔记3-----C语言运算符及优先级
    9.2 Plotting with pandas and seaborn(用pandas和seaborn绘图)
  • 原文地址:https://blog.csdn.net/qq_44273739/article/details/134474077