/**
* 属性和表的列名不相同时的处理方法
* 1.sql中给列重新命名:
*    select tid id, tname name from teacher t where tid=#{id}
* 2.在teacherMapper.xml中使用resultMap标签
*    <select id="getTeacher2" parameterType="int" resultMap="getTeacherMap">
*     select * from teacher where tid=#{id}
*    </select>
*    <resultMap type="Teacher" id="getTeacherMap">
*      <id property="id" column="tid"/>
*      <result property="name" column="tname"/>
*    </resultMap>
* @author 魅力_小生
*
*/

mysql表:Teacher[tid, tname], Java 实体类:Teacher[id, name]

建表语句:

create table
CREATE TABLE `teacher` (
`tid` int(11) NOT NULL auto_increment,
`tname` varchar(20) default NULL,
PRIMARY KEY (`tid`)
) 添加2条数据:
1 老师A
2 老师B

Teacher实体类:

public class Teacher {
private int id;
private String name; public Teacher() {
super();
}
public Teacher(int id, String name) {
super();
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Teacher [id=" + id + ", name=" + name + "]";
} }

一、第一种处理方法:sql中给列重新命名

select tid id, tname name from teacher t where tid=#{id}

1.1 写实体类关联的MapperXML:

<mapper namespace="com.mlxs.mybatis.test3.teacherMapper">
<!--
* 属性和表的列名不相同时的处理方法
* 1.sql中给列重新命名:
* select tid id, tname name from teacher t where tid=#{id}
-->
<select id="getTeacher" parameterType="int" resultType="Teacher">
select tid id, tname name from teacher t where tid=#{id}
</select>
</mapper>

1.2 写java测试类

/**
* 属性和表的列名不相同时的2种处理方法
* 1.sql中给列重新命名:
* select tid id, tname name from teacher t where tid=#{id}
* @author 魅力_小生
*
*/
@Test
public void getTeacher(){
//创建session,设置事务为true
SqlSession session = MyBatisUtil.getSessionFactory().openSession(true);
String statement = "com.mlxs.mybatis.test3.teacherMapper.getTeacher";
Teacher teacher = session.selectOne(statement, "1");
System.out.println("teacher--->"+teacher);
session.close();
}

1.3 结果

teacher--->Teacher [id=1, name=老师A]

二、第二种处理方法:使用resultMap标签

2.1 写实体类关联的MapperXML:

<mapper namespace="com.mlxs.mybatis.test3.teacherMapper">

    <!--
属性和表的列名不相同时的处理方法:
2.在teacherMapper.xml中使用resultMap标签
-->
<select id="getTeacher2" parameterType="int" resultMap="getTeacherMap">
select * from teacher where tid=#{id}
</select>
<resultMap type="Teacher" id="getTeacherMap">
<id property="id" column="tid"/>
<result property="name" column="tname"/>
</resultMap>
</mapper>

2.2 Java测试类

/**
* 属性和表的列名不相同时的2种处理方法
* 2.在teacherMapper.xml中使用resultMap标签
* <select id="getTeacher2" parameterType="int" resultMap="getTeacherMap">
* select * from teacher where tid=#{id}
* </select>
* <resultMap type="Teacher" id="getTeacherMap">
* <id property="id" column="tid"/>
* <result property="name" column="tname"/>
* </resultMap>
* @author 魅力_小生
*
*/
@Test
public void getTeacher2(){
//创建session,设置事务为true
SqlSession session = MyBatisUtil.getSessionFactory().openSession(true);
String statement = "com.mlxs.mybatis.test3.teacherMapper.getTeacher2";
Teacher teacher = session.selectOne(statement, "1");
System.out.println("teacher--->"+teacher);
session.close();
}

2.3 结果

teacher--->Teacher [id=1, name=老师A]

