唠嗑部分
上篇文章我们说了Mybatis基本的CRUD操作及工具类的封装,相关文章:
【Mybatis】简单入门及工具类封装-一
大家都知道,Mybatis是半自动化的ORM框架,那么它到底是如何帮我们完成ORM映射的呢?
这就是本篇文章和大家说的内容
言归正传
首先在默认情况下,要实现ORM映射,需要表的列表与实体类的字段名完全一致,Mybatis才能帮我们自动映射
但是,java中字段的自定规范遵循小驼峰命名法,而数据库表的字段名一般遵循下划线命名法
即数据库user_name,java字段名userName,想要完全一致,有一方就要打破规范,Mybatis有一个配置,会将数据库的下划线命名法自动转换为java中的小驼峰命名,但是需要我们手动开启
MyBatis只能自动维护库表”列名“与”属性名“相同时的一一对应关系,二者不同时,无法自动ORM。
方式一:驼峰命名
前提是数据库与java变量均遵循规范
在mybatis-config.xml添加如下配置,开启下划线转小驼峰命名
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
没有配置小驼峰命名
开启小驼峰命名
方式二:别名
MySQl提供了别名的语法,可以使用别名让其列名与java实体类变量一致,完成ORM映射,操作如下
方式三: ResultMap自定义结果集映射
Mybatis提供了一种自定义的结果集映射的方式,ResultMap语法如下
<resultMap id="idMap" type="com.cxs.model.User">
<id column="id" property="id"/>
<result column="user_name" property="userName"/>
<result column="age" property="age"/>
<result column="create_time" property="createTime"/>
</resultMap>
<select id="selectByIdMap" resultMap="idMap">
SELECT * FROM user WHERE id = #{id}
</select>
结果如上,也完成了ORM映射
结尾
总结一下,以上三种方式
1、基本都会用,第一种都会开启,毕竟方便很多,对于单表来说,都喜欢自动映射,省事
2、我个人来讲,ResultMap用的较多,这种一般会在多表联查中使用
3、别名用的较少,但是有一种情况会用,多表联查中如果有多个字段名一致时,会手动起别名,然后ResultMap映射
4、关于Mybatis的内容会持续更新,敬请期待