Preface
Lambda expressions are used. The entity field name operation can be used through method reference to avoid miswrite names when writing database table field names directly;
1. LambdaQueryWrapper<>
https:///program/
2. QueryWrapper<entity>().lambda()
/** * The name is Wang's surname and (age less than 40 and the email address is not empty) * name like 'king%' and (age <40 or email in not null) * Generated sql statement SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ? */ @Test public void selectLambda2() { LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery(); (User::getName, "king").and(qw -> (User::getAge, 40).or().isNotNull(User::getEmail)); List<User> users = (lambda3); (::println); }
3. Wrappers.<entity>lambdaQuery()
/** * lambda conditional constructor * Generated sql statement SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ? */ @Test public void selectLambda() { //Three ways to create a lambda conditional constructor// LambdaQueryWrapper<User> lambda2 = new LambdaQueryWrapper<>(); // LambdaQueryWrapper<User> lambda = new QueryWrapper<User>().lambda(); LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery(); (User::getName, "rain").lt(User::getAge, 40); List<User> users = (lambda3); (::println); }
/** * The name is Wang's surname and (age less than 40 and the email address is not empty) * name like 'king%' and (age <40 or email in not null) * Generated sql statement SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age < ? */ @Test public void selectLambda2() { LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery(); (User::getName, "king").and(qw -> (User::getAge, 40).or().isNotNull(User::getEmail)); List<User> users = (lambda3); (::println); }
/** * Custom SQL usage * Dao layer code: * * @Select("select * from ${}") * List<User> selectAll(@Param()Wrapper<User> wrapper); */ @Test public void selectLambda4my() { LambdaQueryWrapper<User> lambda3 = Wrappers.<User>lambdaQuery(); (User::getName, "king").and(qw -> (User::getAge, 40).or().isNotNull(User::getEmail)); List<User> users = (lambda3); (::println); }
Custom SQL in XML is just a single presentation here.
mybatis-plus: mapper-locations: - com/mp/mapper/*
UserMapper interface Add method
List<User> selectAll(@Param() Wrapper<User> wrapper);IPage<User> selectUserPage(Page<User> page,@Param()Wrapper<User> wrapper);
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-////DTD Mapper 3.0//EN" "/dtd/"> <mapper namespace=""> <select resultType=""> select * from user ${} </select> <select resultType=""> select * from user ${} </select> </mapper>
4. LambdaQueryChainWrapper<entity>(xxxxMapper)
/** * The fourth way to create lambda conditional constructor MP 3.0.7 new method * Generated sql statement SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age >= ? * This example shows that the code is more concise * Generated sql statement SELECT id,name,age,email,manager_id,create_time FROM user WHERE name LIKE ? AND age >= ? */ @Test public void selectLambda3() { List<User> users = new LambdaQueryChainWrapper<User>(userMapper) .like(User::getName, "rain").ge(User::getAge, 20).list(); (::println); }
5. The application of lambda in pagination
MP pagination operation
The baseMapper interface provides two paging methods to implement physical paging (Note: the package that leads MP when leading packages) The first returns the entity object. Allows null. The second person returns the map object. It is mostly used when putting back a field, so as to avoid the null value of the specified field.
IPage<T> selectPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper); IPage<Map<String, Object>> selectMapsPage(IPage<T> page, @Param("ew") Wrapper<T> queryWrapper);
Pagination using MP requires configuration classes
package ; import ; import ; import ; @Configuration public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
/** * Pagination MP Pagination Plugin */ @Test public void selectPage() { QueryWrapper<User> queryWrapper = new QueryWrapper<User>(); ("age", 26); //The following parameter false indicates that the total number of records is not queried Page<User> userPage = new Page<>(1, 2, false); /* IPage<User> iPage = (userPage, queryWrapper); ("Total Pages"+()); ("Total record count"+()); List<User> records = (); (::println); */ IPage<Map<String, Object>> iPage = (userPage, queryWrapper); ("Total Pages" + ()); ("Total record count" + ()); List<Map<String, Object>> records = (); (::println); }
Custom paging
UserMapper interface
IPage<User> selectUserPage(Page<User> page,@Param()Wrapper<User> wrapper);
Add to
<select resultType=""> select * from user ${} </select>
/** * Custom paging method */ @Test public void selectMyPage() { QueryWrapper<User> queryWrapper = new QueryWrapper<User>(); ("age", 26); //The following parameter false indicates that the total number of records is not queried Page<User> page = new Page<>(1, 2); IPage<User> iPage = (page, queryWrapper); ("Total Pages" + ()); ("Total record count" + ()); List<User> records = (); (::println); }
This is the end of this article about implementing four lambda expressions in mybatis-plus. For more related content of mybatisplus lambda expressions, please search for my previous articles or continue browsing the related articles below. I hope everyone will support me in the future!