4.mybatis属性和表的列名不相同时的处理方法的更多相关文章

  1. mybatis中表与表之间的关联

    第三天 1.mybatis处理表与表之间的关系? 比如要在帖子回复表里显示其它两张相关联表的信息. 处理的第一种方式: 1)主要的数据实体类是ReplyInfo,相关联的实体表的数据是TitleInf ...

  2. mybatis属性详解

    前言 MyBatis是基于"数据库结构不可控"的思想建立的,也就是我们希望数据库遵循第三范式或BCNF,但实际事与愿违,那么结果集映射就是MyBatis为我们提供这种理想与现实间转 ...

  3. 【mysql】 mybatis实现 主从表 left join 1:n 一对多 分页查询 主表从表都有查询条件 【mybatis】count 统计+JSON查询

    mybatis实现 主从表 left join  1:n 一对多 分页查询   主表从表都有查询条件+count 需求: ======================================= ...

  4. MyBatis的多表查询笔记

    MyBatis的多表查询 随着学习的进步,需求的提高,我们在实际开发中用的最多的还是多表查询,就让我们一起学习MyBatis中的多表查询. 数据库准备 Class表 Student表 项目结构 这次使 ...

  5. Mybatis的分表实战

    前言: 以前写代码, 关于mysql的分库分表已被中间件服务所支持, 业务代码涉及的sql已规避了这块. 它对扩展友好, 你也不知道到底他分为多少库, 多少表, 一切都是透明的. 不过对于小的团队/工 ...

  6. SqlSever查询某个表的列名称、说明、备注、注释,类型等

    这周整理了数据库文档,发现用导出脚本来整理表的信息注释查看不方便,因此我就想能不能SQL语句查询表的注释或者表的字段.我就我问朋友是不是可以,他给我点指导,然后自己也在网上百度,来实现自己的想法,我把 ...

  7. SpringBoot集成Mybatis实现多表查询的两种方式(基于xml)

     下面将在用户和账户进行一对一查询的基础上进行介绍SpringBoot集成Mybatis实现多表查询的基于xml的两种方式.   首先我们先创建两个数据库表,分别是user用户表和account账户表 ...

  8. Mybatis 属性配置

    properties  定义配置,配置的属性可以在整个配置文件中的其他位置进行引用 <properties resource="db.properties"></ ...

  9. SpringBoot整合Mybatis对单表的增、删、改、查操作

    一.目标 SpringBoot整合Mybatis对单表的增.删.改.查操作 二.开发工具及项目环境 IDE: IntelliJ IDEA 2019.3 SQL:Navicat for MySQL 三. ...

随机推荐

  1. 华硕本本重装系统后出现can not open file c:\RECOVERY.DAT

    华硕本本重装系统后出现can not open file c:\RECOVERY.DAT很多网友会觉得困惑,不知道为什么会这样,下面我就为大家来解决这个问题,方法一: 这个问题就出在华硕自带系统都是装 ...

  2. #import vs. @class

    You #import or #include when there is a physical dependency. Otherwise, you use forward declarations ...

  3. Aspose.Words操作word生成PDF文档

    Aspose.Words操作word生成PDF文档 using Aspose.Words; using System; using System.Collections.Generic; using ...

  4. APP运营推广那点事【干货】

    你的手机里面有多少应用?什么样的手机应用吸引你?下载之后经常用还是让他shi在那里?又或者刚点进去就卸载? 一款成功的应用,开发APP只是第一步,比前者更重要的是“养”APP,APP就像是一个需要不断 ...

  5. 通过spring工厂读取property配置文件

    /** * Created by ywq on 2016/6/30. */ @Named public class PropertyConfig { private static AbstractBe ...

  6. win7中sql2005 连接其它sql2005服务器,连不上

    1.在管理工具-->高级安全 Windows 防火墙下配置下入站规则,将sql的端口加入里面,关闭防火墙并没有把这个给关闭掉 2 .Sql Server Browser 启用3.客户端协议 tc ...

  7. 关于基于webrtc的android-apk 和 webrtc-brows

    这一段时间我在做一些关于基于webrtc应用的一些研究,做个一个android的demo,详情如下: 手机客户端:   基于webrtc的 android apk   (webrtc 代码版本 R67 ...

  8. Ahui Writes Word

    Ahui Writes Word Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) To ...

  9. Friendship

    Friendship Time Limit: 2000MS Memory Limit: 20000K Total Submissions: 9824 Accepted: 2720 Descriptio ...

  10. 第十二届浙江省大学生程序设计大赛-Lunch Time 分类: 比赛 2015-06-26 14:30 5人阅读 评论(0) 收藏

    Lunch Time Time Limit: 2 Seconds Memory Limit: 65536 KB The 999th Zhejiang Provincial Collegiate Pro ...