MyBatis-Plus 官网:https://mp.baomidou.com
都是对mybatis增强扩展,基本功能都是简化sql配置,集成代码生成器,支持乐观锁、分页、多数据源。
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生,这是官方给的定义。
<!--mybatis plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.1.0</version>
</dependency>
指定扫描Mapper存放位置,例如:
@MapperScan("oxingsoft.demo.mapper")
@Configuration
public class MybatisPlusConfig {
/**
* mybatis-plus分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor page = new PaginationInterceptor();
page.setDialectType("mysql");
return page;
}
}
也可以同时使用pagehelper分页插件,分页查询代码写法不同。
public interface UserDao extends BaseMapper<UserEntity>{
}
只须继承mybatis-plus提供的基类就自动实现了常用的CRUD方法。
public interface UserService extends IService<UserEntity>{
}
@TableName(value = "user")
public class UserEntity {
@TableId(value = "id", type = IdType.AUTO)
private Long id;
private String userName;
//get/set 略...
}
如果要实现ActiveRecord模式写法,实体类要稍做处理,继承一个Model类并重写pkVal()方法。
/**
* 分页查询
*/
@RequestMapping(value="selectPage")
public Page<UserEntity> selectPage() {
Page<UserEntity> page=userDao.selectPage(new Page<>(1,10), new QueryWrapper<UserEntity>().eq("userName", "张三"));
System.out.println("records:"+page.getRecords());
return page;
}
/**
* 新增用户
*/
@RequestMapping(value="insert")
public String insert() {
UserEntity user=new UserEntity();
user.setUserName("张三");
userDao.insert(user);
return "insert success";
}
/**
* 根据id修改用户
*/
@RequestMapping(value="updateById")
public String updateById(){
UserEntity user=new UserEntity();
user.setUserName("李四");
user.setId(25L);
userDao.updateById(user);
return "update success";
}
/**
* 根据id删除用户
*/
@RequestMapping(value="deleteById")
public String deleteById(Long id){
userDao.deleteById(id);
return "delete success";
}
//还有批量操作方法。。。
这里直接使用dao操作了,也可以通过service操作。