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 ...
随机推荐
- Xmanager教程
简介 Xmanager是市场上领先的PC X服务器,可将X应用程序的强大功能带入Windows环境. 提供了强大的会话管理控制台,易于使用的X应用程序启动器,X服务器配置文件管理工具,SSH模块和高性 ...
- linux系统卡顿 性能分析
systemtrap 是一个内核开发者要掌握的工具. linux performance analysis 系统瓶颈性能分析软件
- vue 跨域简记
0.服务端设置 app.use(function(req, res, next){ //设置跨域访问 res.header('Access-Control-Allow-Origin', '*'); r ...
- Echart timeline 高级用法!!!!
一.前言 在使用 echart timeline 来着图形可视化时,我使用的和官网也不一样,因为我有使用映射关系.比如我将 no 映射到X轴,将 d4 映射到Y轴. 二.参考 echart官网:htt ...
- twemproxy配置
redis多主从,多节点,读写分离架构. nutcracker.yml的twemproxy配置 #redis_main是twemproxy所控制redis主从集群逻辑名称 redis_main: #t ...
- [ES] - 图形化界面工具
推荐更新: Windows平台为 ElasticSearch 6.x 安装 Head 客户端插件 elasticsearch-head A web front end for an Elasticse ...
- JAVA httpURLConnection curl
// 文件路径 D:\ApacheServer\web_java\HelloWorld\src\com\test\TestHttpCurl.java package com.test; import ...
- Resin 与 Tomcat 服务器对比
Resin 与 Tomcat对比(个人总结) 图片来源Tomcat PK Resin 上图对比发现Tomcat对于Resin来说,有诸多优点,但是Resin也有很多优点. 比方说: 速度比较 re ...
- Word 自动图文集使用方法
1. 自动图文集简介 使用自动图文集当你在文档中输入你所需的模板名称后,就能立刻变出该内容出来. 1.1 效果演示 1:个人简历 如下图所示,在Word文档中输入了"个人简历"后, ...
- 【leecode】 Course Schedule
class Solution { public: static bool canFinish(int numCourses, vector<pair<int, int>>&am ...