在上一节《mybatis快速入门》的基础上对IWebUserDao的实现类进行了优化,暂时命名为WebUserDaoMybatis2.java

  1. package com.mozi.dao.impl;
  2.  
  3. import java.util.List;
  4.  
  5. import org.apache.ibatis.session.SqlSession;
  6. import org.apache.ibatis.session.SqlSessionFactory;
  7.  
  8. import com.mozi.dao.IWebUserDao;
  9. import com.mozi.entity.WebUser;
  10.  
  11. public class WebUserDaoMybatis2 implements IWebUserDao {
  12. private SqlSessionFactory sqlSessionFactory;
  13. // 需要向dao实现类中注入SqlSessionFactory
  14. // 通过构造方法注入
  15. public WebUserDaoMybatis2(SqlSessionFactory sqlSessionFactory) {
  16. this.sqlSessionFactory = sqlSessionFactory;
  17. }
  18.  
  19. @Override
  20. public List<WebUser> findUserByName(String username) {
  21. SqlSession sqlSession = sqlSessionFactory.openSession();
  22. List<WebUser> list = sqlSession
  23. .selectList("src.main.resource.userMapper.findUserByName", username);
  24.  
  25. // 提交事务
  26. sqlSession.commit();
  27. // 释放资源
  28. sqlSession.close();
  29. return list;
  30. }
  31.  
  32. @Override
  33. public void insertUser(WebUser user) {
  34. SqlSession sqlSession = sqlSessionFactory.openSession();
  35. // 执行插入操作
  36. sqlSession.insert("src.main.resource.userMapper.insertUser", user);
  37. // 提交事务
  38. sqlSession.commit();
  39. // 释放资源
  40. sqlSession.close();
  41. }
  42.  
  43. @Override
  44. public void deleteUser(String id) {
  45. SqlSession sqlSession = sqlSessionFactory.openSession();
  46. // 执行插入操作
  47. sqlSession.delete("src.main.resource.userMapper.deleteUser", id);
  48. // 提交事务
  49. sqlSession.commit();
  50. // 释放资源
  51. sqlSession.close();
  52. }
  53.  
  54. @Override
  55. public void updateUser(WebUser user) {
  56. SqlSession sqlSession = sqlSessionFactory.openSession();
  57. // 执行插入操作
  58. sqlSession.update("src.main.resource.userMapper.updateUser", user);
  59. // 提交事务
  60. sqlSession.commit();
  61. // 释放资源
  62. sqlSession.close();
  63. }
  64.  
  65. }

添加测试类 WebUserDaoImplTest.java

  1. package com.mozi.test.java;
  2.  
  3. import static org.junit.Assert.*;
  4.  
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.util.List;
  8.  
  9. import org.apache.ibatis.io.Resources;
  10. import org.apache.ibatis.session.SqlSessionFactory;
  11. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  12. import org.junit.Before;
  13. import org.junit.Test;
  14.  
  15. import com.mozi.dao.IWebUserDao;
  16. import com.mozi.dao.impl.WebUserDaoJdbc;import com.mozi.dao.impl.WebUserDaoMybatis2;import com.mozi.entity.WebUser;
  17.  
  18. public class WebUserDaoImplTest {
  19.  
  20. private static SqlSessionFactory sqlSessionFactory = null;
  21.  
  22. private static IWebUserDao dao = null;
  23.  
  24. static{
  25. String resource = "SqlMapConfig.xml";
  26. InputStream inputStream = null;
  27. try {
  28. inputStream = Resources.getResourceAsStream(resource);
  29. } catch (IOException e) {
  30. // TODO Auto-generated catch block
  31. e.printStackTrace();
  32. }
  33. sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
  34. dao = new WebUserDaoMybatis2(sqlSessionFactory);
  35. }
  36.  
  37. @Test
  38. public void findUserByName() {
  39. List<WebUser> userList = dao.findUserByName("aa");
  40. System.out.println(userList);
  41. assertNotNull(userList);
  42. }
  43.  
  44. @Test
  45. public void insertUser() {
  46. WebUser user = new WebUser();
  47. user.setName("5");
  48. user.setTrueName("lisi");
  49. user.setPass("5");
  50. dao.insertUser(user);
  51. }
  52.  
  53. @Test
  54. public void deleteUser() {
  55. dao.deleteUser("5");
  56. }
  57.  
  58. @Test
  59. public void updateUser() {
  60. WebUser user = new WebUser();
  61. user.setName("5");
  62. user.setTrueName("lisi");
  63. user.setPass("666");
  64.  
  65. dao.updateUser(user);
  66. }
  67. }

