MyBatis数据库连接的基本使用-补充

补充1  MyBatis使用过程中,返回值类型可能是Map,不一定是实体类

返回查询结果也可以是一个Map,不一定是实体类

(1)mybatis会先将查询结果返回为一个map,字段名作为key,字段值作为value,保存在map中,后面再转化为实体类

(2)如果不写实体类,就返回一个Map,想得到其中的字段值,需要调用map.get()方法来获取值,缺点就是需要先知道字段名

EmpMapper.xml中配置:

<!-- 返回map类型的结果 -->
  <!-- 也可以将返回结果简写成map,map即为java.util.Map -->
  <select id="findOne" parameterType="int" resultType="java.util.Map">
    SELECT * FROM T_TABLE WHERE ID=#{id}
  </select>

测试代码:

    /**
     * 查询结果为map类型,不返回实体类,返回java.util.Map
     */
    @Test
    public void test4() {
        Map map=session.selectOne("clyang.findOne", 4);
        System.out.println(map);
        //oracle数据库会将字段名自动变成大写,如果要取值需要写成大写
        System.out.println(map.get("NAME"));//使用Map的get方法得到属性值
        session.close();
    }

测试结果:

补充2 解决数据库字段名和实体类属性名不一致

(1)使用别名,将查询后的字段名改别名,别名跟实体类的名字一样

(2)使用resultMap解决

新的实体类,属性名跟表的字段名都不一样:

public class NewEmployee {
  private int empID;
  private String empName;
  private int empAge;

public int getEmpID() {
    return empID;
}
public void setEmpID(int empID) {
    this.empID = empID;
}
public String getEmpName() {
    return empName;
}
public void setEmpName(String empName) {
    this.empName = empName;
}
public int getEmpAge() {
    return empAge;
}
public void setEmpAge(int empAge) {
    this.empAge = empAge;
}
@Override
public String toString() {
    return "NewEmployee [empID=" + empID + ", empName=" + empName + ", empAge=" + empAge + "]";
}

EmpMapper.xml中配置,resultType需改成resultMap,并配置resultMap,告诉返回的字段值如何一一对应到新的实体类:

<!-- 使用resultMap解决表的字段名和实体类的属性名不一致的情况 -->
  <resultMap id="resultMapID" type="entity.NewEmployee">
    <result property="empID" column="id" />
    <result property="empName" column="name" />
    <result property="empAge" column="age" />
  </resultMap>

  <select id="findOneByNewEmp" parameterType="int" resultMap="resultMapID">
  SELECT * FROM T_TABLE WHERE ID=#{id}
  </select>

测试代码:

    /**
     * 当数据表的字段名和实体类不一致时,查询的返回结果为null
     * 可以修改返回结果的别名,让别名和实体类的属性名一致,或者配置文件中配置resultMap,即可解决
     */
    @Test
    public void test5() {
        NewEmployee emp=new NewEmployee();
        emp=session.selectOne("clyang.findOneByNewEmp", 4);
        System.out.println(emp);
        session.close();
    }

测试结果:

原文地址:https://www.cnblogs.com/youngchaolin/p/10353724.html

时间: 2024-07-30 14:28:52

MyBatis数据库连接的基本使用-补充的相关文章

MyBatis数据库连接的基本使用-补充Mapper映射器

补充 Mapper映射器的使用: Mapper映射器,google添加.Mapper映射器是将mapper.xml中配置的sql id,parameterType和resultMap按照规则一一映射到接口中,后续MyBatis创建完接口实例后,可以直接调用对象中的方法操作数据库,其底层还是调用了sqlSession的 API (1)什么是Mapper映射器 符合映射文件要求的一个接口:Mybatis会生成符合该接口要求的对象 (2)接口要求 a 方法名要与mapper.xml配置文件中sql的i

MyBatis数据库连接的基本使用

MyBatis部分: 本部分内容只主要体现Mybatis的特点. (1)MyBatis是什么? 开源的持久层框架,MyBatis的底层仍然是JDBC (2)编程步骤 step1 Maven项目 pom.xml导包mybatis,ojdbc,junit,mysql驱动等 <dependencies> <!--导入junit测试包 --> <dependency> <groupId>junit</groupId> <artifactId>

myBatis数据库连接配置错误

一.控制台错误提示信息:org.springframework.jdbc.CannotGetJdbcConnectionException : nested exception is org.apache.commons.dbcp.SQLNestedException 六月 27, 2016 3:13:45 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet [Spri

mybatis动态sql之foreach补充(三)

public List<Employee> getEmpByForeach4(@Param("map") Map<String,Object> map); 如果传入的是Map, <select id="getEmpByForeach4" resultType="com.gong.mybatis.bean.Employee"> select * from tbl_employee where id in <

Mybatis深入之数据库连接池原理

Mybatis深入之数据库连接池原理 简介 主要记录Mybatis数据库连接池实现原理.如何使用连接池来管理数据库连接的.连接池如何向外提供数据库连接.当外部调用使用完成之后是如何将数据库连接放回数据库连接池的. 准备 有前面的相关文章的铺垫.这里就不再从Mybatis数据库相关信息的初始化以及何时创建一个真正的数据库连接并且向外提供使用的.这两方面的过程可以参见Mybatis深入之DataSource实例化过程和Mybatis深入之获取数据库连接两篇文章. 了解Mybatis数据库连接池如何配

Mybatis深入之获取数据库连接

Mybatis深入之获取数据库连接 简介 主要记录Mybatis何时获取数据库连接以及获取数据库连接的过程.难点在于明白在使用Mybatis数据库连接池情况下的数据库连接的获取过程. 何时获取数据库连接 Mybatis只有在真正执行sql操作的时候才会去获取数据库连接.至于如何验证: 不深入源码 简单来讲就是有意将数据库配置信息写成.在一个sql执行过程中看哪一步抛数据库连接异常. public static void main(String[] args) throws Exception {

Mybatis深入之DataSource实例化过程

Mybatis深入之DataSource实例化过程 简介 主要介绍Mybatis启动过程中DataSource实例化的过程.为后面解析一个完整SQL执行过程做个前章. Mybatis中DataSource体系 MybatisDataSource整体简介 Mybatis中关于数据库的类都在org.apache.ibatis.datasource包中 Mybatis配置文件中关于数据库的配置: <environments default="development"> <e

MyBatis入门学习(一)

所须要jar包:mybatis-3.x.x.jar .假设须要和spring整合,还须要增加相关的包 1:看项目文件夹 红颜色不要关心 2:依照步骤: 1:增加jar包 2:创建数据源(configuration.xml)创建数据库(此处省略) <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config

实践补充 Installing Tomcat 7.0.x on OS X

我的 Mac 下是1.6的 SDK,下载 Tomcat 8.0 运行后,访问 http://127.0.0.1:8080 并无反应,而且关闭脚本会报错 : Unsupported major.minor version 51.0 看来安装 Tomcat 8.0 需要至少 JDK 1.7 或 JDK 1.8 才行,不过我的 Mac 上没有提示,我也就不更新了. 故重新下载 Tomcat 6.0 ,按如下操作,一切正常,并能正常访问 8080 端口打开页面. 再次下载 Tomcat 7.0 ,按如下