笔记要点
出错分析与总结
工程组织

1.定义接口

public interface EmployeeMapper {
//多条记录封装到一个map中: Map<Integer,Employee>,键是这条记录的主键,值时记录封装后的JavaBean
@MapKey("id") //告诉Mybatis 封装Map的时候,使用哪个属性作为map的key,当然要对应你的下一行的Integer
public Map<Integer,Employee> getEmpsByLastNameLikeRetMap( String lastName); //select 的返回值类型是Map ,返回一条记录的Map,key是列名,值就是对应的值;
public Map<String,Object> getEmpsByIdReturnMap(Integer id); //select 的返回值类型是List
public List<Employee> getEmpsByLastNameLike( String lastName); //多个参数处理,传入map
public Employee getEmpByMap(Map<String,Object> map);
}

2.定义XML映射文件  EmployeeMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dao.EmployeeMapper"><!--namespace: 名称空间;id: 唯一标识; resultType:返回值类型; --> <!--public Map<Integer,Employee> getEmpsByLastNameLikeRetMap( String lastName);
如果返回的是一个集合,resultType要写Map中值 元素的类型:Employee
-->
<select id="getEmpsByLastNameLikeRetMap" resultType="com.bean.Employee" databaseId="mysql">
select * from tbl_employee
where last_name like #{lastName}
</select> <!--public Map<String,Object> getEmpsByIdReturnMap(Integer id);
记得更改,resultType="map"
-->
<select id="getEmpsByIdReturnMap" resultType="map" databaseId="mysql">
select * from tbl_employee
where id =#{id}
</select> <!--public List<Employee> getEmpsByLastNameLike( String lastName);
如果返回的是一个集合,resultType要写集合中元素的类型;
-->
<select id="getEmpsByLastNameLike" resultType="com.bean.Employee" databaseId="mysql">
select * from tbl_employee
where last_name like #{lastName}
</select> <!--public Employee getEmpByMap(Map<String,Object> map);-->
<select id="getEmpByMap" resultType="com.bean.Employee" databaseId="mysql">
select * from ${table_name}
where id = ${id} and last_name = #{lastName}
</select>

3.编写测试代码

public class test_tp26 {
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void test06() throws Exception{
//默认是不自动提交数据的,需要我们自己手动提交
SqlSession openSession = getSqlSessionFactory().openSession();
try {
EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); //1.select 返回List列表
List<Employee> like = mapper.getEmpsByLastNameLike("%e%");
for(Employee e:like){
System.out.println(e);
}
System.out.println("*********************"); //2.select 记录封装Map,返回单条记录
Map<String, Object> emps = mapper.getEmpsByIdReturnMap(1);
System.out.println(emps); //{gender=1, last_name=jerry, id=1, email=jerry@163.com}
System.out.println("*********************"); //3.select 记录封装Map,返回多组记录
Map<Integer, Employee> emps1 = mapper.getEmpsByLastNameLikeRetMap("%e%");
for(Map.Entry m: emps1.entrySet()){
System.out.println(m);
}
//{gender=1, last_name=jerry, id=1, email=jerry@163.com}
System.out.println("*********************"); //最后手动提交
openSession.commit();
}finally {
openSession.close();
}
}
}

测试结果

DEBUG 11-29 16:10:26,474 ==>  Preparing: select * from tbl_employee where last_name like ?   (BaseJdbcLogger.java:145)
DEBUG 11-29 16:10:26,493 ==> Parameters: %e%(String) (BaseJdbcLogger.java:145)
DEBUG 11-29 16:10:26,505 <== Total: 2 (BaseJdbcLogger.java:145)
Employee{id=1, lastname='jerry', email='jerry@163.com', gender='1'}
Employee{id=5, lastname='葫芦娃e', email='qwq@qq.com', gender='1'}
*********************
DEBUG 11-29 16:10:26,506 ==> Preparing: select * from tbl_employee where id =? (BaseJdbcLogger.java:145)
DEBUG 11-29 16:10:26,506 ==> Parameters: 1(Integer) (BaseJdbcLogger.java:145)
DEBUG 11-29 16:10:26,507 <== Total: 1 (BaseJdbcLogger.java:145)
{gender=1, last_name=jerry, id=1, email=jerry@163.com}
*********************
DEBUG 11-29 16:10:26,508 ==> Preparing: select * from tbl_employee where last_name like ? (BaseJdbcLogger.java:145)
DEBUG 11-29 16:10:26,508 ==> Parameters: %e%(String) (BaseJdbcLogger.java:145)
DEBUG 11-29 16:10:26,509 <== Total: 2 (BaseJdbcLogger.java:145)
1=Employee{id=1, lastname='jerry', email='jerry@163.com', gender='1'}
5=Employee{id=5, lastname='葫芦娃e', email='qwq@qq.com', gender='1'}
*********************

