【UserDao.java 】

  1. package com.Higgin.Mybatis.dao;
  2.  
  3. import com.Higgin.Mybatis.po.User;
  4.  
  5. public interface UserDao {
  6. //根据id查询用户信息
  7. public User findUserById(int id) throws Exception;
  8.  
  9. //添加用户信息
  10. public void insertUser(User user) throws Exception;
  11.  
  12. //删除用户信息
  13. public void deleteUser(int id) throws Exception;
  14. }

【UserDaoImpl.java】

  1. package com.Higgin.Mybatis.dao;
  2.  
  3. import org.apache.ibatis.session.SqlSession;
  4. import org.apache.ibatis.session.SqlSessionFactory;
  5.  
  6. import com.Higgin.Mybatis.po.User;
  7.  
  8. public class UserDaoImpl implements UserDao{
  9. //需要向Dao实现类中注入SqlSessionFactory
  10. private SqlSessionFactory sqlSessionFactory;
  11. //这里通过构造方法注入
  12. public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
  13. this.sqlSessionFactory=sqlSessionFactory;
  14. }
  15.  
  16. @Override
  17. public User findUserById(int id) throws Exception {
  18. SqlSession sqlSession=sqlSessionFactory.openSession();
  19. User user=sqlSession.selectOne("test.findUserById",id);
  20. //补充一个释放资源的代码
  21. sqlSession.close();
  22. return user;
  23. }
  24.  
  25. @Override
  26. public void insertUser(User user) throws Exception {
  27. SqlSession sqlSession=sqlSessionFactory.openSession();
  28. sqlSession.insert("test.insertUser",user);
  29. //提交事务,必须!
  30. sqlSession.commit();
  31. //补充一个释放资源的代码
  32. sqlSession.close();
  33. }
  34.  
  35. @Override
  36. public void deleteUser(int id) throws Exception {
  37. SqlSession sqlSession=sqlSessionFactory.openSession();
  38. sqlSession.delete("test.deleteUser",id);
  39. //提交事务
  40. sqlSession.commit();
  41. //补充一个释放资源的代码
  42. sqlSession.close();
  43. }
  44. }

【UserDaoTest.java】

【建立Junit测试方法流程】

1.新建一个将要测试类,右击,选择Junit Test Case(最后会生成一个专门的测试类,不需自己新建一个test类)

2.如下图选择,点击Next

3.选出需要测试的方法

4.会自动生成以下模板代码

代码如下

  1. package com.Higgin.Mybatis.dao.test;
  2.  
  3. import java.io.InputStream;
  4. import org.apache.ibatis.io.Resources;
  5. import org.apache.ibatis.session.SqlSessionFactory;
  6. import org.apache.ibatis.session.SqlSessionFactoryBuilder;
  7. import org.junit.Before;
  8. import org.junit.Test;
  9. import com.Higgin.Mybatis.dao.UserDao;
  10. import com.Higgin.Mybatis.dao.UserDaoImpl;
  11. import com.Higgin.Mybatis.po.User;
  12.  
  13. public class UserDaoTest{
  14.  
  15. private SqlSessionFactory sqlSessionFactory;
  16.  
  17. //此方法在执行testFindUserById() 之前执行
  18. @Before
  19. public void setUp() throws Exception {
  20. //创建sqlSessionfactory
  21. //MyBatis配置文件
  22. String resource="SqlMapConfig.xml";
  23. //得到配置文件流
  24. InputStream inputStream=Resources.getResourceAsStream(resource);
  25. //创建会话工厂,传入MyBatis的配置文件信息
         //这里千万别写成SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        //不然会NullPointerException报错
    sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
  26. }
  27.  
  28. @Test
  29. public void testFindUserById() throws Exception {
  30. //创建UserDao的对象
  31. UserDao userDao =new UserDaoImpl(sqlSessionFactory);
  32. //调用UserDao的方法
  33. User user =userDao.findUserById(4);
  34.  
  35. System.out.println(user.toString());
  36. }
  37.  
  38. }

【运行结果】

【原始Dao方法的问题总结】

1.dao接口实现类方法中存在大量的模板方法,应该设法将这些模板的代码提取出来,减少工作量。

2.调用sqlSession方法时,将statement的id硬编码了

3.调用sqlSession方法是传入的变量,由于sqlSession方法使用泛型,及时变量传入错误,在编译阶段也不会 报错,不利于开发。

