MyBatis-plus 查询 模糊查询的使用

在使用MyBatis-plus的时候,一些基础的增删改查可以不用再自己写sql了:

public interface UserDao extends BaseMapper<FykUser>{

}

就这样,就可以实现user表的增删改查了。

模糊查询

使用userDao.selectList(queryWrapper)方法,就可以查询出一个用户列表。

如果需要模糊查询,代码如下:

//条件封装
QueryWrapper<FykUser> queryWrapper = new QueryWrapper<>();
queryWrapper.like(StringUtils.isNotBlank(user.getName()), "NAME", user.getName());
queryWrapper.like(user.getEnable() != null, "ENABLE", user.getEnable());
List<FykUser> userList = userDao.selectList(queryWrapper);

也就是说,调用queryWrapper的like方法就可以。

这里,like方法有三个参数:

  • 第一个参数:该参数是一个布尔类型,只有该参数是true时,才将like条件拼接到sql中;本例中,如果name字段不为空,则拼接name字段的like查询条件;
  • 第二个参数:该参数是数据库中的字段名;
  • 第三个参数:该参数值字段值;

需要说明的是,这里的like查询是使用的默认方式,也就是说在查询条件的左右两边都有%:NAME = ‘%王%";
 如果只需要在左边或者右边拼接%,可以使用likeLeft或者likeRight方法。

其他

在QueryWrapper类中,可以看到,还有很多条件查询的方法,诸如ge、le、lt、between等之类的方法,他们的传参方式都和上面介绍的差不多。

示例

模糊查询方法一

controller

//模糊查询方法一
  @RequestMapping(value = "/testTask", method = RequestMethod.GET)
  public ResponseObj<List<UserInfo>> testTask(@RequestParam("name") String name) {


    List<UserInfo> userInfos = userInfoMapper.selectList(new EntityWrapper<>(userInfo).like("firstname", name)
        .or().like("lastname", name));

    return new ResponseObj<>(userInfos, null);


  }
new EntityWrapper<>(userInfo).like(“firstname”, name).or().like(“lastname”, name)

 userInfo是需要模糊查询的表对应的model,firstname和lastname则是需要模糊查询的字段,or()是指两个条件或者的关系,在sql中执行的语句是:

SELECT * FROM users WHERE (firstname LIKE "%海%" OR lastname LIKE "%海%")

这里selectList方法是mybatis-plus中的

模糊查询方法二

这个是通过传入对象进行模糊查询

 //模糊查询方法二
  @RequestMapping(value = "/testTask1", method = RequestMethod.GET)
  public ResponseObj<List<TimeEntries>> testTask1(@ModelAttribute UserInfo userInfo) {

    List<UserInfo> list = userInfoMapper.list(new EntityWrapper<>(userInfo));

    List<TimeEntries> listAll = new ArrayList<>();
    if (list != null && list.size() > 0) {
      for (UserInfo info : list) {

        List<TimeEntries> list1 = timeEntriesMapper.list(info.getId());
        listAll.addAll(list1);

      }
    }
    System.out.println(listAll.size());

    // 按userId升序、username降序、birthDate升序排序
    String[] sortNameArr = {"spentOn", "fullName", "hoursSum"};
    boolean[] isAscArr = {false, true, true};
    ListUtils.sort(listAll, sortNameArr, isAscArr);
    System.out.println("
--------按按userId升序、username降序、birthDate升序排序(如果userId相同,则按照username降序," +
        "如果username相同,则按照birthDate升序)------------------");

    return new ResponseObj<>(listAll, null);

UserInfoMapper

@Mapper
public interface UserInfoMapper extends BaseMapper<UserInfo> {

  List<UserInfo> list(@Param("ew") Wrapper<UserInfo> wrapper);
}

UserInfoMapper.xml

<select id="list" resultType="com.cicdi.servertemplate.modules.work.model.UserInfo">
  SELECT
    *
  FROM
    users
  WHERE
    1=1
  <if test="ew!=null">
   <if test="ew.entity!=null">
    <if test="ew.entity.name!=null">
     AND CONCAT(lastname, firstname) LIKE CONCAT("%",#{ew.entity.name},"%")
    </if>
   </if>
   <if test="ew.sqlSegment!=null">
    ${ew.sqlSegment}
   </if>
  </if>
 </select>

到此这篇关于MyBatis-plus 模糊查询的使用的文章就介绍到这了,更多相关MyBatis-plus 模糊查询内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!


  • 若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。

使用Mybatis-Plus进行分页模糊查询,可以通过以下步骤实现: 1. 在Mapper接口中定义分页查询方法,使用@Select注解指定SQL语句,使用@Param注解指定参数。 2. 在SQL语句中使用LIKE关键字进行模糊查询使用LIMIT关键字进行分页查询。 3. 在Service层调用Mapper接口中定义的分页查询方法,传入分页参数和模糊查询参数。 4. 在Controller层中接收前端传来的分页参数和模糊查询参数,调用Service层中的方法进行查询。 5. 将查询结果封装成Page对象返回给前端。 示例代码: Mapper接口: @Mapper public interface UserMapper extends BaseMapper<User> { @Select("SELECT * FROM user WHERE name LIKE CONCAT('%',#{name},'%') LIMIT #{offset},#{limit}") List<User> selectUserList(@Param("name") String name, @Param("offset") int offset, @Param("limit") int limit); } Service层: @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public Page<User> getUserList(String name, int pageNum, int pageSize) { Page<User> page = new Page<>(pageNum, pageSize); List<User> userList = userMapper.selectUserList(name, page.getOffset(), page.getLimit()); page.setRecords(userList); return page; } } Controller层: @RestController @RequestMapping("/user") public class UserController { @Autowired private UserService userService; @GetMapping("/list") public Page<User> getUserList(@RequestParam(required = false) String name, @RequestParam(defaultValue = "1") int pageNum, @RequestParam(defaultValue = "10") int pageSize) { return userService.getUserList(name, pageNum, pageSize); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值