mybatis一个字段映射两个_MyBatis手把手跟我做系列(二) --- 基本CRUD操

本文介绍了MyBatis中解决数据库字段与Java Bean属性不匹配的三种方法,包括全局配置开启驼峰命名规则、在SQL语句中设置别名以及使用resultMap。此外,还讲解了添加log4j日志和实现CRUD操作的步骤,包括查询、新增、删除和更新。最后提到了配置别名以简化XML配置。
摘要由CSDN通过智能技术生成
89554150edfa04fc45918660cf2a3508.png

在昨天的文章中,已经实现了将数据库表中的内容读取出来,但是结果却是不对的

ba14cf3c707683687f4d47901af09001.png

仔细观察上面的截图,发现数据库t_user表中的字段和User类中的属性完全一样的,数据是赋值进去了的,但是user_tel,registration_time这两个字段在User表中是以驼峰形式命名的属性,找到问题所在,其实数据库字段名和类名中的属性不匹配,引起的问题,这种问题当然很常见,所以Mybatis中有很多种办法来解决这种字段和属性不匹配的问题

一.数据库字段和Java Bean类属性不匹配问题的设置

这个问题我们常见的有三种办法都可以解决

1.在MyBatis全局配置中进行设置,打开驼峰规则匹配

这个也就是在mybatis-configuration.xml文件中,加入下面的配置

注意这段代码的位置,MyBatis的全局配置,对于配置标签的位置是有限制的,不能随便改变设置标签的位置.

现在我们将标签直接放在标签下方

73831a6bb7af3c7fc0e4fc5729837afd.png

只需要这么设置之后,我们这里的代码就可以正确获取数据库中的值了

adae470f56a3c1155fae17a43b7d7a55.png

标签中,还有很多我们日常常用的设置

设置参数描述有效值默认值cacheEnabled全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存。truefalselazyLoadingEnabled延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。truefalseaggressiveLazyLoading当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载(参考lazyLoadTriggerMethods).truefalsemultipleResultSetsEnabled是否允许单一语句返回多结果集(需要兼容驱动)。truefalseuseColumnLabel使用列标签代替列名。不同的驱动在这方面会有不同的表现, 具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。truefalseuseGeneratedKeys允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。truefalseautoMappingBehavior指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套)。NONE, PARTIAL, FULLPARTIALautoMappingUnknownColumnBehavior指定发现自动映射目标未知列(或者未知属性类型)的行为。NONE: 不做任何反应 WARNING: 输出提醒日志 (‘org.apache.ibatis.session.AutoMappingUnknownColumnBehavior’ 的日志等级必须设置为 WARN) FAILING: 映射失败 (抛出 SqlSessionException)NONE, WARNING, FAILINGNONEdefaultExecutorType配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。SIMPLE REUSE BATCHSIMPLEdefaultStatementTimeout设置超时时间,它决定驱动等待数据库响应的秒数。任意正整数Not Set (null)defaultFetchSize为驱动的结果集获取数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值