iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Mybatis Example怎么用
  • 922
分享到

Mybatis Example怎么用

2023-06-22 02:06:12 922人浏览 安东尼
摘要

小编给大家分享一下mybatis Example怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Mybatis Example的高级用法近几个项目一

小编给大家分享一下mybatis Example怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

Mybatis Example的高级用法

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

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

方法名功能
int countByExample(UserExample example)按条件计数
int deleteByPrimaryKey(Integer id)按主键删除
int deleteByExample(UserExample example)按条件查询
String/Integer insert(User record)插入数据(返回值为ID)
User selectByPrimaryKey(Integer id)按主键查询
ListselectByExample(UserExample example)按条件查询
ListselectByExampleWithBLOGs(UserExample example)按条件查询(包括BLOB字段)。只有当数据表中的字段类型有为二进制的才会产生。
int updateByPrimaryKey(User record)按主键更新
int updateByPrimaryKeySelective(User record)按主键更新值不为null的字段
int updateByExample(User record, UserExample example)按条件更新
int updateByExampleSelective(User record, UserExample example)按条件更新值不为null的字段

二. example实例方法

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

方法说明
example.setOrderByClause(“字段名 ASC”);添加升序排列条件,DESC为降序
example.setDistinct(false)去除重复,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<?>条件
criteria.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(User.class);            Criteria criteria = example.createCriteria();            criteria.andEqualTo("name", name);            criteria.andNotEqualTo("id", id);            criteria.andEqualTo("userId", uid);            List<User> list = userMapper.selectByExample(example);                        // 不使用criteria,实则example.and()本质底层还是返回的criteria,倒是可以简便写法。            Example example = new Example(User.class);   example.and()                .andEqualTo("name", name)                .andEqualTo("id", id)                .andEqualTo("userId", uid);    List<User> list = userMapper.selectByExample(example);  等效于:select * from user where name = #{name} and id = #{id} and uid = #{uid}

