笔记要点

/**接口式编程:
* 1. 原生: Dao 接口-->Dao接口的实现类
* mybatis: Mapper --> 有一个与之对应的 XXMapper.xml
* 2. SqlSession
* 代表与数据库的一次会话,用完必须关闭资源;
*3.SqlSession 和connection 一样都是非线程安全,不能声明为全局变量;
* 每次使用都需要重新生命.
* 4.mapper接口没有实现类, 但是mybatis 会为这个接口生成一个代理对象:
* (需要先将接口和XML文件进行绑定!)
* EmployeeMapper empMapper=openSession.getMapper(EmployeeMapper.class);
* 5.两个重要的配置文件:
* mybatis的全局配置文件: 包含数据库连接池信息,事物管理器信息,系统文件的信息.....
* SQL映射文件: 保存了每一个SL语句的映射信息,
*/

出错分析

重新组织了工程结构后, mapper.xml内的内容改为:
<select id="getEmpById" resultType="com.bean.Employee">...</select>.
resultType 记得更改为当前DAO的src下的类的路径!

工程重新组织

本节测试代码 Test_tp04

package com.test;
import com.bean.*;
import com.dao.*;
import org.apache.*;
import java.io.IOException;
import java.io.InputStream; public class Test_tp04 {
//创建一个模板,直接返回一个新建的SqlSessionFactory
public SqlSessionFactory getSqlSessionFactory() throws IOException {
String resource = "mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
return new SqlSessionFactoryBuilder().build(inputStream);
}
@Test //第四节测试,测试接口式编程
public void test01() throws IOException{
//1.获取sqlSessionFactory对象
SqlSessionFactory sqlSessionFactory = getSqlSessionFactory(); //调用模板的方法 //2.获取一个SqlSession对象
SqlSession openSession = sqlSessionFactory.openSession(); try {
//3.获取接口的实现类
EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
Employee employee = mapper.getEmpById(1);
System.out.println(mapper.getClass());
System.out.println(employee);
} finally {
openSession.close();
}
}
}

测试demo结果展示

DEBUG 11-27 12:12:24,463 ==>  Preparing: select id,last_name lastname,gender,email from tbl_employee where id = ?   (BaseJdbcLogger.java:145)
DEBUG 11-27 12:12:24,479 ==> Parameters: 1(Integer) (BaseJdbcLogger.java:145)
DEBUG 11-27 12:12:24,495 <== Total: 1 (BaseJdbcLogger.java:145)
class com.sun.proxy.$Proxy4
Employee{id=1, lastname='tom', email='598@qq.com', gender='0'}

MyBatis3-topic04,05 -接口式编程的更多相关文章

  1. MyBatis3系列__02接口式编程

    hello world MyBatis3支持面向接口编程: 具体做法如下,将helloWorld中的EmployeeMapper.xml文件进行更改: <?xml version="1 ...

  2. mybaits接口式编程

    Mybatis是接口式编程实现对.xml中sql语句的执行,其过程如下(取自慕课网视频<通过自动回复机器人学Mybatis---加强版>): 1.加载配置信息2.通过加载配置信息加载一个代 ...

  3. 通过自动回复机器人学Mybatis 笔记:接口式编程

    [接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...

  4. MyBatis的接口式编程Demo

    很久没细看过MyBatis了,时间一长就容易忘记. 下面是一个接口式编程的例子. 这里的例子一共分为4步: 1 首先要有一个namespace为接口的全类名的映射文件,该例中是 IMyUser.xml ...

  5. Mybatis笔记二:接口式编程

    目录 旧方法的弊端 接口式编程 接口式编程的好处 接口式编程的增删改查 旧方法的弊端 在Mybatis笔记一中,我们使用命名空间+id的方式实现了Mybatis的执行,不过这里的命名空间是我们随便写的 ...

  6. MyBatis源码解析【7】接口式编程

    前言 这个分类比较连续,如果这里看不懂,或者第一次看,请回顾之前的博客 http://www.cnblogs.com/linkstar/category/1027239.html 修改例子 在我们实际 ...

  7. 通过自动回复机器人学Mybatis笔记:接口式编程

    [接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...

  8. mybatis学习(三)——接口式编程

    对于上一节中的查询我们还可以通过接口的方式进行编程,开发环境和上一节一样 1.全局配置文件mybatis_config.xml(和上一节一样) <?xml version="1.0&q ...

  9. MyBatis入门(二)接口式编程

    在  MyBatis入门(一) 的基础之上编写接口 将接口和Mapper文件进行绑定,会为接口创建一个代理对象,代理对象去执行增删改查 (1)编写接口 public interface EmpDao ...

随机推荐

  1. 【转载】jmeter非GUI执行脚本+动态线程+生成HTML报告

    标明文章出处: https://blog.csdn.net/qq_38915739/article/details/83018465   本次记录是在工作中为了能更好的用jmeter进行压力测试,进行 ...

  2. [SQL SERVER] - 数据表 保存 / 查看 海量文本的方法

    背景 WCF + EF + Sql Server 提供服务,包含一个数据上传功能,该方法接收客户端上传的对象列表(多张表单,每个表单包含千余条相关记录). 瓶颈 WCF 默认有文件大小(4M)和超时限 ...

  3. Python30之文件2(文件系统)

    一.在python中对于文件系统的访问一般使用的是os模块.python是跨平台的,因此在使用os模块时,不需要关心是在什么系统下使用的 import os >>> os.listd ...

  4. Python13之元组(带上枷锁的列表)

    一.元组定义 元组一旦建立,元组内的元素不允许修改和删除,这就是元组和列表最大的区别 当元组中仅有一个元素时,需要将元素后面加上逗号,或者不用括号也可以. tuple1 = (12,3234,5435 ...

  5. 2019秋季PAT甲级_备考总结

    2019 秋季 PAT 甲级 备考总结 在 2019/9/8 的 PAT 甲级考试中拿到了满分,考试题目的C++题解记录在这里,此处对备考过程和考试情况做一个总结.如果我的方法能帮助到碰巧点进来的有缘 ...

  6. Python学习路线图【转载】

    文章来源:https://blog.csdn.net/u014044812/article/details/88079011

  7. WUSTOJ的“讨论”和“私聊”功能如何使用

    反正我是过了1年多才知道有讨论这个功能,2年多才知道有私聊功能. 不知道大家都是什么时候发现的... 讨论还好,在FAQ界面的下边有提示,但是私聊我真没看到哪儿有提示...是我不小心点进去的. 讨论功 ...

  8. PAT甲级题分类汇编——理论

    本文为PAT甲级分类汇编系列文章. 理论这一类,是让我觉得特别尴尬的题,纯粹是为了考数据结构而考数据结构.看那Author一栏清一色的某老师,就知道教数据结构的老师的思路就是和别人不一样. 题号 标题 ...

  9. List、dictionary、hashtable、ArrayList集合

    集合的引用命名空间在 system.Collections下 1.为什么引入集合 因为数组长度是固定的,为了建立一个动态的"数组",所以引入了集合. 2.为什么引入ArrayLis ...

  10. .NET调用腾讯云API实例

    最近项目有用到腾讯云的身份识别接口,话不多说,直接上代码: private void IDCardVerification(HttpContext context) { string imgStr = ...