MyBatis的加强方案确实有很多,甚至有种感受是如今若是只用 “裸MyBatis”,不来点加强插件都很差意思了。这不,在上一篇文章《Spring Boot项目利用MyBatis Generator进行数据层代码自动生成》 中尝试了一下 MyBatis Generator。此次来点更加先进的 Mybatis-Plus,SQL语句都不用写了,分页也是自动完成,嗯,真香!java
可 长按 或 扫描 下面的 当心心 来订阅做者公众号 CodeSheep,获取更多 务实、能看懂、可复现的 原创文 ↓↓↓mysql
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;
复制代码
工程搭建 (不赘述了)spring
依赖引入sql
<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链接池 等依赖。数据库
项目配置bash
mybatis-plus:
mapper-locations: classpath:/mapper/*Mapper.xml
复制代码
新增 MyBatis Plus配置类mybatis
@Configuration
@MapperScan("cn.codesheep.springbtmybatisplus.mapper")
public class MyBatisConfig {
}
复制代码
看到没,几乎零配置啊,下面就能够写业务逻辑了app
@Data
@TableName("tbl_user")
public class User {
@TableId(value = "user_id")
private Long userId;
private String userName;
private Integer userAge;
}
复制代码
public interface UserMapper extends BaseMapper<User> {
}
复制代码
这里啥接口方法也不用写,就能够实现增删改查了!ide
Service接口:spring-boot
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 );
}
}
复制代码
@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,好比咱们修改 赵四
那条记录的名字为 赵四(Zhao Four)
修改记录时一样须要带用户ID,好比删除ID=6 那条 刘大脑壳
的记录
好比,按照名字来查询:GET localhost:8089/user/getUserByName?userName=刘能
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
复制代码
public interface UserMapper extends BaseMapper<User> {
// 普通查询
User getUserByName( String userName );
// 分页查询
IPage<List<User>> getUsersPage( Page page, @Param("query") User user );
}
复制代码
@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 );
}
}
复制代码
@GetMapping( value = "/page")
public Object getUserPage( Page page, User user ) {
return userService.getUserPage( page, user );
}
复制代码
实际实验一下,咱们分页查询 年龄 = 58
的多条记录:
能够看到结果数据中,除了给到当前页数据,还把总记录条数,总页数等一并返回了,非常优雅呢 !
因为能力有限,如有错误或者不当之处,还请你们批评指正,一块儿学习交流!