MyBatis字段名和属性名不一样的解决方案

一、给字段起别名,保持和属性名一样

    <! --List<Emp> getAllEmp( ); -->
    <select id="getAllEmp" resultType="Emp">
        select eid , emp_name empName , age , sex, email from t_emp
    </ select>

如上面的SQL语句将emp_name取别名为empName对应实体类的属性名。

二、设置全局配置,将_自动映射为驼峰(开启驼峰匹配)

开启驼峰匹配后,会将_自动映射为驼峰,如emp_name将会被映射为empName. 


在Spring Boot中,使用MyBatis时,可以通过在application.yml文件中设置以下参数来开启驼峰匹配:

mybatis:
  configuration:
    map-underscore-to-camel-case: true

 这样设置之后,MyBatis就会将数据库中的下划线分隔的字段名转换为Java中的驼峰式命名。例如,如果数据库中的字段名为user_name,则在Java中将会被映射为userName

 三、通过resultMap解决字段名和属性名的映射关系

resultMap:设置自定义映射

  • 属性:
    • id:表示自定义映射的唯一标识,不能重复
    • type:查询的数据要映射的实体类的类型
  • 子标签:
    • id:设置主键的映射关系
    • result:设置普通字段的映射关系
    • 子标签属性:
      • property:设置映射关系中实体类中的属性名
      • column:设置映射关系中数据库 表中的字段名
      • association:javaBean封装一个实体(多对一);
      • collection:用于javaBean封装一个集合(一对多)。
  • 若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射,即使字段名和属性名一致的属性也要映射,也就是全部属性都要列出来
<resultMap id="empResultMap" type="Emp">
	<id property="eid" column="eid"></id>
	<result property="empName" column="emp_name"></result>
	<result property="age" column="age"></result>
	<result property="sex" column="sex"></result>
	<result property="email" column="email"></result>
</resultMap>
<!--List<Emp> getAllEmp();-->
<select id="getAllEmp" resultMap="empResultMap">
	select * from t_emp
</select>

猜你喜欢

转载自blog.csdn.net/weixin_55772633/article/details/132881383
今日推荐