Mybatis-plus核心功能-自定义SQL
-
MyBatis-Plus提供了强大的条件构造器。通过条件构造器可以写一些复杂的SQL语句,从而提高我们的开发效率。通过 EntityWrapper(简称 EW,MP 封装的一个查询条件构造器)或者 Condition(与 EW 类似) 来让用户自由的构建查询条件,简单便捷,没有额外的负担, 能够有效提高开发效率,它主要用于处理 sql 拼接,排序,实体参数查询等。
-
举例
@Test void testWrapper1() { QueryWrapper<Person> wrapper=new QueryWrapper<>(); HashMap<String,Object> map=new HashMap<>(); map.put("name","zhangsan"); map.put("age",20); wrapper.allEq(map); List<Person> personList = personMapper.selectList(wrapper); personList.forEach(System.out::println); } @Test void testWrapper4() { QueryWrapper<Person> wrapper=new QueryWrapper<>(); wrapper.gt("age",18); //大于等于 List<Person> personList = personMapper.selectList(wrapper); personList.forEach(System.out::println); } @Test void testWrapper9() { QueryWrapper<Person> wrapper=new QueryWrapper<>(); //模糊查询 wrapper.like("name","o"); List<Person> personList = personMapper.selectList(wrapper); personList.forEach(System.out::println); } //根据年龄进行分组查询 @Test void testWrapper19() { QueryWrapper<Person> wrapper=new QueryWrapper<>(); wrapper.groupBy("age"); List<Person> personList = personMapper.selectList(wrapper); personList.forEach(System.out::println); }
-
自定义SQL:Mybatis-Plus(以下简称MBP)的初衷是为了简化开发,而不建议开发者自己写SQL语句的;但是有时客户需求比较复杂,仅使用MBP提供的Service,Mapper与Wrapper进行组合,难以实现可以需求; 这时我们就要用到自定义的SQL了。
- 注解SQL
public interface CarMapper extends BaseMapper<Car> { @Select("select * from car where car_seq = #{carSeq}") Car queryCar(String carSeq); }
- Wrapper传参+注解SQL
//创建Wrapper对象 QueryWrapper<Entity> wrapper = new QueryWrapper<>(); //设置查询条件 wrapper.eq("column1", value1) .ne("column2", value2) .like("column3", value3); //示例 wrapper.eq("car_state", "1") .like("car_id", "渝A"); //mapper接口 @Select("select * from car ${ew.customSqlSegment}") Page<Car> selectByPrimaryKey(Page<Car> page, @Param(Constants.WRAPPER) QueryWrapper<Car> queryWrapper); //完整代码 //分页查询方式1 QueryWrapper<Car> wrapper = new QueryWrapper<>(); Page<Car> resultPage = new Page<>(1, 10); wrapper.eq("car_state", "1") .like("car_id", "渝A") .orderByAsc("car_id");//排序 carMapper.selectByPrimaryKey(resultPage,wrapper); //分页查询方式2 IPage<Car> page = new Page<>(1, 10); // 分页查询 LambdaQueryWrapper<Car> qw = new LambdaQueryWrapper<Car>() .like(Car::getCarId, "渝A") // 车牌号 = .eq(Car::getCarState, 1); // 状态 //selectPage是BaseMapper自带方法 IPage<Car> userPage = carMapper.selectPage(page, qw)
- Wrapper传参+xml文件SQL
//mapper类 Car selectBySeq (@Param(Constants.WRAPPER) QueryWrapper<Car> queryWrapper); //xml配置文件 <select id="selectBySeq " resultMap="BaseResultMap"> select * from `car` ${ew.customSqlSegment} </select> //通过Wapper传递查询参数 @RequestMapping("/ok") public void testCustomSQL2() { LambdaQueryWrapper<Car> query = new LambdaQueryWrapper<>(); query.eq(Car::getCarId, "11"); Car car= carMapper.queryCarSeq(query); System.out.println(car.toString()); } //或者 Wrapper wrapper = new QueryWrapper<Car>().eq("car_state", 1).like("cai_id", "渝"); List<Car> userList = carMapper.queryCarSeq(wrapper);
标签:
mybatis-plus
, spring cloud
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 我与微信审核的“相爱相杀”看个人小程序副业
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~