Spring Boot整合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.baomidougroupId><artifactId>mybatis-plus-boot-starterartifactId><version>3.1.0version>
dependency><dependency><groupId>org.projectlombokgroupId><artifactId>lombokartifactId>
dependency><dependency><groupId>com.alibabagroupId><artifactId>druid-spring-boot-starterartifactId><version>1.1.9version>
dependency><dependency><groupId>mysqlgroupId><artifactId>mysql-connector-javaartifactId><scope>runtimescope><version>8.0.12version>
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 {// 增@Overridepublic int insertUser(User user) {return baseMapper.insert( user );}// 改@Overridepublic int updateUser(User user) {return baseMapper.updateById( user );}// 删@Overridepublic int deleteUser(User user) {return baseMapper.deleteById( user.getUserId() );}// 查@Overridepublic User findUserByName( String userName ) {return baseMapper.getUserByName( userName );}
}
- Controller类
@RestController
@RequestMapping("/user")
public class UserContorller {@Autowiredprivate 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 Logo
接下来通过 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"}
发送插入请求
插入结果
- 修改记录
修改记录时需要带用户ID,比如我们修改 赵四 那条记录的名字为 赵四(Zhao Four)
发送修改请求
修改结果
- 删除记录
修改记录时同样需要带用户ID,比如删除ID=6 那条 刘大脑袋的记录
image.png
- 查询记录(普通查询,下文讲分页查询)
比如,按照名字来查询: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 {// 查:普通查@Overridepublic User findUserByName( String userName ) {return baseMapper.getUserByName( userName );}// 分页查@Overridepublic 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 的多条记录:
分页查询结果
可以看到结果数据中,除了给到当前页数据,还把总记录条数,总页数等一并返回了,很是优雅呢 !
写在最后
由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!
本文转载自https://www.codesheep.cn/2019/04/12/springbt-mybatis-plus/
如有侵权,请联系作者删除
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