mybatis 入门优化的更多相关文章

  1. mybatis 入门进阶之 mapper

    由于上节 <mybatis 入门优化>中的dao实现类耦合了user.xml中的statment的id,例如:src.main.resource.userMapper.findUserBy ...

  2. MyBatis入门基础(一)

    一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记 ...

  3. mybatis系列笔记(1)---mybatis入门

    mybatis入门   MyBatis是什么? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了goog ...

  4. mybatis框架(1)---mybatis入门

    mybatis入门   MyBatis是什么? MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了goog ...

  5. Mybatis系列(一):Mybatis入门

    一.Mybatis是什么 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改 ...

  6. MyBatis 入门(一)

    1. MyBatis 概述 MyBatis 是一个半自动化的持久层框架; 核心SQL,开发人员可以进行优化; SQL和Java编码分开,功能边界清晰,一个专注业务,一个专注数据; JDBC: SQL ...

  7. MyBatis入门基础

    转自http://www.cnblogs.com/selene/p/4604605.html 话不多说,先看看原始的JDBC程序代码,看看这样的代码存在什么样子的问题. package com.uti ...

  8. Mybatis 入门到理解篇

    MyBatis         MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code, ...

  9. MyBatis1:MyBatis入门

    MyBatis是什么 MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的: MyBatis is a first class persistence fra ...

随机推荐

  1. node.js + mongodb

    node.js + mongodb 这次内容是结合bootstrap把登陆注册做好,还有就是express的中间件等问题. 看这篇博客之前建议先看我上篇写的那篇博客http://www.cnblogs ...

  2. 分区表在安装系统(MBR)丢失或损坏

    操作系统能识别出硬盘中的各个不同的分区,是靠硬盘分区表(MBR)来识别的. 硬盘分区表中记录了各个分区的位置和大小以及类型等信息,假设这个分区表破坏了,那么这块硬盘里面的分区就会丢失.系统是无法在浏览 ...

  3. Java 多并发之原子访问(Atomic Access)

    在编程中,一个原子操作是只会出现一次的.一个原子操作在中间不会停止:要么全部发生要么一点也不发生.我们只有在原子操作完成之后才会看到原子操作的具体影响. 甚至是非常简单的表达式能够构造分解为简单操作的 ...

  4. C# 编译器选项 /platform(指定输出平台)32位程序运行到x64平台的问题

    如果说你编译的exe运行时报错: “尝试读取或写入受保护的内存.这通常指示其他内存已损坏” 这很有可能是你是以非托管的方式错误地引用了64位的API中去. 为什么会这样? 那你就要考虑VS的编译器选项 ...

  5. Grunt使用入门

    Grunt使用入门 (by vczero) 一.前言 项目中一直在使用Grunt,只是对Grunt的基本使用,却未系统的总结过.为什么要构建工具?一句话:自动化.对于需要反复重复的任务,例如压缩(mi ...

  6. Oracle的SOME,ANY和ALL操作

    平时很少用的这几个操作,今天遇到了.于是又看了一下文档. SOME和ANY一样,是比较宽松的,类似于OR.满足其中任何一个都可以. ALL要求严格一些,类似于AND,必须全部满足才可以. 不能单独使用 ...

  7. Installutil.exe的位置和路径

    安装程序工具使您得以通过在执行指定程序集中的安装程序组件来安装和卸载服务器资源.此工具与 System.Configuration.Install命名空间中的类一起工作.安转的位置和路径在:C:\WI ...

  8. TreeMap与TreeSet

    TreeMap与TreeSet TreeSet底层则采用一个NavigableMap来保存TreeSet集合的元素.实际上,由于NavigableMap只是一个接口,因此底层依然是使用TreeMap来 ...

  9. Scientific Toolworks Understand for linux安装方法

    1.首先从官网http://www.scitools.com/download/index.php下载Linux版本 2.解压到安装目录下: 32位:gzip -cd Understand-3.1.6 ...

  10. 线程:Semaphore实现信号灯

    Semaphore是一个计数的信号量,可以维护当前访问自身的线程个数,并提供了同步机制.使用Semaphore可以控制同时访问资源的线程个数,例如实现一个文件允许的线程访问数.打个通俗的比喻,Sema ...