【Mybatis】如何实现ORM映射-二

唠嗑部分

上篇文章我们说了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>

没有配置小驼峰命名

image-20230306101148990

开启小驼峰命名

image-20230306101242604

方式二:别名

MySQl提供了别名的语法,可以使用别名让其列名与java实体类变量一致,完成ORM映射,操作如下

image-20230306101705306

方式三: 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>

image-20230306102540964

结果如上,也完成了ORM映射

结尾

总结一下,以上三种方式

1、基本都会用,第一种都会开启,毕竟方便很多,对于单表来说,都喜欢自动映射,省事

2、我个人来讲,ResultMap用的较多,这种一般会在多表联查中使用

3、别名用的较少,但是有一种情况会用,多表联查中如果有多个字段名一致时,会手动起别名,然后ResultMap映射

4、关于Mybatis的内容会持续更新,敬请期待

猜你喜欢

转载自blog.csdn.net/admin_2022/article/details/130683350