Java笔记--Mybatis解决java类属性名和数据库列名不一样的问题--2021-05-12

13 篇文章 0 订阅

一、第二种设置返回的结果类型

除了resultType通过填写全限定名称来指定返回类型,我们也可以使用resultMap它来指定返回类型,它可以指定列名的值设值给指定的java属性

	<!-- 在xml的mapper文件中 -->
	
	<!-- 使用resultMap
        1. 定义resultMap
        2. 在select标签,使用resultMap来引用id定义的名称
    -->
    
	<!-- 定义resultMap
        id:自定义名称,表示你定义的这个resultMap
        type:java类型的全限定名称
    -->
    <resultMap id="studentMap" type="com.apps.bean.Student" >
        <!-- 列名和java属性的关属 -->
        <!-- 主键列,使用id标签
              column:列名
              property:java类的属性名
         -->
        <id column="id" property="id" />
        <!-- 非主键列,使用result标签 -->
        <result column="name" property="name" />
        <result column="email" property="email" />
        <result column="age" property="age" />
    </resultMap>

    <select id="selectAllStudents" resultMap="studentMap">
        select * from stu;
    </select>
    这样就可以指定列名的值设值给指定的java属性,如我们要
    把数据库中的email字段值 设值给 javaa对象的name属性
    时,就可以这样写
    <resultMap id="studentMap" type="com.apps.bean.Student" >
        <id column="id" property="id" />
        <result column="name" property="email" />
        <result column="email" property="name" />
        <!-- 这时属性设值就反了过来 -->
        <result column="age" property="age" />
    </resultMap>
    
	<select id="selectAllStudents" resultMap="studentMap">
        select * from stu;
    </select>
    

二、解决方式

1.1 第一种:定义resultMap

使用resultMap

	/* 接口 */
    List<MyStudent> selectMyStudent();
	
	/* mapper文件 */
 	<!-- 定义resultMap -->
 	MyStudent为新定义的java类,它的属性名跟数据库中的字段名是不一样的
    <resultMap id="myStudentMap" type="com.apps.bean.MyStudent" >
        <!-- 列名和java属性的关属 -->
        <!-- 主键列,使用id标签 -->
        <id column="id" property="myId" />
        <!-- 非主键列,使用result标签 -->
        <result column="name" property="myName" />
        <result column="email" property="myEmail" />
        <result column="age" property="myAge" />
    </resultMap>

    <select id="selectMyStudent" resultMap="myStudentMap">
        select * from stu;
    </select>

1.2 第二种:列别名

resultType的默认原则是同名的列值赋值给同名的属性,使用列别名(java类的属性名)

    <select id="selectDiffColProperty" resultType="com.apps.bean.MyStudent">
        select id as myId,name as myName,email as myEmail,age as myAge from stu;
    </select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张德帅-001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值