Mybatis-Plus 真好用(乡村爱情加持)
文章共 600字,阅读大约需要 3分钟!
写在前面
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就会出现
接下来通过 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,比如我们修改 赵四
那条记录的名字为 赵四(ZhaoFour)
删除记录
修改记录时同样需要带用户ID,比如删除ID=6 那条 刘大脑袋
的记录
查询记录(普通查询,下文讲分页查询)
比如,按照名字来查询: GET localhost:8089/user/getUserByName?userName=刘能
最关心的分页问题
首先装配分页插件
@Beanpublic 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
的多条记录:
可以看到结果数据中,除了给到当前页数据,还把总记录条数,总页数等一并返回了,很是优雅呢 !
写在最后
由于能力有限,若有错误或者不当之处,还请大家批评指正,一起学习交流!
个人网站:www.codesheep.cn (程序羊)
更多热文在此:
● Spring Boot 系列实战文章合集(源码已开源)
● 程序员写简历时必须注意的技术词汇拼写
● 利用K8S技术栈打造个人私有云系列连载文章
● 从一份配置清单详解Nginx服务器配置
● 一文上手 Elasticsearch常用可视化管理工具
● Docker容器可视化监控中心搭建
● 利用ELK搭建Docker容器化应用日志中心
● RPC框架实践之:Google gRPC
● 一文详解 Linux系统常用监控工具
作者更多 务实、能看懂、可复现的 技术文章尽在公众号 CodeSheep,欢迎扫码订阅,第一时间获取更新 ⬇️⬇️⬇️
更多相关文章
- 互联网开发十大顶级开源项目巡礼!
- Vue.js任务列表 可本地存储任务数据
- 推荐几个炫酷的Python开源项目
- 疫情防控不能松懈,利用数据挖掘做好重点区域人群密度预测
- 芋道 Spring Boot 数据库版本管理入门
- Spring Boot项目利用MyBatis Generator进行数据层代码自动生成
- python六大数据类型
- 超越 Cookie:当今的浏览器端数据存储方案[每日前端夜话0xA3]
- 芋道 Spring Boot 多数据源(读写分离)入门