Wrapper的使用方法记录

14 篇文章 1 订阅

条件构造器AbstractWrapper是QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为

List<User> users = userDao.selectList(new QueryWrapper<User>().eq("real_name","宝妮儿"));
        
log.info("----------user:{}", users);

AbstractWrapper下的方法及使用

AbstractWrapper 下的方法及使用

方法名说明使用
allEq(Map<R, V> params)全部 =(或个别 isNull)allEq(params,true)
eq=eq(“real_name”,“王昭君”)
ne<>ne(“nick_name”,“空想 4”)
gt>gt(“age”,21)
ge>=ge(“age”,22)
lt<lt(“age”,22)
le<=le(“age”,21")
betweencloum between ? and ?between(“age”,0,21)
notBetweencloum between ? and ?notBetween(“age”,0,21)
likecloum like ‘% 王 %’like(“real_name”,“王”)
notLikenot like ‘% 王 %’notLike(“real_name”,“王”)
likeLeftlike ‘% 王’likeLeft(“real_name”,“昭”)
likeRightlike ‘王 %’likeRight(“real_name”,“昭”)
isNullis nullisNull(“gender”)
isNotNullis not nullisNotNull(“gender”)
inin (1,2,3)in(“nick_name”,lists)
notInage not in (1,2,3)notIn(“nick_name”,lists)
inSqlage in (1,2,3,4,5,6)inSql(“nick_name”,"‘空想 4’,‘空想 5’,‘空想 6’")
notInSqlage not in (1,2,3,4,5,6)notInSql(“nick_name”,"‘空想 4’,‘空想 5’,‘空想 6’")
groupBygroup by id,namegroupBy(“nick_name”,“age”)
orderByAscorder by id ASC,name ASCorderByAsc(“nick_name”,“age”)
orderByDescorder by id DESC,name DESCorderByDesc(“age”)
orderByorder by id ASC,name ASCorderBy(true,true,“age”)
havinghaving sum(age) > 10having(“sum(age) > 10”)
orid = 1 or name = ‘老王’eq(“nick_name”,“空想 4”).or(i->i.eq(“age”,21) eq(“nick_name”,“空想 4”).or().eq(“nick_name”,“空想 5”)
andand (name = ‘李白’ and status <> ‘活着’)and(i->i.eq(“age”,21))
nested(name = ‘李白’ and status <> ‘活着’)nested(i->i.eq(“age”,21).eq(“nick_name”,“空想 4”))
applyid = 1apply(“nick_name = ‘空想 4’”)
last最后添加多个以最后的为准,有 sql 注入风险last(“limit 1”)
exists拼接 EXISTS (sql 语句)exists(“select id from table where age = 1”)
notExists拼接 NOT EXISTS (sql 语句)notExists(“select id from table where age = 1”)

QueryWrapper

继承自 AbstractWrapper , 自身的内部属性 entity 也用于生成 where 条件
及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取

方法名说明使用
selectselect(i -> i.getProperty().startsWith(“test”))select(“id”, “name”, “age”)

UpdateWrapper

继承自 AbstractWrapper , 自身的内部属性 entity 也用于生成 where 条件
及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取!

方法名说明使用
setset(“name”, “老李头”)set(“name”, “”)
setSqlsetSql(“name = ‘老李头’”)setSql(String sql)

自定义SQL使用Wrapper


方案一 注解方式 Mapper.java

@Select("select * from mysql_data ${ew.customSqlSegment}")
List<MysqlData> getAll(@Param(Constants.WRAPPER) Wrapper wrapper);

方案二 XML形式 Mapper.xml

<select id="getAll" resultType="MysqlData">
    SELECT * FROM mysql_data ${ew.customSqlSegment}
</select>

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回答: wrapper是一个条件构造抽象类,它有多个子类,包括AbstractWrapper、QueryWrapper、UpdateWrapper、AbstractLambdaWrapper、LambdaQueryWrapper和LambdaUpdateWrapper。\[3\]其中,AbstractWrapper用于查询条件封装,生成SQL的where条件;QueryWrapper是Entity对象封装操作类,可以通过new QueryWrapper().lambda()方法获取LambdaQueryWrapper;UpdateWrapper是Update条件封装,用于Entity对象更新操作;AbstractLambdaWrapper是用于Lambda语法的Wrapper统一处理解析lambda获取column;LambdaQueryWrapper是用于Lambda语法的查询Wrapper;LambdaUpdateWrapper是用于Lambda语法的更新封装Wrapper。\[1\]\[2\]所以,wrapper方法包括AbstractWrapper、QueryWrapper、UpdateWrapper、AbstractLambdaWrapper、LambdaQueryWrapper和LambdaUpdateWrapper方法。 #### 引用[.reference_title] - *1* [Wrapper使用方法记录](https://blog.csdn.net/qq_39706515/article/details/118492589)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [MybatisPlus学习(四)条件构造器Wrapper方法详解](https://blog.csdn.net/llllllkkkkkooooo/article/details/108216957)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [MybatisPlus条件构造器wrapper方法使用](https://blog.csdn.net/private_name/article/details/121654472)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wcybaonier

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值