MyBatis3-topic04,05 -接口式编程
笔记要点
/**接口式编程:
* 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 -接口式编程的更多相关文章
- MyBatis3系列__02接口式编程
hello world MyBatis3支持面向接口编程: 具体做法如下,将helloWorld中的EmployeeMapper.xml文件进行更改: <?xml version="1 ...
- mybaits接口式编程
Mybatis是接口式编程实现对.xml中sql语句的执行,其过程如下(取自慕课网视频<通过自动回复机器人学Mybatis---加强版>): 1.加载配置信息2.通过加载配置信息加载一个代 ...
- 通过自动回复机器人学Mybatis 笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- MyBatis的接口式编程Demo
很久没细看过MyBatis了,时间一长就容易忘记. 下面是一个接口式编程的例子. 这里的例子一共分为4步: 1 首先要有一个namespace为接口的全类名的映射文件,该例中是 IMyUser.xml ...
- Mybatis笔记二:接口式编程
目录 旧方法的弊端 接口式编程 接口式编程的好处 接口式编程的增删改查 旧方法的弊端 在Mybatis笔记一中,我们使用命名空间+id的方式实现了Mybatis的执行,不过这里的命名空间是我们随便写的 ...
- MyBatis源码解析【7】接口式编程
前言 这个分类比较连续,如果这里看不懂,或者第一次看,请回顾之前的博客 http://www.cnblogs.com/linkstar/category/1027239.html 修改例子 在我们实际 ...
- 通过自动回复机器人学Mybatis笔记:接口式编程
[接口式编程]尚未遇见Spring --> 代码量反而增加 1.增加约定,减少犯错的可能(不用直接去写字符串 修改点1:命名空间 修改点2:增加接口,方法名与配置文件中的id对应 package ...
- mybatis学习(三)——接口式编程
对于上一节中的查询我们还可以通过接口的方式进行编程,开发环境和上一节一样 1.全局配置文件mybatis_config.xml(和上一节一样) <?xml version="1.0&q ...
- MyBatis入门(二)接口式编程
在 MyBatis入门(一) 的基础之上编写接口 将接口和Mapper文件进行绑定,会为接口创建一个代理对象,代理对象去执行增删改查 (1)编写接口 public interface EmpDao ...
随机推荐
- 【转载】jmeter非GUI执行脚本+动态线程+生成HTML报告
标明文章出处: https://blog.csdn.net/qq_38915739/article/details/83018465 本次记录是在工作中为了能更好的用jmeter进行压力测试,进行 ...
- [SQL SERVER] - 数据表 保存 / 查看 海量文本的方法
背景 WCF + EF + Sql Server 提供服务,包含一个数据上传功能,该方法接收客户端上传的对象列表(多张表单,每个表单包含千余条相关记录). 瓶颈 WCF 默认有文件大小(4M)和超时限 ...
- Python30之文件2(文件系统)
一.在python中对于文件系统的访问一般使用的是os模块.python是跨平台的,因此在使用os模块时,不需要关心是在什么系统下使用的 import os >>> os.listd ...
- Python13之元组(带上枷锁的列表)
一.元组定义 元组一旦建立,元组内的元素不允许修改和删除,这就是元组和列表最大的区别 当元组中仅有一个元素时,需要将元素后面加上逗号,或者不用括号也可以. tuple1 = (12,3234,5435 ...
- 2019秋季PAT甲级_备考总结
2019 秋季 PAT 甲级 备考总结 在 2019/9/8 的 PAT 甲级考试中拿到了满分,考试题目的C++题解记录在这里,此处对备考过程和考试情况做一个总结.如果我的方法能帮助到碰巧点进来的有缘 ...
- Python学习路线图【转载】
文章来源:https://blog.csdn.net/u014044812/article/details/88079011
- WUSTOJ的“讨论”和“私聊”功能如何使用
反正我是过了1年多才知道有讨论这个功能,2年多才知道有私聊功能. 不知道大家都是什么时候发现的... 讨论还好,在FAQ界面的下边有提示,但是私聊我真没看到哪儿有提示...是我不小心点进去的. 讨论功 ...
- PAT甲级题分类汇编——理论
本文为PAT甲级分类汇编系列文章. 理论这一类,是让我觉得特别尴尬的题,纯粹是为了考数据结构而考数据结构.看那Author一栏清一色的某老师,就知道教数据结构的老师的思路就是和别人不一样. 题号 标题 ...
- List、dictionary、hashtable、ArrayList集合
集合的引用命名空间在 system.Collections下 1.为什么引入集合 因为数组长度是固定的,为了建立一个动态的"数组",所以引入了集合. 2.为什么引入ArrayLis ...
- .NET调用腾讯云API实例
最近项目有用到腾讯云的身份识别接口,话不多说,直接上代码: private void IDCardVerification(HttpContext context) { string imgStr = ...