数据治理之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();
    }

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

连接池

作用:复用

参数 作用
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

你可能感兴趣的:(spring,boot,后端,java)