Mybatis-Plus 真好用(乡村爱情加持)

写在前面

MyBatis的增强方案确实有不少,甚至有种感觉是现在如果只用 “裸MyBatis”,不来点增强插件都不好意思了。这不,在上一篇文章《Spring Boot项目利用MyBatis Generator进行数据层代码自动生成》 中尝试了一下 MyBatis Generator。这次来点更加先进的 Mybatis-Plus,SQL语句都不用写了,分页也是自动完成,嗯,真香!


数据库准备

CREATE TABLE tbl_user
(
	user_id BIGINT(20) NOT NULL COMMENT '主键ID',
	user_name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
	user_age INT(11) NULL DEFAULT NULL COMMENT '年龄',
	PRIMARY KEY (user_id)
) charset = utf8;

MyBatis-Plus加持

  • 工程搭建 (不赘述了)
  • 依赖引入
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.1.0</version>
</dependency>
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid-spring-boot-starter</artifactId>
	<version>1.1.9</version>
</dependency>
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
	<version>8.0.12</version>
</dependency>

主要是 Mybatis Plus、Lombok(不知道Lombok干嘛的?可以看这里)、Druid连接池 等依赖。

  • MyBatis Plus配置

项目配置

mybatis-plus:
 mapper-locations: classpath:/mapper/*Mapper.xml

新增 MyBatis Plus配置类

@Configuration
@MapperScan("cn.codesheep.springbtmybatisplus.mapper")
public class MyBatisConfig {
}

看到没,几乎零配置啊,下面就可以写业务逻辑了


业务编写

  • 实体类
@Data
@TableName("tbl_user")
public class User {
 @TableId(value = "user_id")
 private Long userId;
 private String userName;
 private Integer userAge;
}
  • Mapper类
public interface UserMapper extends BaseMapper<User> {
}

这里啥接口方法也不用写,就可以实现增删改查了!

  • Service类

Service接口:

public interface UserService extends IService<User> {
 int insertUser( User user );
 int updateUser( User user );
 int deleteUser( User user );
 User findUserByName( String userName );
 IPage getUserPage( Page page, User user );
}

Service实现:

@Service
@AllArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
 // 增
 @Override
 public int insertUser(User user) {
 return baseMapper.insert( user );
 }
 // 改
 @Override
 public int updateUser(User user) {
 return baseMapper.updateById( user );
 }
 // 删
 @Override
 public int deleteUser(User user) {
 return baseMapper.deleteById( user.getUserId() );
 }
 // 查
 @Override
 public User findUserByName( String userName ) {
 return baseMapper.getUserByName( userName );
 }
}
  • Controller类
@RestController
@RequestMapping("/user")
public class UserContorller {
 @Autowired
 private UserService userService;
 // 增
 @PostMapping( value = "/insert")
 public Object insert( @RequestBody User user ) {
 return userService.insertUser( user );
 }
 // 改
 @PostMapping( value = "/update")
 public Object update( @RequestBody User user ) {
 return userService.updateUser( user );
 }
 // 删
 @PostMapping( value = "/delete")
 public Object delete( @RequestBody User user ) {
 return userService.deleteUser( user );
 }
 // 查
 @GetMapping( value = "/getUserByName")
 public Object getUserByName( @RequestParam String userName ) {
 return userService.findUserByName( userName );
 }
}

通过以上几个简单的步骤,我们就实现了 tbl_user表的增删改查,传统 MyBatis的 XML文件一个都不需要写!


实际实验【《乡爱》加持】

  • 启动项目

很牛批的 logo就会出现

Mybatis-Plus 真好用(乡村爱情加持)

 

接下来通过 Postman来发送增删改查的请求

  • 插入记录

通过 Postman随便插入几条记录 POST localhost:8089/user/insert

{"userId":3,"userName":"刘能","userAge":"58"}
{"userId":4,"userName":"赵四","userAge":"58"}
{"userId":5,"userName":"谢广坤","userAge":"58"}
{"userId":6,"userName":"刘大脑袋","userAge":"58"}

Mybatis-Plus 真好用(乡村爱情加持)

 

Mybatis-Plus 真好用(乡村爱情加持)

 

  • 修改记录

修改记录时需要带用户ID,比如我们修改 赵四 那条记录的名字为 赵四(Zhao Four)

Mybatis-Plus 真好用(乡村爱情加持)

 

Mybatis-Plus 真好用(乡村爱情加持)

 

  • 删除记录

修改记录时同样需要带用户ID,比如删除ID=6 那条 刘大脑袋的记录

Mybatis-Plus 真好用(乡村爱情加持)

 

  • 查询记录(普通查询,下文讲分页查询)

比如,按照名字来查询:GET localhost:8089/user/getUserByName?userName=刘能


最关心的分页问题

  • 首先装配分页插件
@Bean
public PaginationInterceptor paginationInterceptor() {
	return new PaginationInterceptor();
}
  • Mapper类
public interface UserMapper extends BaseMapper<User> {
 // 普通查询
 User getUserByName( String userName );
 // 分页查询
 IPage<List<User>> getUsersPage( Page page, @Param("query") User user );
}
  • Service类
@Service
@AllArgsConstructor
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
 // 查:普通查
 @Override
 public User findUserByName( String userName ) {
 return baseMapper.getUserByName( userName );
 }
 // 分页查
 @Override
 public IPage getUserPage(Page page, User user) {
 return baseMapper.getUsersPage( page, user );
 }
}
  • Controller类
@GetMapping( value = "/page")
public Object getUserPage( Page page, User user ) {
	return userService.getUserPage( page, user );
}

实际实验一下,我们分页查询 年龄 = 58 的多条记录:

Mybatis-Plus 真好用(乡村爱情加持)

 

可以看到结果数据中,除了给到当前页数据,还把总记录条数,总页数等一并返回了,很是优雅呢 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值