首页 > 作文

Mybatis Example的高级用法详解

更新时间:2023-04-04 02:54:44 阅读: 评论:0

目录
mybatis example的高级用法一. mapper接口中的函数及方法二. example实例方法三. 使用案例说说mybatis example常见用法一. 说明二. 排序查询三. 查询limit, 只返回前50条数据苏州园林简介

mybatis example的高级用法

近几个项目一直使用的mybatis来对数据库做查询,期间用到了很多高效简洁的查询方法,特此记录和分享。

一. mapper接口中的函数及方法

方法名功能int countbyexample(urexample example)按条件计数int deletebyprimarykey(integer id)按主键删除int deletebyexample(urexample example)按条件查询string/integer inrt(ur record)插入数据(返回值为id)ur lectbyprimarykey(integer id)按主键查询listlectbyexample(urexample example)按条件查询listlectbyexamplewithblogs(urexample example)按条件查询(包括blob字段)。只有当数据表中的字段类型有为二进制的才会产生。int updatebyprimarykey(ur record)按主键更新int updatebyprimarykeylective(ur record)按主键更新值不为null的字段int updatebyexample(ur record, urexample example)按条件更新int updatebyexamplelective(ur record, urexample example)按条件更新值不为null的字段

二. example实例方法

example 用于添加条件,相当于where后面的部分,理论上单表的任何复杂条件查询都可以使用example来完成。

方法说明example.torderbyclau(“字段名 asc”);添加升序排列条件,desc为降序example.tdistinct(fal)去除重复,boolean型,true为选择不重复的记录。example.and(criteria criteria)为example添加criteria查询条件,关系为与example.or(criteria criteria)为example添加criteria查询条件,关系为或criteria.andxxxisnull添加字段xxx为null的条件criteria.andxxxisnotnull添加字段xxx不为null的条件criteria.andxxxequalto(value)添加xxx字段等于value条件criteria.andxxxnotequalto(value)添加xxx字段不等于value条件criteria.andxxxgreaterthan(value)添加xxx字段大于value条件criteria.andxxxgreaterthanorequalto(value)添加xxx字段大于等于value条件criteria.andxxxlessthan(value)添加xxx字段小于value条件criteria.andxxxlessthanorequalto(value)添加xxx字段小于等于value条件criteria.andxxxin(list<?>)添加xxx字段值在list<?>条件cri小兔子乖乖的故事teria.andxxxnotin(list<?>)添加xxx字段值不在list<?>条件criteria.andxxxlike(“%”+value+”%”)添加xxx字段值为value的模糊查询条件criteria.andxxxnotlike(“%”+value+”%”)添加xxx字段值不为value的模糊查询条件criteria.andxxxbetween(value1,value2)添加xxx字段值在value1和value2之间条件criteria.andxxxnotbetween(value1,value2)添加xxx字段值不在value1和value2之间条件

三. 使用案例

赵丽颖男友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做业务 增/删/改/查时,会遇到一些场景。做一下记录。

二. 排序查询

使用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();

三. 查询limit, 只返回前50条数据

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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图