2. and or 查询

  Example example = new Example(User.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 sex) {  Example example = new Example(User.getClass());  example.and().andEqualTo("sex", sex)        Example.Criteria criteria = example.createCriteria();        for (String str : names) {             criteria.orLike("name", str);         }         example.and(criteria);         List<User> list = userMapper.selectByExample(example);             等效于:where sex = #{sex} and ( name like concat(‘%', #{name1} ,'%') or name like concat(‘%', #{name2} ,'%') )}

说说Mybatis Example常见用法

一. 说明

我们在使用mybatis example做业务 增/删/改/查时,会遇到一些场景。做一下记录。

二. 排序查询

使用mybatis example方式做查询时候,业务需要按照条件排序,比如:创建时间倒序

example.setOrderByClause("create_time desc");

2.1 示例:

 @Override    public UpgradeNotifyInfoDTO queryLatestNotify(Integer appType) {        UpgradeNotifyInfoDTO notifyDTO=new UpgradeNotifyInfoDTO();        SportAppUpgradeNotifyExample example = new SportAppUpgradeNotifyExample();        example.setOrderByClause("`create_time` desc");        SportAppUpgradeNotifyExample.Criteria criteria =  example.createCriteria();        criteria.andAppTypeEqualTo(appType);        // 0- 禁用 1-启用        criteria.andStatusEqualTo(1);        List<SportAppUpgradeNotify> list = upgradeNotifyMapper.selectByExample(example);        if (!CollectionUtils.isEmpty(list)){            BeanUtils.copyProperties(list.get(0),notifyDTO);        }        return notifyDTO;    }

注: 多条件排序写法如下:

   ReservationProductOrderDetailExample example = new ReservationProductOrderDetailExample();        example.setOrderByClause("`reservate_time` desc,`reservate_start_time` desc, `create_time` desc");        ReservationProductOrderDetailExample.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.andStatusEqualTo("0");        if(!StringUtils.isEmpty(shopCityId)) {            criteria.andShopIdEqualTo(shopCityId);        }        if(!StringUtils.isEmpty(shopCityName)) {            criteria.andShopNameLike("%" + shopCityName + "%");        }        // 这里限制查询50条数据,但不能返回总数        PageHelper.startPage(1, 50);        List<ShopInfo>  shopInfoList = shopInfoMapper.selectByExample(example);        if(CollectionUtils.isEmpty(shopInfoList)){           return shopCityList;        }        for (ShopInfo shopInfo : shopInfoList){            ShopCityInfoRespDTO  respDTO = new ShopCityInfoRespDTO();            respDTO.setCompanyId(shopInfo.getCompanyId());            respDTO.setShopCityId(shopInfo.getShopId());            respDTO.setShopCityName(shopInfo.getShopName());            respDTO.setShopCityCode(shopInfo.getShopCode());            respDTO.setShopType(1);            shopCityList.add(respDTO);        }        return shopCityList;    }

以上是“Mybatis Example怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Mybatis Example怎么用

本文链接: https://www.lsjlt.com/news/301847.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis Example怎么用
    小编给大家分享一下Mybatis Example怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Mybatis Example的高级用法近几个项目一...
    99+
    2023-06-22
  • Mybatis Example的高级用法详解
    目录Mybatis Example的高级用法一. mapper接口中的函数及方法二. example实例方法三. 使用案例说说Mybatis Example常见用法一. 说明二. 排...
    99+
    2024-04-02
  • MyBatis通用Mapper中的通用example(排序)详解
    目录MyBatis通用Mapper的通用example(排序)接口实现类MyBatis通用Mapper技巧一、排序二、处理oracle的null异常三、mapper的selec...
    99+
    2024-04-02
  • mybatis example怎么自动生成排序语句
    本篇内容介绍了“mybatis example怎么自动生成排序语句”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!mybatis e...
    99+
    2023-06-22
  • MyBatis Mapper中的通用example举例分析
    本篇内容介绍了“MyBatis Mapper中的通用example举例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!MyBatis通用M...
    99+
    2023-06-22
  • mybatis Example Criteria like模糊查询问题怎么解决
    这篇“mybatis Example Criteria like模糊查询问题怎么解决”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章...
    99+
    2023-07-05
  • MyBatis反向生成Example类的使用方式
    目录MyBatis反向生成Example类使用一、逆向工程二、Example类的生成三、Example类的使用四、使用方法MyBatis逆向工程生成Example类的方法总结一、ma...
    99+
    2024-04-02
  • 使用mybatis如何设置禁止生成Example类
    今天就跟大家聊聊有关使用mybatis如何设置禁止生成Example类,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。只需要在配置要生成的table表中添加几个配置属性就行了。&nbs...
    99+
    2023-05-31
    mybatis example ample
  • mybatis example如何自动生成代码 排序语句
    目录mybatis example自动生成代码 排序语句mybatis自动生成的example用法举个使用例子查询表全部数据方法说明mybatis example自动生成代码 排序语...
    99+
    2024-04-02
  • name@example指的是什么意思
    这篇文章给大家分享的是有关name@example指的是什么意思的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。name@example是Apple ID的意思。name就是自定义的名字,@example是示范的意...
    99+
    2023-06-20
  • 怎么进行Spark example的运行过程分析
    这篇文章将为大家详细讲解有关怎么进行Spark example的运行过程分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。pom.xml<project xmlns="htt...
    99+
    2023-06-03
  • MyBatis中@MapKey怎么用
    这篇文章将为大家详细讲解有关MyBatis中@MapKey怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。MyBatis @MapKey的妙用背景在实际开发中,有一些场景需要我们返回主键或者唯一键为K...
    99+
    2023-06-29
  • Mybatis中resultMap怎么用
    小编给大家分享一下Mybatis中resultMap怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!resultMap是Mybatis最强大的元素,它可以将查...
    99+
    2023-06-20
  • Mybatis Plus中@TableField怎么用
    这篇文章给大家分享的是有关Mybatis Plus中@TableField怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。@TableField的使用1 研究背景和过程妹纸开发突然发现@TableF...
    99+
    2023-06-26
  • mybatis的mapper怎么使用
    MyBatis的mapper是用于映射数据库操作的接口,通过这个接口可以方便地调用SQL语句进行数据库的增删改查操作。使用步骤如下:...
    99+
    2023-09-29
    mybatis
  • mybatis-plus中resultMap怎么用
    小编给大家分享一下mybatis-plus中resultMap怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!不一致,那么用来接收查询出来的result对应的...
    99+
    2023-06-25
  • mybatis之BaseTypeHandler怎么使用
    本篇内容主要讲解“mybatis之BaseTypeHandler怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mybatis之BaseTypeHandler怎么使用”吧!BaseType...
    99+
    2023-07-05
  • SpringBoot怎么整合mybatis+mybatis-plus
    本文小编为大家详细介绍“SpringBoot怎么整合mybatis+mybatis-plus”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot怎么整合mybatis+mybatis-plus”文章能帮助大家解决疑惑,下面跟...
    99+
    2023-07-02
  • 怎么在mybatis中使用resultmap
    本篇文章给大家分享的是有关怎么在mybatis中使用resultmap,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。SQL 映射XML 文件是所有sql语句放置的地方。需要定义...
    99+
    2023-05-31
    mybatis resultmap
  • 怎么在Springboot中使用mybatis
    今天就跟大家聊聊有关怎么在Springboot中使用mybatis,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。前期工作1.导入mybatis整合依赖<!-- &nb...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作