条件构造器官方文档条件构造器 | MyBatis-Plus
由于MybatisPlus是对Dao层Mybatis的增强(简称MP)对Dao层提供好了增删改查等方法。
我们只需要继承 BaseMapper<实体类> 接口,使用@Mapper注解,便能得到里面的所有方法。
MP提供的部分方法测试:
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
@Autowired
private UserDao userDao;
@Test
//添加操作
public void testSave(){
User user = new User();
user.setName("程序员");
user.setPassword("123456");
user.setAge(12);
user.setTel("1566666666");
userDao.insert(user);
}
@Test
//删除
public void testDelete(){
userDao.deleteById(1576056004935659522L);
}
@Test
//修改
public void testUpdate(){
User user = new User();
user.setId(1L);
user.setName("TOM");
userDao.updateById(user);
}
@Test
//查一个
public void testGetById(){
User user = userDao.selectById(2L);
System.out.println(user);
}
@Test
//查全部
void testGetAll() {
List<User> userList = userDao.selectList(null);
for (User user : userList) {
System.out.println(user);
}
}
@Test
//分页查询
void testGetPage() {
IPage<User> userIPage = new Page<>(1,2);
userDao.selectPage(userIPage,null);
System.out.println("当前页码值"+ userIPage.getCurrent());
System.out.println("每页显示数" + userIPage.getSize());
System.out.println("一共多少页" + userIPage.getPages());
System.out.println("一共多少条" + userIPage.getTotal());
System.out.println("数据" + userIPage.getRecords());
}
对于用户的特殊条件查询,MP没有方法(但是程序员是万能的bushi
条件查询
@SpringBootTest
class Mybatisplus01QuickstartApplicationTests {
@Autowired
private UserDao userDao;
@Test
//方式一:按条件查询
void testGetAll1() {
QueryWrapper wrapper = new QueryWrapper();
wrapper.lt("age",18);
List<User> userList = userDao.selectList(wrapper);
for (User user : userList) {
System.out.println(user);
}
}
@Test
//方式二:Lambda格式按条件查询
void testGetAll2() {
QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.lambda().lt(User::getAge,18);
List<User> userList = userDao.selectList(wrapper);
for (User user : userList) {
System.out.println(user);
}
}
@Test
//方式三:Lambda格式按条件查询
void testGetAll3() {
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
lqw.lt(User::getAge, 18);
List<User> userList = userDao.selectList(lqw);
for (User user : userList) {
System.out.println(user);
}
}
//多条件查询
@Test
//1. 10~30岁之间
void testGetAll4() {
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
lqw.lt(User::getAge, 30); //lt()小于
lqw.gt(User::getAge, 10); //gt()大于
//链式编程
//lqw.lt(User::getAge, 30).gt(User::getAge, 10);
List<User> userList = userDao.selectList(lqw);
for (User user : userList) {
System.out.println(user);
}
}
@Test
//2. 小于10或者大于30 或 or()
void testGetAll5() {
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
lqw.lt(User::getAge, 10);
lqw.or();
lqw.gt(User::getAge, 30);
//链式编程
//lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);
List<User> userList = userDao.selectList(lqw);
for (User user : userList) {
System.out.println(user);
}
}
@Test
//条件查询空值判定
void testGetAll6() {
//模拟数据
UserQuery userQuery = new UserQuery();
userQuery.setAge(10);
userQuery.setAge2(30);
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
//大于10
lqw.gt( null != userQuery.getAge(),User::getAge,userQuery.getAge());
//小于30
lqw.lt( null != userQuery.getAge2(),User::getAge,userQuery.getAge2());
List<User> userList = userDao.selectList(lqw);
for (User user : userList) {
System.out.println(user);
}
}
}
查询投影
//查询投影
@Test
// 1.按字段查询
void testGetAll7(){
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
lqw.select(User::getName,User::getAge,User::getPassword);
List<User> userList = userDao.selectList(lqw);
for (User user : userList) {
System.out.println(user);
}
}
@Test
// 2.数据总量查询
void testGetAll8(){
QueryWrapper<User> QW = new QueryWrapper<User>();
QW.select("count(*) as count");
List<Map<String, Object>> userList = userDao.selectMaps(QW);
for (Map<String, Object> stringObjectMap : userList) {
System.out.println(stringObjectMap);
}
}
@Test
// 3.分组统计
void testGetAll9(){
QueryWrapper<User> QW = new QueryWrapper<User>();
QW.select("count(*) as count", "tel");
QW.groupBy("tel");
List<Map<String, Object>> userList = userDao.selectMaps(QW);
for (Map<String, Object> stringObjectMap : userList) {
System.out.println(stringObjectMap);
}
}
查询条件
//查询条件
@Test
//等值查询 eq() 等同于 =
void testGetAll10(){
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
// name = Jerry 并且 Password = jerry
lqw.eq(User::getName,"Jerry").eq(User::getPassword,"jerry");
User user = userDao.selectOne(lqw);
System.out.println(user);
}
@Test
//范围查询 between()
void testGetAll11(){
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
// 10<= 年龄 <=30
lqw.between(User::getAge,10,30);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
}
@Test
//模糊匹配 like()
void testGetAll12(){
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
// name带 J
lqw.like(User::getName,"J");
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
}