MyBatis3_[tp-26-27]_映射文件_select_返回List_记录封装Map:返回单个元素的Map或者整体Map集合的更多相关文章

  1. mybatis3.1-[topic-18-20]-_映射文件_参数处理_单个参数&多个参数&命名参数 _POJO&Map&TO 三种方式及举例

    笔记要点出错分析与总结 /**MyBatis_映射文件_参数处理_单个参数&多个参数&命名参数 * _POJO&Map&TO 三种方式及举例 _ * 单个参数 : #{ ...

  2. Mybatis3.1-[tp_34-35]-_映射文件_select_resultMap关联查询_collection定义关联集合封装规则_collection分步查询_延迟加载

    笔记要点出错分析与总结工程组织 1.定义接口 interface DepartmentMapper package com.dao; import com.bean.Department; publi ...

  3. Mybatis3.1-[tp_32-33]-_映射文件_select_resultMap关联查询_association分步查询_延迟加载

    笔记要点出错分析与总结 工程组织 1.定义接口 DepartmentMapper package com.dao; import com.bean.Department; public interfa ...

  4. MyBatis 3.0_[tp-24-25]_映射文件_参数处理_#与$取值区别_#{}更丰富的用法

    笔记要点出错分析与总结 /**================Mybatis参数值的获取:#和$符号的区别=============== * #{}:可以获得map中的值或者pojo对象属性的值; * ...

  5. Mybatis3.1-[tp_36-37]-_映射文件_select_resultMap关联查询__分步查询传递多列值&fetchType_discriminator鉴别器

    _分步查询传递多列值&fetchType_discriminator鉴别器 笔记要点出错分析与总结 Department.java bean public class Department { ...

  6. 使用 hibernate 根据映射文件生成数据库表

    为了更好的显示效果,可以在hibernate.cfg.xml配置文件的<session-factory>标签里加入以下内容: 显示sql语句和格式化显示sql语句: <propert ...

  7. .NET 4.0中使用内存映射文件实现进程通讯

    操作系统很早就开始使用内存映射文件(Memory Mapped File)来作为进程间的共享存储区,这是一种非常高效的进程通讯手段.Win32 API中也包含有创建内存映射文件的函数,然而,这些函数都 ...

  8. Java-MyBatis-MyBatis3-XML映射文件:insert, update 和 delete

    ylbtech-Java-MyBatis-MyBatis3-XML映射文件:insert, update 和 delete 1.返回顶部 1. insert, update 和 delete 数据变更 ...

  9. 第3章 文件I/O(7)_高级文件操作:存储映射

    8. 高级文件操作:存储映射 (1)概念: 存储映射是一个磁盘文件与存储空间的一个缓存相映射,对缓存数据的读写就相应的完成了文件的读写. (2)mmap和munmap函数 头文件 #include&l ...

随机推荐

  1. Selenium WebDriver原理

    WebDriver原理 WebDriver是按照Server-Client的经典设计模式设计的. Server端就是RemoteServer,可以是任意的浏览器,当我们的脚本启动浏览器后,该浏览器就是 ...

  2. VC.DNS解析(winsock)

    1.尝试了 gethostbyname(...) 和 Qt598中的qhostinfo::fromname(...),都可以解析出来IP,但是有一个问题:域名指向的IP改变了,这两种方式需要等较长时间 ...

  3. gitlab 重置密码

    sudo gitlab-rails console production --------------------------------------------------------------- ...

  4. [转帖]InfiniBand, RDMA, iWARP, RoCE , CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念

    InfiniBand, RDMA, iWARP, RoCE , CNA, FCoE, TOE, RDMA, iWARP, iSCSI等概念 2017-12-15 15:37:00 jhzh951753 ...

  5. Word 自动图文集使用方法

    1. 自动图文集简介 使用自动图文集当你在文档中输入你所需的模板名称后,就能立刻变出该内容出来. 1.1 效果演示 1:个人简历 如下图所示,在Word文档中输入了"个人简历"后, ...

  6. vue项目过程的理解: main.js文件理解 router.js文件理解 以及组件 路由 等之间的关系

    https://blog.csdn.net/qq_26229005/article/details/85040393 内容太多了,有空再整理

  7. java连接腾讯云上的redis

    目录 腾讯云上的配置 redis连接单机和集群 依赖 pom.xml redis参数的配置文件 遗留问题 腾讯云上的配置 在安全组上打开相关的端口即可 "来源" 就是你的目标服务器 ...

  8. nfs挂载文件

    1. 安装必备插件  以防centos7默认没有启动nfs服务 yum -y install nfs-utils rpcbind # 启动 rpcbind 和配置开机自启动 systemctl sta ...

  9. Nokia5130不能上网

    说明 我是一个挺怀旧的人,一直想入手一个好几年前买的Nokia5130. 于是昨天在淘宝上买了一个,花了我一百多.不过早就停产了,买到的自然是翻新机. 收到货的时候,看似一切美好,但是下载了个uc的j ...

  10. git版本控制系统重新认识

    git 版本控制系统 目标:完全搞懂git分布式版本控制系统 搭建git版本控制系统 cvs集中化版本控制系统--集中式管理的服务器 git分布式版本控制系统--会将原始代码仓库镜像下来 新项目使用g ...