-
lambda条件构造器(类似mp条件构造器,防误写)
lambda条件构造器使用场景:
不需要我们手动在构造条件时去书写字段名称。
lambda条件构造器使用方法:
lambda条件构造器的创建有3种方式
1、通过查询构造器QueryWrapper创建
2、通过new直接创建lambda条件构造器
3、通过构造器工具类Wrappers创建(此时需要泛型)
例2:
4、3.0.7新增的创建lambda条件构造器,通过LambdaQueryChainWrapper,并且需要一个Mapper接口作为参数(通过源码可以,它是对普通查询构造器的再次封装,源码中仍然是通过Mapper接口去调用)。
查看全部 -
简单的内容还是以mp支持的默认方法比较合算,如果需要特定支持在考虑去自定义sql
查看全部 -
Java8时间类
查看全部 -
查询带夸号
查看全部 -
其他以条件构造器的方法
1、selectMap:List集合的泛型不再是实体,而是map集合。其中key表示字段名,value表示字段值。
使用场景1:当实体类属性非常多时,不易查看。如果返回的是一个实体类,那么即使我们设定了返回字段,那么它的值为null,但是属性仍然存在。如果返回的是Map类型,当指定了返回字段时,那么没返回的就不会存在。
使用场景2:当返回的不是一条一条记录时,也就是返回的字段不在实体类属性中,比如一些统计,像平均值,最大值,最小值这样的。
2、selectObject:List集合的泛型不再是实体,而是Object,只返回第一个字段的值。其他的会被舍弃。
使用场景:只返回一列时可以使用它。
3、selectCount:查询符合条件的总记录数的。
注意:使用它时,就不能指定返回的列了,因为它会在后面拼接COUNT(1)。
4、selectOne:查询符合条件的数据,只会返回一条数据。
注意:查询的结果必须是一条或者查不到(多于1条就会报错)。
查看全部 -
Alleq(Map<R,V> params)
使用方法:传入一个map集合对象,就会按照等值进行操作。key为字段名称,value为字段值。如果字段的值为null,那么sql就会拼接为is null这种形式。
如果传入的null,想要忽略掉,也就是不进行拼接,那么就传入第二个参数为false。
allEq的第二种方法,参数1为过滤函数,它是一个函数式接口。
上图就是判断name是不等于name,如果不等于就返回true,就会过滤掉,所以没有拼接name。也可以判断值。注意需要考虑类型的问题
查看全部 -
创建条件构造器时传入实体对象
QueryWrapper一个参数的构造方法,如果传入一个部不为null的对象,默认会进行进行等值比较,也就是where后拼接条件。
注意:通过entity参数生成的等值和QueryWrapper的条件构造方法生成的没有任何关系。
举例验证:
注意:使用时要慎重,因为他们都会在sql中进行拼接。
使用场景:如果允许使用实体类去接受参数,那么就可以不用调用条件构造器,而是直接使用构造方法传入参数即可。
特殊操作:可以通过在实体类上添加注解,指定该属性使用那种操作,默认使用等值。
SqlCondition类:定义了一些常量,包括等值、不等于、like、左边like、右边like。
如果提供的常量无法满足需求,就可以自己在注解中编写常量表达式,例如小于。
查看全部 -
条件构造器(abstractWrapper)中 condition(构造的方法的boolean类型参数) 作用。
如下:like方法调用重载的方法,重载方法中第一个参数。
作用:该条件是否加入最后生成的sql中。
使用方法:如果为true就加入,如果false就不加入。
使用场景:类似于动态的sql拼接。
传统使用:
mp方式:
查看全部 -
basemapper 常用注解 看文档查看全部
-
select不列出全部字段
select(String ...columns)
如果返回的字段数量很多,此时采用如下的select,也可以放置在后面。
select(Class<T> entityClass,Predicate<TableFieldInfo> predicate)
第一个参数为实体类对象。第二个参数相当于排除返回的字段。
查看全部 -
非and开头的条件构造器:nested()
In条件构造器:In(column,Collection)
last条件构造器:last(sql)。注意:有sql注入风险。确保参数没有风险再使用。
查看全部 -
and括号条件构造器:and()
ort括号条件构造器:or()
查看全部 -
Mysql函数
date_format(日期,'格式'):将日期按照格式进行插入或者返回。例如:date_format(now(),'%Y-%m-%d')。
动态条件构造器:apply。范围条件构造器:insql。
注意:如果{0}替换为实际值,可能会造成sql注入。
查看全部 -
BaseMapper以条件构造器(Wrapper)为参数的查询方法
AbstractWrapper抽象类:提供了很多条件构造器。
List<T> selectList(@Param(Constans.WRAPPER) Wrapper<T> queryWrapper):使用场景:对于一些有特殊条件的查询,比如模糊查询、条件查询等。使用方法:QueryWrapper为查询条件构造器,它是AbstractWrapper的一个子类。生成条件构造器方式一,QueryWrapper<T> queryWrapper=new QueryWrapper<T>();方式二QueryWrapper<T> query=Wrappers.<T>query();
注意:条件构造器AbstractWrapper的条件构造器方法key都为数据表字段,value为实际值。例如:like(Column,value)、gt(Column,value)等。
模糊条件构造器:like。小于条件构造器:lt。
范围条件构造器:between。非空条件构造器:isNotNull。
模糊右通配符条件构造器:likeRight。或条件构造器:or。
大于等于条件构造器:ge。升序条件构造器:orderAsc。
降序条件构造器:orderDesc。
查看全部 -
普通查询:使用方式为实现BaseMapper<T>接口对象调用该方法。
T selectById(Serializable id):使用场景为通过主键查询,只要该主键类型实现了Serialzable接口即可。
2、List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList):使用场景为通过主键的集合去批量查询,前提主键的类型实现了Serializable接口。
3、List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String,Object> columnMap):使用场景为传入一个Map集合,key为表字段,value为表字段值。
注意:Map的key为数据表的字段名,不是实体类属性名。
查看全部
举报