Example的使用
介绍
MyBatis的逆向工程中会生成实例及实例对应的example,example用于添加条件,相当where后面的部分。
Example中的构造方法
/** * 带exists参数的构造方法,默认notNull为false,允许为空 * * @param entityClass * @param exists - true时,如果字段不存在就抛出异常,false时,如果不存在就不使用该字段的条件 */ public Example(Class<?> entityClass) { this(entityClass, true); } /** * 带exists参数的构造方法,默认notNull为false,允许为空 * * @param entityClass * @param exists - true时,如果字段不存在就抛出异常,false时,如果不存在就不使用该字段的条件 */ public Example(Class<?> entityClass, boolean exists) { this(entityClass, exists, false) } /** * 带exists参数的构造方法 * * @param entityClass * @param exists - true时,如果字段不存在就抛出异常,false时,如果不存在就不使用该字段的条件 * @param notNull - true时,如果值为空,就会抛出异常,false时,如果为空就不使用该字段的条件 */ public Example(Class<?> entityClass, boolean exists, boolean notNull) { this.exists = exists; this.notNull = notNull; this.oredCriteria = new ArrayList(); this.table = EntityHelper.getEntityTable(entityClass); this.propertyMap = this.table.getPropertyMap(); this.ORDERBY = new Example.OrderBy(this, this.propertyMap); }
创建Example
Example example = new Example(XXX.class);
对 example 的实体类的单表进行查询
example.createCriteria().andGreaterThan("id",1).andLessThan("id",100);
List<XXX> list = mapper.selectByExample(example);
or
Criteria criteria = example.createCriteria(); if (in.getId() != null) { criteria.andLessThanOrEqualTo("id", in.getId());//<=id } List<XXX> list = mapper.selectByExample(example); PageInfo<XXX> pageInfo = new PageInfo<>(list); return buildPage(pageInfo);
常用查询条件
example.setOrderByClause("字段名 ASC"); // 添加升序排列条件,DESC为降序 example.setDistinct(false); // 去除重复,boolean型,true为选择不重复的记录 criteria.andIsNull(String property, Object value); // 添加字段为null的条件 criteria.andIsNotNull(String property, Object value); // 添加字段不为null的条件 criteria.andEqualTo(String property, Object value); // 添加字段等于value条件 criteria.andNotEqualTo(String property, Object value); // 添加字段不等于value条件 criteria.andGreaterThan(String property, Object value); // 添加字段大于value条件 criteria.andGreaterThanOrEqualTo(String property, Object value); // 添加字段大于等于value条件 criteria.andLessThan(String property, Object value); // 添加字段小于value条件 criteria.andLessThanOrEqualTo(String property, Object value); // 添加字段小于等于value条件 criteria.andIn(String property, Iterable values); // 添加字段值在Iterable(eg:List<?>)条件 criteria.andNotIn(String property, Iterable values); // 添加字段值不在Iterable(eg:List<?>)条件 criteria.andLike(String property, String value); // 添加字段值为value的模糊查criteria.andLike("name","%"+value+"%"); criteria.andNotLike("name","%"+value+"%"); // 添加字段值不为value的模糊查询条件 criteria.andBetween(String property, Object value1, Object value2); // 添加字段值在value1和value2之间条件 criteria.andNotBetween(String property, Object value1, Object value2); // 添加字段值不在value1和value2之间条件
注:criteria.andCondition();//使用该查询,属于手写sql需要注意sql注入问题
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2021-12-07 Spring的事务