大佬教程收集整理的这篇文章主要介绍了Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
原文链接:http://www.cnblogs.com/xdp-gacl/p/4264301.html http://www.cnblogs.com/xdp-gacl/p/4264425.html
1、连接数据库的配置单独放在一个properties文件中
之前,我们是直接将数据库的连接配置信息写在了MyBatis的主配置文件conf.xml文件中,如下:
其实我们完全可以将数据库的连接配置信息写在一个properties文件中,然后在conf.xml文件中引用properties文件,具体做法如下:
1、在src目录下新建一个db.properties文件,如下图所示:
title="Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突" alt="Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突" src="https://cn.js-code.com/res/2019/02-10/10/f368bba5b2583afc7b84d7e3ef0742ab.png" >
在db.properties文件编写连接数据库需要使用到的数据库驱动,连接URL地址,用户名,密码,如下:
2、在MyBatis的主配置文件conf.xml文件中引用db.properties文件,如下:
2、为实体类定义别名,简化sql映射xml文件中的引用
之前,我们在sql映射xml文件中的引用实体类时,需要写上实体类的全类名(包名+类名),如下:
parameterType="@H_531_274@me.gacl.domain.User"这里写的实体类User的全类名@H_531_274@me.gacl.domain.User,每次都写这么一长串内容挺麻烦的,而我们希望能够简写成下面的形式
parameterType="_User"这样写就简单多了,为了达到这种效果,我们需要在conf.xml文件中为实体类="@H_531_274@me.gacl.domain.User"定义一个别名为"_User",具体做法如下: 在conf.xml文件中
这样就可以为@H_531_274@me.gacl.domain.User类定义了一个别名为_User,以后_User就代表了@H_531_274@me.gacl.domain.User类,这样sql映射xml文件中的凡是需要引用@H_531_274@me.gacl.domain.User类的地方都可以使用_User来代替,这就达到了一个简化实体类引用的目的。
除了可以使用
<span style="color: #008000"><!--</span><span style="color: #008000"> 引用db.properties配置文件 </span><span style="color: #008000">--></span>
<span style="color: #0000ff"><</span><span style="color: #800000">properties </span><span style="color: #ff0000">resource</span><span style="color: #0000ff">="db.properties"</span><span style="color: #0000ff">/></span>
<span style="color: #008000"><!--</span><span style="color: #008000">
development : 开发模式
work : 工作模式
</span><span style="color: #008000">--></span>
<span style="color: #0000ff"><</span><span style="color: #800000">environments </span><span style="color: #ff0000">default</span><span style="color: #0000ff">="development"</span><span style="color: #0000ff">></span>
<span style="color: #0000ff"><</span><span style="color: #800000">environment </span><span style="color: #ff0000">id</span><span style="color: #0000ff">="development"</span><span style="color: #0000ff">></span>
<span style="color: #0000ff"><</span><span style="color: #800000">transactionManager </span><span style="color: #ff0000">type</span><span style="color: #0000ff">="JDBC"</span> <span style="color: #0000ff">/></span>
<span style="color: #008000"><!--</span><span style="color: #008000"> 配置数据库连接信息 </span><span style="color: #008000">--></span>
<span style="color: #0000ff"><</span><span style="color: #800000">datasource </span><span style="color: #ff0000">type</span><span style="color: #0000ff">="POOLED"</span><span style="color: #0000ff">></span>
<span style="color: #008000"><!--</span><span style="color: #008000"> value属性值引用db.properties配置文件中配置的值 </span><span style="color: #008000">--></span>
<span style="color: #0000ff"><</span><span style="color: #800000">property </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="driver"</span><span style="color: #ff0000"> value</span><span style="color: #0000ff">="${driver}"</span> <span style="color: #0000ff">/></span>
<span style="color: #0000ff"><</span><span style="color: #800000">property </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="url"</span><span style="color: #ff0000"> value</span><span style="color: #0000ff">="${url}"</span> <span style="color: #0000ff">/></span>
<span style="color: #0000ff"><</span><span style="color: #800000">property </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="username"</span><span style="color: #ff0000"> value</span><span style="color: #0000ff">="${name}"</span> <span style="color: #0000ff">/></span>
<span style="color: #0000ff"><</span><span style="color: #800000">property </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="password"</span><span style="color: #ff0000"> value</span><span style="color: #0000ff">="${passworD}"</span> <span style="color: #0000ff">/></span>
<span style="color: #0000ff"></</span><span style="color: #800000">datasource</span><span style="color: #0000ff">></span>
<span style="color: #0000ff"></</span><span style="color: #800000">environment</span><span style="color: #0000ff">></span>
<span style="color: #0000ff"></</span><span style="color: #800000">environments</span><span style="color: #0000ff">></span>
<span style="color: #008000"><!--</span><span style="color: #008000"> 配置实体类的别名,配置实体类别名的目的是为了在引用实体类时可以使用实体类的别名来代替实体类,达到简写的目的 </span><span style="color: #008000">--></span>
<span style="color: #0000ff"><</span><span style="color: #800000">typeAliases</span><span style="color: #0000ff">></span>
<span style="color: #008000"><!--</span><span style="color: #008000"> 为实体类me.gacl.domain.User配置一个别名_User </span><span style="color: #008000">--></span>
<span style="color: #008000"><!--</span><span style="color: #008000"> <typeAlias type="me.gacl.domain.User" alias="_User"/> </span><span style="color: #008000">--></span>
<span style="color: #008000"><!--</span><span style="color: #008000"> 为me.gacl.domain包下的所有实体类配置别名,MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名
比如me.gacl.domain.User这个实体类的别名就会被设置成User
</span><span style="color: #008000">--></span>
<span style="color: #0000ff"><</span><span style="color: #800000">package </span><span style="color: #ff0000">name</span><span style="color: #0000ff">="me.gacl.domain"</span><span style="color: #0000ff">/></span>
<span style="color: #0000ff"></</span><span style="color: #800000">typeAliases</span><span style="color: #0000ff">></span>
<span style="color: #0000ff"></
<span style="color: #800000">configuration<span style="color: #0000ff">>
在平时的开发中,我们表中的字段名和表对应实体类的属性名称不一定都是完全相同的,下面来演示一下这种情况下的如何解决字段名与实体类属性名不相同的冲突。
title0">1、准备演示需要使用的表和数据
title1">2、定义实体类
title2">3、编写测试代码
title3">3.1、编写SQL的xml映射文件
1、创建一个orderMapper.xml文件,orderMapper.xml的内容如下:
2、在conf.xml文件中注册orderMapper.xml映射文件
执行单元测试的结果:
1、testGetOrderById方法执行查询后返回一个null。
2、testGetOrderById2方法和testGetOrderById3方法执行查询后可以正常得到想要的结果。
title5">4、总结
上面的测试代码演示当实体类中的属性名和表中的字段名不一致时,使用MyBatis进行查询操作时无法查询出相应的结果的问题以及针对问题采用的两种办法:
解决办法一: 通过在查询的sql语句中定义字段名的别名,让字段名的别名和实体类的属性名一致,这样就可以表的字段名和实体类的属性名一一对应上了,这种方式是通过在sql语句中定义别名来解决字段名和属性名的映射关系的。
解决办法二: 通过
以上是大佬教程为你收集整理的Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突全部内容,希望文章能够帮你解决Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。