笔记要点

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

出错分析

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

工程重新组织

本节测试代码 Test_tp04

  1. package com.test;
  2. import com.bean.*;
  3. import com.dao.*;
  4. import org.apache.*;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7.  
  8. public class Test_tp04 {
  9. //创建一个模板,直接返回一个新建的SqlSessionFactory
  10. public SqlSessionFactory getSqlSessionFactory() throws IOException {
  11. String resource = "mybatis-config.xml";
  12. InputStream inputStream=Resources.getResourceAsStream(resource);
  13. return new SqlSessionFactoryBuilder().build(inputStream);
  14. }
  15. @Test //第四节测试,测试接口式编程
  16. public void test01() throws IOException{
  17. //1.获取sqlSessionFactory对象
  18. SqlSessionFactory sqlSessionFactory = getSqlSessionFactory(); //调用模板的方法
  19.  
  20. //2.获取一个SqlSession对象
  21. SqlSession openSession = sqlSessionFactory.openSession();
  22.  
  23. try {
  24. //3.获取接口的实现类
  25. EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
  26. Employee employee = mapper.getEmpById(1);
  27. System.out.println(mapper.getClass());
  28. System.out.println(employee);
  29. } finally {
  30. openSession.close();
  31. }
  32. }
  33. }

测试demo结果展示

  1. DEBUG 11-27 12:12:24,463 ==> Preparing: select id,last_name lastname,gender,email from tbl_employee where id = ? (BaseJdbcLogger.java:145)
  2. DEBUG 11-27 12:12:24,479 ==> Parameters: 1(Integer) (BaseJdbcLogger.java:145)
  3. DEBUG 11-27 12:12:24,495 <== Total: 1 (BaseJdbcLogger.java:145)
  4. class com.sun.proxy.$Proxy4
  5. 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. ubuntu18.10 修改MySQL编码为utf-8

    首先登陆mysql的交互shell,输入下面的命令查看当前数据库的编码方式 show variables like '%character%'; 从上面可以看出,mysql数据库装上之后初始并不均是u ...

  2. PHP中的重载技术

    PHP中的重载技术 通常面向对象语言的重载技术 其基本语法是这样的: 在一个类中,有多个同名的方法,每个方法的参数不同而已.这种现象就称为“重载”. 参数不同可以是:数量个数不同,或类型不同,或顺序不 ...

  3. PHP正则匹配价格

    /** * 匹配价格 * @param $price * @return bool */ public static function checkPrice($price) { // 不能小于0 if ...

  4. Ubuntu12.10添加matlab启动器

    首先我们要了解,Ubuntu 的 Dash 里所有程序都是在 /usr/share/applications 中的,所以我们的思路很简单——建一个类似于“快捷方式”一样的东西扔进去就好了. 1. 终端 ...

  5. SpringCloud用Zookeeper做服务注册与发现中心代码实现

    一:Zookeeper用的是3.5.5版本,SpringBoot用的是2.1.6版本,SpringCloud用的是Greenwich.SR2版本,JDK用的是1.8: 服务提供者product-ser ...

  6. kill 掉 占据端口的进程

    netstat -anp | grep 80kill -9 进程号

  7. Variational Auto-encoder(VAE)变分自编码器-Pytorch

    import os import torch import torch.nn as nn import torch.nn.functional as F import torchvision from ...

  8. Cookie,Session,Token详解

    Cookie,Session,Token详解 Cookie : ​ 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能. ​ Cookie由服务器生成,发 ...

  9. javascript加超链接

    JavaScript link 方法:给字符串加上超链接JavaScript link 方法link 方法返回使用 HTML a 标签属性定义的(斜体)字符串.其语法如下:str_object.lin ...

  10. shell从简单到脱坑

    1.计算1-100的和(seq 1 100 使用反引号括起来的比较坑) #!/bin/bash ` do sum=$[$i+$sum] done echo $sum 2.编写shell脚本,要求输入一 ...