第07章 MyBatisPlus持久化操作(一)

本文详细介绍使用MyBatisPlus代码生成器自动生成实体、Mapper等代码,并通过具体案例演示单条信息及批量信息的添加操作,提升开发效率。

序言

1.内容介绍

​ 本章介绍了代码生成器的作用、配置方式以及如何采用代码生成器自动生成MyBatisPlus模板代码进行了描述,重点引入了两个持久层的案例分别是单条信息添加以及批量信息添加,实现对于持久层操作有个深刻的理解。

2.理论目标

  • 了解代码生成器的作用
  • 掌握代码生成器的配置
  • 掌握信息持久化操作步骤

3.实践目标

  • 熟练进行多方式单条信息添加操作,满足项目单目记录持久化需求
  • 熟练进行saveOrUpdate操作,达到灵活进行记录的添加、更新操作
  • 熟练进行批量信息添加,满足项目中多记录的导入需求

4.实践案例

  • MyBatisPlus模板代码自动生成实战
  • 单条信息添加实战
  • 批量信息添加实战

5.内容目录

  • 1.代码生成器
  • 2.单条信息添加实战
  • 3.批量信息添加实战

第1节 代码生成器

1. 代码生成器介绍

  • AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。

2. 代码生成器配置

添加依赖pom.xml

 

<!-- 代码生成器依赖 --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.4.2</version> </dependency>

 

<!-- 添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认)、Freemarker、Beetl,用户可以选择自己熟悉的模板引擎,如果都不满足您的要求,可以采用自定义模板引擎。--> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.31</version> </dependency> <!-- 如果选择了非默认引擎,需要在 AutoGenerator 中 设置模板引擎。--> AutoGenerator generator = new AutoGenerator(); // set freemarker engine generator.setTemplateEngine(new FreemarkerTemplateEngine());

编写配置

 

//配置 GlobalConfig GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java"); globalConfig.setAuthor("jobob"); globalConfig.setOpen(false);

 

//配置 DataSourceConfig DataSourceConfig dataSourceConfig = new DataSourceConfig(); dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/userdb?useUnicode=true&useSSL=false&characterEncoding=utf8"); dataSourceConfig.setDriverName("com.mysql.jdbc.Driver"); dataSourceConfig.setUsername("root"); dataSourceConfig.setPassword("password");

自定义属性注入

 

autoGenerator .setCfg(injectionConfig);

3. 执行代码生成器

4. 代码模块详解

  • entity包:实体模型层

  • mapper包:持久化模型层

     

    //自动生成类UserMapper.java public interface UserMapper extends BaseMapper<User> { }

    com.baomidou.mybatisplus.core.mapper.BaseMapper类:封装了系统持久化方法

  • service包:业务逻辑层,需要调用mapper持久层

    • IUserService.java:业务接口
    • UserServiceImpl.java:业务实现类
 

//UserMapper是调用的持久类 //User是操作的实体类 @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { }

  • controller包:控制层

    • UserController.java
     

    @RestController @RequestMapping("/user") public class UserController { }


第2节 单条信息添加实战

1. Service CRUD 接口

  • 通用 Service CRUD 封装IService (opens new window)接口,进一步封装 CRUD 采用 get 查询单行 remove 删除 list 查询集合 page 分页 前缀命名方式区分 Mapper 层避免混淆,
  • 泛型 T 为任意实体对象
  • 建议如果存在自定义通用 Service 方法的可能,请创建自己的 IBaseService 继承 Mybatis-Plus 提供的基类
  • 对象 Wrapper 为 条件构造器

2. 添加配置

  • 配置MapperScan注解

     

    @MapperScan("cn.com.chinahitech.springboot_user.*.mapper") public class SpringbootUserApplication { ... }

  • 添加日志记录配置

    • resources目录下添加logback.xml
  • application.xml添加配置

    mybatis-plus:
      type-aliases-package: cn.com.chinahitech.mybatisplus_user.*.entity
      global-config:
        db-config:
          id-type: auto
          logic-delete-field: 1
          logic-not-delete-value: 0
    ......
    

3. 添加单用户记录

3.1 添加操作主要采用两种方式

  • save(参数)
  • saveOrUpdate(参数)

3.2 编写IUserService.java

 

public interface IUserService extends IService<User> { //添加单用户 void addUser(User user); }

3.3 编写UserServiceImpl.java

 

@Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { @Override public void addUser(User user) { save(user); } }

3.4 编写UserController.java

 

@RestController @RequestMapping("/user") public class UserController { @Autowired private IUserService userService; //save方式添加1条记录 @RequestMapping("/saveOne") public String testSaveOneRecord(){ User user = new User("Tony",23,"tony@123.com"); userService.addUser(user); return "添加1条记录成功!"; } }

3.5 运行,观察执行结果

4. 添加或更新1条记录

采用saveOrUpdate(参数)方法

4.1 编写IUserService.java

 

//添加或更新用户 void addOrModifyUser(User user);

4.2 编写UserServiceImpl.java

 

@Override public void addOrModifyUser(User user) { saveOrUpdate(user); }

4.3 编写UserController.java

 

//saveOrUpdate方式添加或更新1条记录 @RequestMapping("/saveOrUpdate") public String testSaveOrUpdateOneRecord(){ User user = new User(6,"李四",28,"lisi@123.com"); userService.addOrModifyUser(user); return "添加或更新1条记录成功!"; }

4.4 运行,观察执行结果

开始实验

第3节 批量信息添加实战

1. 添加多用户记录

1.1 编写IUserService.java

 

//基于List对象方式添加多条记录 void addUserList(List<User> users); //基于batch size方式 void addUserList2(List<User> users,int batchSize);

1.2 编写UserServiceImpl.java

 

@Override public void addUserList(List<User> users) { saveBatch(users); } @Override public void addUserList2(List<User> users, int batchSize) { saveBatch(users,batchSize); }

1.3 编写UserController.java

 

//添加多条记录 @RequestMapping("/saveUsers") public String testSaveUsers(){ List<User> userList = new ArrayList<User>(); userList.add(new User("王五",20,"wangwu@123.com")); userList.add(new User("赵四",30,"zhaosi@123.com")); userList.add(new User("田七",24,"tianqi@123.com")); userService.addUserList2(userList,2); //batchSize:2 return "添加多条记录!"; }

1.4 运行,观察执行结果

2. 添加或更新多条用户记录

  • 本应用学生参考"添加或更新1条记录"
  • 本应用作为扩展实战

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

撸码的xiao摩羯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值