分页
配置类
DbType.MYSQL很重要。指定数据库
注意:limit第一个参数(当前页-1 乘以 每页显示条数) 索引从0开始
package com.neuedu.mybatisplus.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//配置分页插件,指定数据库的类型MYSQL
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
测试类
@Test
void testPage(){
QueryWrapper<Dept> wrapper = new QueryWrapper<>();
wrapper.like("loc","1");
//创建分页对象 指定两个参数 1.第几页 2.每页显示条数
IPage<Dept> page = new Page<>(2,4);
//执行分页查询 第二个参数是 查询条件wrapper
IPage<Dept> result = mapper.selectPage(page,wrapper);
//满足条件的总数据行数
System.out.println("满足条件的总数据行数-->"+result.getTotal());
//每页的行数
System.out.println("每页的行数-->"+result.getSize());
//当前页
System.out.println("当前页-->"+result.getCurrent());
//总页数
System.out.println("总页数-->"+result.getPages());
//分页
List<Dept> records = result.getRecords();
records.forEach(r-> System.out.println(r));
}
查询
yml配置文件
#数据库配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/plus?characterEncoding=utf8&serverTimezone=GMT%2B8
username: root
password: root
#mybatis-plus配置
mybatis-plus:
type-aliases-package: com.neuedu.mybatisplus.po
mapper-locations: classpath:**/*.xml
实体类
package com.neuedu.mybatisplus.po;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("emp") //表名和po类名不一致时,使用TableName注解映射
public class Employee {
@TableId(value = "empno",type = IdType.ASSIGN_ID)
//必须使用TableId注解来指定主键列的映射
//如果属性名和主键列名不一致,配置value属性映射。
//必须设置type属性指定主键类型 自己指定id:IdType.ASSIGN_ID 自动递增:IdType.AUTO
private Integer employeeno;
@TableField(value = "ename")
//如果非主键列,名字和属性名不一致使用TableField注解映射
private String employeename;
@TableField("job")
private String employeejob;
}
@TableId注解必须写
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Dept {
@TableId(type = IdType.AUTO) //主键列注解
private Integer deptno;
private String dname;
private String loc;
}
Mapper层
要继承BaseMapper
@Mapper
public interface EmpMapper extends BaseMapper<Employee> {
}
测试类查询
@Test
void testQueryWrapper(){
QueryWrapper<Dept> wrapper = new QueryWrapper<>();
// wrapper.eq("dname","xxx"); //eq等于
// wrapper.ne("dname","xxx"); //ne不等于 相当于!=
// wrapper.gt("deptno",2); //gt相当于 >
// wrapper.ge("deptno",1); //ge相当于 >=
// wrapper.lt("deptno",20); //lt相当于 <
// wrapper.le("deptno",22); //le相当于 <=
// wrapper.between("loc","a","z"); //相当于between and
// wrapper.like("dname","大连"); //相当于like模糊查询
// wrapper.in("deptno",1,2,3,4,5); //相当于in
// wrapper.isNull("dname"); //相当于isNull
// wrapper.orderByAsc("dname"); //相当于升序排列
// wrapper.orderByDesc("dname"); //相当于降序
Dept dept = new Dept(1,"nu","locccc");
wrapper.eq(dept.getDeptno()!=null,"deptno",dept.getDeptno());
wrapper.like(dept.getDname()!=null,"dname",dept.getDname());
wrapper.ne(dept.getLoc()!=null,"loc",dept.getLoc());
mapper.selectList(wrapper);
}
测试类更新Update
@Test
void testUpdateWrapper(){
UpdateWrapper<Dept> wrapper = new UpdateWrapper<>();
wrapper.set("dname","将军");
wrapper.eq("dname","dd");
//update dept set dname = ? where dname = ?
mapper.update(null,wrapper);
}