/**
* 属性和表的列名不相同时的处理方法
* 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. Android中常用单位dp,px,sp之间的相互转换

    MainActivity如下: package cc.testunitswitch; import android.os.Bundle; import android.util.DisplayMetr ...

  2. js操作记录

    让checkbox全选 $("#checkall").click(function(){ $("input[name='checklist']").prop(& ...

  3. 【python cookbook】【字符串与文本】15.给字符串中的变量名做插值处理

    问题:想创建一个字符串,其中嵌入的变量名称会以变量的字符串值形式替换掉 解决方法:str.format().str.format_map() >>> s = '{name} has ...

  4. iOS录音加播放.

    现在发现的事实有: 如果没有蓝牙设备, 那么可以用下面的方法边录音, 边放音乐: 在录音按钮按下的时候: _avSession = [AVAudioSession sharedInstance];   ...

  5. 【Pro ASP.NET MVC 3 Framework】.学习笔记.8.SportsStore:管理

    管理功能,如何身份认证,对controller和action方法过滤安全的访问,并在用户需要时提供证书. 1 添加分类管理 方便管理的controller,有两类页面,List页面和edit页面. 1 ...

  6. Docker CPU 资源限制——CPU固定核功能测试

    Docker使用Linux cgroup来实现资源的限制,对于CPU的限制有两种方法: 1.cpuset CPU Set限定容器使用某个固定的CPU核.使用默认的libcontainer引擎时,可以通 ...

  7. c# 之抽象工厂模式

    Email整体项目 Email类 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  8. JAVA基础知识之Set集合

    Set集合的基本特征是不记录添加顺序,不允许元素重复(想想是为什么).最常用的实现类是HashSet. 本文将要介绍以下内容 HashSet类 HashSe的特征 HashSet的equals和has ...

  9. LINUX 产生PPM 驱动例子

    APP: //author:DriverMonkey //phone:13410905075 //mail:bookworepeng@Hotmail.com //qq:196568501 #inclu ...

  10. NOI剑客决斗

    http://acm.nyist.net/JudgeOnline/problem.php?pid=110 剑客决斗 时间限制:5000 ms  |  内存限制:65535 KB 难度:5   描述 在 ...