0


MyBatis-Plus框架整合

官网
引入依赖
在这里插入图片描述

  1. <!--mybatis-plus-boot-starter 包含了mybatis的所有依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-generator</artifactId><version>3.4.1</version></dependency><dependency><groupId>org.freemarker</groupId><artifactId>freemarker</artifactId><version>2.3.28</version></dependency><!--推荐大家使用阿里巴巴的druid的连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency><!--引入mysql数据库相关依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>

yml配置

  1. spring:
  2. application:
  3. name: manage-client
  4. datasource:
  5. type:com.alibaba.druid.pool.DruidDataSource
  6. driver-class-name:com.mysql.jdbc.Driver
  7. url: jdbc:mysql://127.0.0.1:3306/mysql?userSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
  8. username: root
  9. password: ys@2017
  10. main:
  11. allow-circular-references:true
  12. #mybatis-plus配置
  13. mybatis-plus:
  14. configuration:
  15. log-impl:org.apache.ibatis.logging.stdout.StdOutImpl
  16. mapper-locations: classpath:com/huangyabei/mapper/xml/*.xml

主启动类加上包扫码

  1. @SpringBootApplication(scanBasePackages ={"com.win.sky"})@MapperScan(basePackages="com.win.sky.dao")@EnableDiscoveryClientpublicclassSaasAdminApplication{publicstaticvoidmain(String[] args){SpringApplication.run(SaasAdminApplication.class, args);}}

自动生产代码接口util

  1. importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.annotation.FieldFill;importcom.baomidou.mybatisplus.generator.AutoGenerator;importcom.baomidou.mybatisplus.generator.config.DataSourceConfig;importcom.baomidou.mybatisplus.generator.config.GlobalConfig;importcom.baomidou.mybatisplus.generator.config.PackageConfig;importcom.baomidou.mybatisplus.generator.config.StrategyConfig;importcom.baomidou.mybatisplus.generator.config.po.TableFill;importcom.baomidou.mybatisplus.generator.config.rules.NamingStrategy;importjava.util.Arrays;importjava.util.List;publicclassMyBatisPlusGenerate{publicstaticvoidmain(String[] args){//创建generator对象:通过操作这个对象来生成代码AutoGenerator autoGenerator =newAutoGenerator();//数据源:建立数据源与数据库连接DataSourceConfig dataSourceConfig =newDataSourceConfig();
  2. dataSourceConfig.setDbType(DbType.MYSQL);//选择数据库的类型//数据源
  3. dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");//账号
  4. dataSourceConfig.setUsername("root");//密码
  5. dataSourceConfig.setPassword("ys@2017");//连接地址
  6. dataSourceConfig.setUrl("jdbc:mysql://192.168.10.77:3306/yszh_gw?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai");
  7. autoGenerator.setDataSource(dataSourceConfig);//全局配置GlobalConfig globalConfig =newGlobalConfig();
  8. globalConfig.setOutputDir("D:/generatingCode/test/main/java");//放到子工程里,修改了路径 //这里个人建议经历不要直接放在公司项目里面,避免覆盖已经写好的代码,
  9. globalConfig.setAuthor("yszh-gw");
  10. globalConfig.setOpen(false);
  11. globalConfig.setServiceName("%sService");
  12. autoGenerator.setGlobalConfig(globalConfig);//包信息PackageConfig packageConfig =newPackageConfig();
  13. packageConfig.setParent("com.win.sky.news");
  14. packageConfig.setEntity("entity");
  15. packageConfig.setMapper("mapper");
  16. packageConfig.setService("service");
  17. packageConfig.setServiceImpl("service.impl");
  18. packageConfig.setController("controller");
  19. autoGenerator.setPackageInfo(packageConfig);//策略配置StrategyConfig strategyConfig =newStrategyConfig();
  20. strategyConfig.setInclude("t_test","t_order");//有新的表往里面加就是了
  21. strategyConfig.setNaming(NamingStrategy.underline_to_camel);//数据库表映射到实体的命名策略驼峰命名
  22. strategyConfig.setTablePrefix(packageConfig.getModuleName()+"t_");//生成实体时去掉表前缀
  23. strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
  24. strategyConfig.setEntityLombokModel(true);TableFill tableFill =newTableFill("create_time",FieldFill.INSERT);TableFill tableFill1 =newTableFill("update_time",FieldFill.INSERT_UPDATE);List<TableFill> tableFills =Arrays.asList(tableFill,tableFill1);
  25. strategyConfig.setTableFillList(tableFills);
  26. autoGenerator.setStrategy(strategyConfig);//运行
  27. autoGenerator.execute();}}

扩展
mybatis-plus在使用过程中类似JPA框架
在这里插入图片描述
自定义接口继承了mybatis-plus框架提供的这个IService接口之后,基本的CRUD方法都可以直接使用
在这里插入图片描述
Mybatis-plus提供了分页查询方法

  1. Page<TenantVo> page =newPage<>(pageNum,pageSize);

MyBatis-plus提供的条件拼接对象

  1. QueryWrapper<TenantVo> qw =newQueryWrapper<>();

在这里插入图片描述
自定义sql查询
在实际开发过程中,可能涉及到多表复杂查询,简单的sql已经不适合使用,这样的情况下,我们可以通过自定义sql配合QueryWrapper条件拼接对象使用

  1. SELECT md.id,
  2. md.name,
  3. md.menus_id,
  4. md.coding,
  5. md.data_id,
  6. md.remark,
  7. md.create_by,
  8. md.create_time,
  9. md.update_by,
  10. md.update_time,
  11. d.name dataName,
  12. d.rule
  13. FROM t_menus_data md
  14. LEFT JOIN t_data_permission d on d.id = md.data_id
  15. --下面的代码就是用例接收服务层传过来的拼接的条件参数
  16. <where>
  17. ${ew.sqlSegment}</where>

mapper层

  1. IPage<MenusDataEntity>pageVo(@Param("page")IPage<MenusDataEntity> page,@Param(Constants.WRAPPER)QueryWrapper<MenusDataEntity> qw);

service层

  1. IPage<MenusDataEntity> page =newPage<>(pageNum,pageSize);QueryWrapper<MenusDataEntity> qw =newQueryWrapper<>();// 查询添加环节筛选需求
  2. qw.eq("md.menus_id",menusId);if(!StrUtil.isEmpty(name)){
  3. qw.like("md.name",name);}IPage<MenusDataEntity> menusDataEntityIPage = menusDataMapper.pageVo(page,qw);
标签: java 数据库开发

本文转载自: https://blog.csdn.net/weixin_44137464/article/details/123996459
版权归原作者 夏七丿 所有, 如有侵权,请联系我们删除。

“MyBatis-Plus框架整合”的评论:

还没有评论