mybatis怎么忽略映射字段

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis怎么忽略映射字段相关的知识,希望对你有一定的参考价值。

以下是mybatis忽略映射字段的方法:

@TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的。

@TableField(exist = true):表示该属性为数据库表字段。

@TableName:数据库表相关

@TableId:表主键标识

@TableField:表字段标识

@TableLogic:表字段逻辑处理注解(逻辑删除)

扩展资料

mybatis---属性和字段映射:

1、查询时使用别名,别名和属性名保持一致

  <select id="getUser" parameterType="int" resultType="com.skd.mybits.domain.User">

    select id_dif id, name_dif name, age_dif age from users where id=#id    

</select>

别名和属性名保持一致。

2、通过resultMap标签映射字段名和属性名的关系

<!-- type:表示实体类的全限定类名  id:通过id其他标签可引用该标签-->

    <resultMap type="com.skd.mybits.domain.User" id="userResultMap">

        <!-- id 标签映射主键字段 -->

        <id property="id_dif" column="id"/>

        <!-- result 标签映射其他字段 -->

        <result property="id_dif" column="id"/>

    </resultMap>

参考技术A @TableField(exist = false)
Mybatis-Plus 插件有这个功能,可以看一下
参考技术B 1、可不写 当实体属性与表字段名相同的时候,即上面的1和2的情况,2.1resultMap映射代码可不写。 select时,返回用 resultType 2、必须写 当实体属性与表字段名不同的时候,即上面的1和3的情况,3.1resultMap映射代码必须写。 select时,返回用 ...

mybatis-plus查询时不能映射字段

mybatis-plus查询时不能映射字段

mybatis-plus查询时不能映射字段

新建项目配置好启动正常,但是测试时发现mybatis-plus查询中,未能将实体字段名映射为表中的列表。
错误信息:
Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘userName’ in ‘field list’
The error may exist in cn/yc/sys/mapper/UserMapper.java (best guess)
The error may involve defaultParameterMap
The error occurred while setting parameters
SQL: SELECT id,userName,password,userTel,address FROM d_user WHERE (user_name = )
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘userName’ in ‘field list’
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘userName’ in ‘field list’] with root cause

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column ‘userName’ in ‘field list’
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[na:1.8.0_181]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[na:1.8.0_181]

排查

查看配置信息,mapper的配置位置正常:

程序启动时,console信息中也能看到:

mapper.xml文件是自动生成的,内容完全没改动:

奇怪的情况,折磨半天。

原因

浪费半天时间,最后发现配置文件中有一处不正常的情况:

map-underscore-to-camel-case,是否开启驼峰转换功能。
罪魁祸首就在此处,此项设为了true时,才会开启驼峰自动转换功能,mybatis在拼sql时才会将实体类的字段名,转为对应的表列名。

PS:
map-underscore-to-camel-case,为true时,如果不使用一些自定义的sql,只使用mybatis预设的方法与数据库交互,则mapper.xml文件可以删除,毫无影响。

以上是关于mybatis怎么忽略映射字段的主要内容,如果未能解决你的问题,请参考以下文章

mybatis返回一个count加一个字段该怎么设置返回resultType

mybatis返回一个count加一个字段该怎么设置返回resultType

自定义枚举 --- MyBatis字段映射

mybatis中Errorsetting null forparameter #2 怎么解决??

MyBatis学习笔记11:解决字段名和属性的映射关系

mybatis-plus查询时不能映射字段