07_MyBatis原始的Dao编写方法的更多相关文章

  1. Mybatis的原始dao开发方法

    在进入主题之前先提一下sqlSession.sqlSession是一个面向用户(程序员)的接口. sqlSession中提供了很多操作数据库的方法,如: selectOne(返回单个对象).selec ...

  2. Mybatis 原始dao CRUD方法

    用到的相关jar包及所用版本如下: 其中的Mybatis可以到github.com的网站下载 <project xmlns="http://maven.apache.org/POM/4 ...

  3. mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)

    5 mybatis开发dao的方法 5.1 SqlSession使用范围 5.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂 ...

  4. 【MyBatis学习03】原始dao开发方法及其弊端

    上一篇博文总结了一下mybatis的入门,接下来就要开发dao方法了,这篇博文主要总结一下mybatis中原始dao开发的方法,最后并总结一下原始dao开发方法的弊端.mybatis中dao开发应该使 ...

  5. MyBatis学习--mybatis开发dao的方法

    简介 使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法. 主要概念介绍: MyBatis中进行Dao开发时候有几个重要的类,它们是SqlSessionFac ...

  6. 11Mybatis_mybatis开发Dao的方法

    在介绍开发Dao的方法之前先介绍下SqlSession. 1.先介绍一下SqlSessionFactoryBuilder:通过SqlSessionFactoryBuilder创建会话工厂SqlSess ...

  7. 四 mybatis开发dao的方法

    mybatis开发dao的方法 1.1     SqlSession使用范围 1.1.1     SqlSessionFactoryBuilder //以流的方式读取总的配置文件 Reader rea ...

  8. mybatis系列-04-mybatis开发dao的方法

    4.1     SqlSession使用范围 4.1.1     SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSession ...

  9. mybatis开发dao的方法——(三)

    ------------------------1.    SqlSession使用范围------------------- 1.1     SqlSessionFactoryBuilder 通过S ...

随机推荐

  1. 使用Windows Azure创建Linux系统虚拟机-下

    如何将数据磁盘附加到新虚拟机 您的应用程序可能需要存储数据.要这样设置,您可以将数据磁盘添加到先前创建的虚拟机.要做到这一点,最简单的方法是将空数据磁盘连接到本机. 在Linux上,磁盘资源通常由Az ...

  2. linux进程,作业,守护进程,进程间同步

    ps axj命令查看系统中的进程.参数a表示不仅列当前用户的进程,也列出所有其他用户的进程,参数x表示不仅列有控制终端的进程,也列出所有无控制终端的进程,参数j表示列出与作业控制相关的信息: 凡是TP ...

  3. 安卓问题http://blog.csdn.net/xb12369/article/details/50510302

  4. 包含块、层叠上下文、BFC

    包含块 什么是包含块?简单来说,就是决定一个元素大小和定位的元素.一个元素会为它的内部元素创建包含块,但也不能说元素的包含块就是它的父元素: 1.position:fixed 的元素 包含块是当前可视 ...

  5. openCV 2.4.13 iOS background_segm.hpp 'list' file not found

    最近下载了最新版的OpenCV的Framework. 导入到项目里边,编译.然后就出现了问题 /opencv2.framework/Headers/video/background_segm.hpp: ...

  6. DataSet、DataTable和DataGridView知识备忘

    datatable中,获取第i行j列的单元格内容:             string str = DataSet.Tables[0].Rows[i][j].ToString():datagridv ...

  7. 有关UIImageView+AFNetworking 下载图片的线程问题

    今天写了一个demo,从服务器获取图片,然后显示在cell上,大家都知道cell的重用机制,当往下拉的时候,上面的cell遮住了,下面的cell就会重用被遮住的cell, 贴代码: NSString ...

  8. java18 任务调度

    任务调度; Timer类, /** 了解 Timer() schedule(TimerTask task, Date time) schedule(TimerTask task, Date first ...

  9. MyEclipse Hibernate Reverse Engineering 找不到项目错误

    解决办法:在项目下找到.project文件,在最后的natures标签加入下面红色的一行代码. <natures>        <nature>com.genuitec.ec ...

  10. jedis访问redis学习笔记

    最近在学习redis,在网上查了些文章,利用他人已有的知识,总结写下了这篇文章,大部分内容还是引用别人的文章内容.经过测试发现spring-data-redis现在有的版本只能支持reids 2.6和 ...