@TableName注解用于表名与包装类名匹配 @TableId注解用于指明主键,主键可以选择属性,比如自增 @TableField用于指明属性与表字段匹配,当字段名与属性名相同时可以不写
传入参数null是为了查询所有结果,查询结果如下:
运行结果:
用transient关键字标识的属性不参与序列化过程,mp会忽略掉该属性,但是该属性也不能被序列化了.
用static标识的变量也会被mp忽略掉,但是lombok不会为静态属性生成set/get方法,需要自己手动生成.
该注解默认是true,改成false标识该属性在表中不存在
查询结果:
结果为: 通过结果可以看出是通过in查询的
结果为: 中间是使用and连接 值得注意的是:map加的键是表字段,不是包装类属性
传递Collection集合与Map集合的区别: Collection 是按照同一字段的不同参数查询 Map 是按照不同字段查询表信息
运行结果为: 连接符号也是and
查询结果为: 全部都是and连接
结果为:
结果为:
执行后的sql:
执行后sql:
执行后sql:
list无视优化规则直接拼接到 sql 的最后,有sql注入风险 执行后sql:
使用select查询指定字段: 执行结果sql为:
使用select(Class entityClass, Predicate predicate) 剔除不需要的字段 运行后sql为:
源码为: condition为false,则表示该字段不加入where条件 sql执行结果:
实体参数和条件构造器互不冲突,都会被加在where后面 执行结果:
注意事项: 实体条件查找默认时等值.但是可以在实体类加入@TableFiled注解改变查询条件 SqlCondition 提供的查询条件有限,仅仅五个 但是可以自己按照他的格式定义,例如: 表示查询小于指定参数的值: sql查询结果为:
以map集合的形式传递参数 执行结果为: 该方法还有一个重载方法 图片来源于官方,第二个方法的null2IsNull为true时,表示当该参数为null时调用is null ,当null2IsNull为false时,则表示当传的参数为null时直接忽略. null2IsNull为true时: null2IsNull为false时: allEq还有一种写法: 可以通过该方法过滤查询条件:
根据 Wrapper 条件,查询全部记录
因为返回值类型不在是实体类了,当实体类属性较多,而所需返回值较少时,可以使用这种方式查询,或者用于特殊查询
这个方法的查询结果只保留第一个字段的值 比如这个,明明查询了年龄和姓名,却只保留了姓名
返回值时一个实体对象,但是查询到多个会报错
该方法可用于统计数量
lambda条件构造器的普通三种创建方法: 拿第三种创建方式举例: lambda条件构造器的第四种写法 直接将接口传入,就能直接查询了
需要在Mapper接口先写自己的方法,和mybatis一样的写法,但是参数需要指定的参数,Sql语句使用注解或者xml都行: 关于 ${ew.customSqlSegment} 的含义:
第一步: 配置分页查询配置类 注:分页查询不成功,很有可能是配置信息的不完成 分页查询代码: mp是分两次查询,一次是查询总记录数,一次是查询分页数据,可以通过重载方法,取消查询总记录数 不查询总记录数: selectMapsPage返回的时一个map集合 也有自定义分页查询,详情见官网
根据id更新: 这个方法是基于实体参数修改指定的值,entity是set参数,updateWrapper是where里的参数
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);updateWrapper也可以传入实体参数: 只改变部分参数,则不必要传入实体对象时,可以用set方法:
Lambda表达式写法 链式Lambda表达式写法
deleteBuId int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList); 类似,就是传一个集合进去删除 int delete(@Param(Constants.WRAPPER) Wrapper wrapper); 这是lambda表达式的,普通构造器类似
