mybatis-plus(入门)
1. MP–mybatis-plus
MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
愿景
我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。
注意: mybatis-plus 它使用于单表的所有操作。 不能用于联表操作【mybatis联表操作】
2.创建spring-boot项目
以user表为准
1.引入pom依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
2.配置数据源
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.password=(数库的密码)
spring.datasource.username=root
spring.datasource.url=jdbc:mysql://localhost:3306/[自己的数据库]?serverTimezone=Asia/Shanghai
#日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
3.创建实体类
4.创建dao层接口
public interface UserDao extends BaseMapper<User> {
}
:实体类
5.在主启动类扫描dao接口
6.测试
@Autowired
private UserDao userDao;
// 根据用户ID查询信息
@Test
void TestSelectById(){
User user = userDao.selectById(1);
System.out.println(user);
}
测试结果
CRUD操作
1.条件查询
@Test
public void testSelect(){
// 根据条件查询多条记录--如果传递的为null 则查询所有
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNotNull("name");
List<User> users = userDao.selectList(queryWrapper);
for (User user : users ){
System.out.println(user);
}
}
结果:
1.1 但条件查询
@Test
public void testSe(){
// 单条件查询
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name","Jone");
User user = userDao.selectOne(queryWrapper);
System.out.println(user);
}
结果:
1.2:分页查询
配置分页查询插件
@Configuration
public class MybatisPlusConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
@Test
public void testSe(){
/**
* P page,分页对象 current:当前页面 size:每页的条数
* @Param("ew") wrapper<T> queryWrapper:条件对象
*/
Page<User> page = new Page<>(2, 3);
Page<User> userPage = userDao.selectPage(page, null);
System.out.println("当前页的记录:"+userPage.getRecords());
System.out.println("总条数:"+userPage.getTotal());
System.out.println("总页数:"+userPage.getPages());
}
结果:
2.添加
@Test
public void testInsert(){
User user = new User("小王", 18, "123456@qq.com");
userDao.insert(user);
}
结果:
3:修改
3.1 :分局id修改
@Test
public void update(){
// 根据id修改
User user = new User(1, "小刘", 22, "123456@qq.com");
userDao.updateById(user);
}
结果:
3.2:根据条件修改
@Test
public void update(){
// 根据条件修改
User user = new User(1, "小花", 22, "123456@qq.com");
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name","小李");
userDao.update(user,updateWrapper);
}
结果:
4: 删除
4.1:根据ID删除
@Test
public void deleteUser(){
int i = userDao.deleteById(1);
}
结果:
4.2 : 根据主键批量删除
@Test
public void deleteUser(){
ArrayList<Object> ids = new ArrayList<>();
ids.add(2);
ids.add(3);
int i = userDao.deleteBatchIds(ids);
System.out.println(i);
}
结果:
4.3 : 根据条件删除
@Test
public void deleteUser(){
// MP 把条件封装成一个wrapper条件抽象类.---UpdateWrapper QueryWrapper LambdaUpdateWrapper
UpdateWrapper<User> wrapper = new UpdateWrapper<>();
wrapper.like("name","小王");
wrapper.or();
wrapper.ge("age",18);
userDao.delete(wrapper);
}
结果: