近几个项目一直使用的mybatis来对数据库做查询,期间用到了很多高效简洁的查询方法,特此记录和分享。
example 用于添加条件,相当于where后面的部分,理论上单表的任何复杂条件查询都可以使用example来完成。
赵丽颖男友1.基本字段查询
// 1.使用criteria example example = new example(ur.class); criteria criteria = example.createcriteria(); criteria.andequalto("name", name); criteria.andnotequalto("id", id); criteria.andequalto("urid", uid); list<ur> list = urmapper.lectbyexample(example); // 不使用criteria,实则example.and()本质底层还是返回的criteria,倒是可以简便写法。 example example = new example(ur.class); example.and() .andequalto("name", name) .andequalto("id", id) .andequalto("urid", uid); list<ur> list = urmapper.lectbyexample(example); 等效于:lect * from ur where name = #{name} and id = #{id} and uid = #{uid}
2. and or 查询
example example = new example(ur.getclass()); // where 条件 criteria criteria = example.createcriteria(); criteria criteria1 = example.createcriteria(); criteria.andin("id", ids); criteria1.orlike("des", "%" + des + "%"); criteria1.orlike("name", "%" + name + "%"); example.and(criteria1); example.and().andequalto("status", staus) 等效于:where id in ( #{ids} ) and ( name like concat(‘%', #{name} ,'%') or des like concat(‘%', #{des} ,'%') ) and status = #{status}
注意:如果不加 example.and(criteria1);,则默认example只添加生成的第一个criteria,criteria1 将不会加到此条件中
3. 数组参数的条件查询
public example test(list<string> names, string x) { example example = new example(ur.getclass()); example.and().andequalto("x", x) example.criteria criteria = example.createcriteria(); for (string str : names) { criteria.orlike("name", str); } example.and(criteria); list<ur> list = urmapper.lectbyexample(example); 等效于:where x = #{x} and ( name li马鞍山有什么大学ke concat(‘%', #{name1} ,'%') or name like concat(‘%', #{name2} ,'%') )}
我们在使用mybatis example做业务 增/删/改/查时,会遇到一些场景。做一下记录。
使用mybatis example方式做查询时候,业务需要按照条件排序,比如:创建时间倒序
example.torderbyclau("create_time desc");
2.1 示例:
@override public upgradenotifyinfodto querylatestnotify(integer apptype) { upgradenotifyinfodto notifydto=new upgradenotifyinfodto(); sportappupgradenotifyexample example = new sportappupgradenotifyexample(); example.torderbyclau("`create_time` desc"); sportappupgradenotifyexample.criteria criteria = example.createcriteria(); criteria.andapptypeequalto(apptype); // 0- 禁用 1-启用 criteria.andstatuqualto(1); list<sportappupgradenotify> list = upgradenotifymapper.lectbyexample(example); if (!collectionutils.impty(list)){ beanutils.copyproperties(list.get(0),notifydto); 适合摘抄的现代诗 } return notifydto; }
注: 多条件排序写法如下:
rervationproductorderdetailexample example = new rervationproductorderdetailexample(); example.torderbyclau("`rervate_time` desc,`rervate_start_time` desc, `create_time` desc"); rervationproductorderdetailexample.criteria criteria = example.createcriteria();
3.1 借助pagehelper
我们通过pagehelper做分页查询,那么limit同样可以使用pagehelper。如下,查询符合条件中的前50条。这里不会返回数据总数 count
pagehelper.startpage(1, 50); public list<shopcityinforespdto> queryshoplist(string shopcityname,string shopcityid) { list<shopcityinforespdto> shopcitylist = new arraylist<>(); shopinfoexample example = new shopinfoexample(); shopinfoexample.criteria criteria = example.createcriteria(); criteria.andstatuqualto("0"); if(!stringutils.impty(shopcityid)) { criteria.andshopidequalto(shopcityid); } if(!stringutils.impty(shopcityname)) { criteria.andshopnamelike("%" + shopcityname + "%"); } // 这里限制查询50条数据,但不能返回总数 pagehelper.startpage(1, 50); list<shopinfo> shopinfolist = shopinfomapper.lectbyexample(example); if(collectionutils.impty(shopinfolist)){ return shopcitylist; } for (shopinfo shopinfo : shopinfolist){ shopcityinforespdto respdto = new shopcityinforespdto(); respdto.tcompanyid(shopinfo.getcompanyid()); respdto.tshopcityid(shopinfo.getshopid()); respdto.tshopcityname(shopinfo.getshopname()); respdto.tshopcitycode(shopinfo.getshopcode()); respdto.tshoptype(1); shopcitylist.add(respdto); } return shopcitylist; }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 02:54:42,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/210178c5c2afae391f219376a13cb616.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:Mybatis Example的高级用法详解.doc
本文 PDF 下载地址:Mybatis Example的高级用法详解.pdf
留言与评论(共有 0 条评论) |