对Mybatis Plus中@TableField的使用正解
目录
- @TableField的使用
- 1 研究背景和过程
- 2 总结
- 2.1 别名效果 value属性
- 2.2 防止字段持久化 exist属性
- @TableField的作用
- @TableField(exist = false)
@TableField的使用
1 研究背景和过程
妹纸开发突然发现@TableField失效了,在群里发问。一了解,发现妹纸本意是想用@TabkeField达到类似@JsonProperty的功能。也就是当实体类属性名与数据库列名不一致时,通过此注解实现别名效果。
奇怪的是,这注解一部分成功,一部分失效。具体表现就是有时候可以取到值,有时候又取不到。我点进改注解源码,发现它给value设定的本意是:当驼峰转化未开启时,使用此注解实现驼峰转化。然而,我实际测试表明它其实没这功能。
我信誓旦旦跟妹纸讲,@TableField没有别名的功能。谁知妹纸给我发了一张自动打印sql的截图。里面清清楚楚的显示,MP确实自动生成了AS别名。灵光一闪,是否是Mybatis Plus自动生成的可以别名,而自己写的sql就不行?
不验不知道,一验吓一跳。果然如此,手写的sql都不能自动生成别名,而自动生成的sql查询语句都成功转化了。至此,@TableField注解告一段落。
2 总结
2.1 别名效果 value属性
使用MP自动生成的方法时,可以用@TableField起别名
在xml写sql时,需要用as或者resultMap来转化
2.2 防止字段持久化 exist属性
使用exist属性可以控制类中属性在表中是都一定对应,如果有不存在于数据表的字段,建议都设成fasle
@TableField的作用
@TableField(exist = false)
注解加载bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在使用bean的时候,mybatis-plus就会忽略这个,不会报错
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
MyBatisPlus使用@TableField注解处理默认填充时间的问题
目录 使用@TableField注解处理默认填充时间的情况 1.利用数据库填写默认时间 2.使用自动填充默认填充插入或更新数据库时 给实体类的属性添加@TableField注解 测试 测试成功的结果状态 类型设置 使用@TableField注解处理默认填充时间的情况 在数据库的表中创建时间,修改时间!这些个操作一般都是自动化完成的,我们不希望手动更新. 阿里巴巴开发手册:所有的数据库表:gmt_create,gmt_modified几乎所有的表都要配置上!而且需要自动化! 1.利用数据库填写默认
-
Mybatis-plus使用注解 @TableField(exist = false)
当表中午字段,但是实体类中需要这个成员变量时怎么办,可以使用mybatis-plus中@TableField(exist=false) 如下: import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomi
-
MybatisPlus中@TableField注解的使用详解
实现 官方文档说明: com.baomidou.mybatisplus.annotations.TableField TableField注解新增属性 update 预处理 set 字段自定义注入 (讲解:比如我们使用mybatisplus自带的insert()方法向数据库插入数据时,假设我们给age字段赋值为1,但是我们在age字段上的@TableField注解里面加了update="%s+1",那么真真插入到数据库的值就是age=2,而不是age+1了) 例如: @TableFie
-
在MyBatisPlus中使用@TableField完成字段自动填充的操作
场景 官方文档: 字段注解 @TableField com.baomidou.mybatisplus.annotations.TableField 值 描述 value 字段值(驼峰命名方式,该值可无) update 预处理 set 字段自定义注入 condition 预处理 WHERE 实体条件自定义运算规则 el 详看注释说明 exist 是否为数据库表字段( 默认 true 存在,false 不存在 ) strategy 字段验证 ( 默认 非 null 判断,查看 com.baomido
-
对Mybatis Plus中@TableField的使用正解
目录 @TableField的使用 1 研究背景和过程 2 总结 2.1 别名效果 value属性 2.2 防止字段持久化 exist属性 @TableField的作用 @TableField(exist = false) @TableField的使用 1 研究背景和过程 妹纸开发突然发现@TableField失效了,在群里发问.一了解,发现妹纸本意是想用@TabkeField达到类似@JsonProperty的功能.也就是当实体类属性名与数据库列名不一致时,通过此注解实现别名效果. 奇怪的是,
-
Mybatis Plus 中的LambdaQueryWrapper示例详解
目录 前言 QueryWrapper LambdaQueryWrapper 总结 前言 之前写过 Mybatis Plus 的基本配置和使用. Mybatis-Plus 看这一篇就够了 当初在进行查询时,虽然没有写硬SQL进行查询数据库操作,但是也不是太友好! QueryWrapper 为什么说不够友好,客官大姥爷们先看一个例子,假设数据库中,存在一个user表,表结构呢相对简单,如下所示: CREATE TABLE user1 ( id BIGINT(20) NOT NULL COMMENT
-
关于mybatis plus 中的查询优化问题
传统的mybatis plus 查询写法 对于常规的mybatis单表查询,我们既可以采用LambdaQueryWrapper查询,也可以使用QueryWrapper查询. LambdaQueryWrapper具有防误写.规范代码等好处,但是缺点是无法在复杂的多表查询中使用. 相比较来说,使用QueryWrapper编写查询更加灵活,可以适应更复杂的查询场景. 我们首先看一个QueryWrapper查询的例子 public List<UserMo> list (UserForm userFor
-
整理Java的MyBatis框架中一些重要的功能及基本使用示例
基本用法回顾: SQL语句存储在XML文件或Java 注解中.一个MaBatis映射的示例(其中用到了Java接口和MyBatis注解): package org.mybatis.example; public interface BlogMapper { @Select("select * from Blog where id = #{id}") Blog selectBlog(int id); } 执行的示例: BlogMapper mapper = session.getMapp
-
Java的MyBatis框架中XML映射缓存的使用教程
MyBatis包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制.默认情况下是没有开启缓存的,要开启二级缓存,你需要在你的SQL映射文件中添加一行: <cache/> 字面上看就是这样.这个简单语句的效果如下: 1.映射语句文件中的所有select语句将会被缓存. 2.映射语句文件中的所有insert,update和delete语句会刷新缓存. 3.缓存会使用Least Recently Used(LRU,最近最少使用的)算法来收回. 4.根据时间表(比如 no Flush Inter
-
MyBatis框架中mybatis配置文件详细介绍
一.注册DB连接四要素属性文件 <propertiesresource="jdbc.properties"/> 二.将指定包中所有类的简单类名当作其别名 <typeAliases> <packagename="com.bjpowernode.beans"/> </typeAliases> 三.配置运行环境 <environmentsdefault="testEM"> <enviro
-
mybatis xml中特殊字符处理及特殊符号
下面给大家介绍mybatis xml 中特殊字符处理方法,具体内容如下所示: 1,CDATA区: 它的全称为character data,以"<![CDATA[ "开始,以" ]]>" 结束,在两者之间嵌入不想被解析程序解析的原始数据,解析器不对CDATA区中的内容进行解析,而是将这些数据原封不动地交给下游程序处理. 2,特殊字符 : xml 中表示: <= 小于等于. >= 大于等于 需加 这样的标记: <![C
-
优化MyBatis配置文件中的配置详解
本文研究的主要是优化MyBatis配置文件中的配置的相关内容,具体介绍如下. 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN&
-
Mybatis plus中使用in查询出错如何解决
不想看我bb的直接点上面的 ''解决方法'' 我的情况是这样的,在使用mybatis plus提供的QueryWrapper方法里的in查询时,我的参数为类似"1,2,3,4"这样的字符串 //要查的参数 String masterIds = "81554,5654,55948,48945"; QueryWrapper<FpjyPauperInfo> pauperqw = new QueryWrapper<>(); pauperqw.in(&
-
MyBatis Plus中代码生成器使用详解
按照官网上实例尝试了一下,感觉MyBatis plus中代码生成器还是很强大的,以下是测试的总结: 使用MybatisPlus的主要依赖 引入plus依赖(苞米豆) <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.1.1</version> </depe
随机推荐
- Java Web中解决路径(绝对路径与相对路径)问题
- sqlserver和oracle中对datetime进行条件查询的一点区别小结
- 关于MYSQL中每个用户取1条记录的三种写法(group by xxx)
- jQuery解析json数据实例分析
- MyBatis 源码分析 之SqlSession接口和Executor类
- IOS中快速集成短信SDK验证开发(SMSSDK),IOS开发中如何设置手机短信验证码
- Linux知识点小结
- python实现爬虫下载美女图片
- python自动化测试之连接几组测试包实例
- php实现的http请求封装示例
- php微信公众平台开发(三)订阅事件处理
- ajax回调函数参数传递正确方法
- 两款JS脚本判断手机浏览器类型跳转WAP手机网站
- PHP简单创建压缩图的方法
- Android布局优化之ViewStub控件
- 解决C++ 无法从void 转换为LRESULT的方法详解
- java实现一个简单的Web服务器实例解析
- js的对象与函数详解
- 深入学习java并发包ConcurrentHashMap源码
- Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解