Mybatis-plus入门复习整理
概念:
mybatis-plus是mybatis的增强,只做增强,不做改变–只能用作单表操作
spring整合mybatis-plus:
只需要将pom文件中的mybatis依赖换成mybatis-plus的依赖即可
java
<!-- mp 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>2.3</version>
</dependency>
创建mybatisplus-config.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>
在主启动类中添加@Mapperscan注解
@SpringBootApplication
@MapperScan("com.mybatis.mapper")//将指定mapper交给spring管理
public class SpringBootRun {
public static void main(String[] args) {
SpringApplication.run(SpringBootRun.class, args);
}
}
在poj类中添加@TableName注解,用以指定表名
@Data//自动生成get set方法
@TableName("user")//指定表名
public class user {
@TableId(value = "id",type = IdType.AUTO)//指定id为主键且自增
private Integer id;
private String name;
private Integer age;
}
##生成Mapper接口
Mapper接口需要实现MaseMapper, 规定泛型为接收数据的pojo类
public interface UserMapper extends BaseMapper<user> {
}
创建UserService接口
public interface UserService {
List<user> selectAll();
}
创建UserService的实现类
测试基本crud操作
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
user user = new user();
//查询所有数据
@Override
public List<user> selectAll() {
List<user> users = userMapper.selectList(null);
return users;
}
//根据id查询
@Override
public user selectById(){
user user = userMapper.selectById(2);
return user;
}
//添加数据
@Override
public void insert() {
user.setId(null);
user.setName("misi");
user.setAge(24);
userMapper.insert(user);
}
//更新
public List<user> update(){
user.setId(2);
user.setName("yomi");
userMapper.updateById(user);
return selectAll();
}
//根据id删除数据
@Override
public List<user> delete() {
userMapper.deleteById(1);
return selectAll();
}
}
分页查询
1.配置类中配置分页插件`
/**
* 分页插件
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
测试类中测试
@Test
public void selectpage(){
//1.创建page对象
//传入两个参数:当前页 和 每页显示记录数
Page<User> page = new Page<>(1,3);
//调用mp分页查询的方法
//调用mp分页查询过程中,底层会把分页所有数据封装到page对象里
userMapper.selectPage(page, null);
//通过page对象获取分页数据
System.out.println(page.getCurrent());//获取当前页
System.out.println(page.getRecords());//每页显示的list集合
System.out.println(page.getSize());//每页最多显示的记录数
System.out.println(page.getTotal());//总记录数
System.out.println(page.getPages());//总页数
System.out.println(page.hasNext());//是否有下一页
System.out.println(page.hasPrevious());//是否有上一页
}
删除数据
物理删除:真实删除,将对应数据从数据库中删除,之后查询不到此条被删除数据
逻辑删除:假删除,将对应数据中代表是否被删除字段状态修改为“被删除状态”,之后在数据库中仍旧能看到此条数据记录
逻辑删除业务实现
1.在表中添加deleted字段
2.在实体类中添加属性,并在属性上添加@TableLogic注解
@TableLogic
private Integer deleted;
2.配置类中添加逻辑删除的删除的插件
/**
* 逻辑删除插件
*/
@Bean
public ISqlInjector sqlInjector() {
return new LogicSqlInjector();
}
测试前
测试后,数据还在,但是mybatisplus查询不到,deleted改为1,若想查询已被逻辑删除的数据,则可以用原始的sql语句查询
注意:被删除数据的deleted 字段的值必须是 0,才能被选取出来执行逻辑删除的操作