07_MyBatis原始的Dao编写方法
【UserDao.java 】
- package com.Higgin.Mybatis.dao;
- import com.Higgin.Mybatis.po.User;
- public interface UserDao {
- //根据id查询用户信息
- public User findUserById(int id) throws Exception;
- //添加用户信息
- public void insertUser(User user) throws Exception;
- //删除用户信息
- public void deleteUser(int id) throws Exception;
- }
【UserDaoImpl.java】
- package com.Higgin.Mybatis.dao;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import com.Higgin.Mybatis.po.User;
- public class UserDaoImpl implements UserDao{
- //需要向Dao实现类中注入SqlSessionFactory
- private SqlSessionFactory sqlSessionFactory;
- //这里通过构造方法注入
- public UserDaoImpl(SqlSessionFactory sqlSessionFactory){
- this.sqlSessionFactory=sqlSessionFactory;
- }
- @Override
- public User findUserById(int id) throws Exception {
- SqlSession sqlSession=sqlSessionFactory.openSession();
- User user=sqlSession.selectOne("test.findUserById",id);
- //补充一个释放资源的代码
- sqlSession.close();
- return user;
- }
- @Override
- public void insertUser(User user) throws Exception {
- SqlSession sqlSession=sqlSessionFactory.openSession();
- sqlSession.insert("test.insertUser",user);
- //提交事务,必须!
- sqlSession.commit();
- //补充一个释放资源的代码
- sqlSession.close();
- }
- @Override
- public void deleteUser(int id) throws Exception {
- SqlSession sqlSession=sqlSessionFactory.openSession();
- sqlSession.delete("test.deleteUser",id);
- //提交事务
- sqlSession.commit();
- //补充一个释放资源的代码
- sqlSession.close();
- }
- }
【UserDaoTest.java】
【建立Junit测试方法流程】
1.新建一个将要测试类,右击,选择Junit Test Case(最后会生成一个专门的测试类,不需自己新建一个test类)
2.如下图选择,点击Next
3.选出需要测试的方法
4.会自动生成以下模板代码
代码如下
- package com.Higgin.Mybatis.dao.test;
- import java.io.InputStream;
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- import org.junit.Before;
- import org.junit.Test;
- import com.Higgin.Mybatis.dao.UserDao;
- import com.Higgin.Mybatis.dao.UserDaoImpl;
- import com.Higgin.Mybatis.po.User;
- public class UserDaoTest{
- private SqlSessionFactory sqlSessionFactory;
- //此方法在执行testFindUserById() 之前执行
- @Before
- public void setUp() throws Exception {
- //创建sqlSessionfactory
- //MyBatis配置文件
- String resource="SqlMapConfig.xml";
- //得到配置文件流
- InputStream inputStream=Resources.getResourceAsStream(resource);
- //创建会话工厂,传入MyBatis的配置文件信息
//这里千万别写成SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//不然会NullPointerException报错
sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);- }
- @Test
- public void testFindUserById() throws Exception {
- //创建UserDao的对象
- UserDao userDao =new UserDaoImpl(sqlSessionFactory);
- //调用UserDao的方法
- User user =userDao.findUserById(4);
- System.out.println(user.toString());
- }
- }
【运行结果】
【原始Dao方法的问题总结】
1.dao接口实现类方法中存在大量的模板方法,应该设法将这些模板的代码提取出来,减少工作量。
2.调用sqlSession方法时,将statement的id硬编码了
3.调用sqlSession方法是传入的变量,由于sqlSession方法使用泛型,及时变量传入错误,在编译阶段也不会 报错,不利于开发。
07_MyBatis原始的Dao编写方法的更多相关文章
- Mybatis的原始dao开发方法
在进入主题之前先提一下sqlSession.sqlSession是一个面向用户(程序员)的接口. sqlSession中提供了很多操作数据库的方法,如: selectOne(返回单个对象).selec ...
- Mybatis 原始dao CRUD方法
用到的相关jar包及所用版本如下: 其中的Mybatis可以到github.com的网站下载 <project xmlns="http://maven.apache.org/POM/4 ...
- mybatis由浅入深day01_5mybatis开发dao的方法(5.1SqlSession使用范围_5.2原始dao开发方法)
5 mybatis开发dao的方法 5.1 SqlSession使用范围 5.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂 ...
- 【MyBatis学习03】原始dao开发方法及其弊端
上一篇博文总结了一下mybatis的入门,接下来就要开发dao方法了,这篇博文主要总结一下mybatis中原始dao开发的方法,最后并总结一下原始dao开发方法的弊端.mybatis中dao开发应该使 ...
- MyBatis学习--mybatis开发dao的方法
简介 使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法. 主要概念介绍: MyBatis中进行Dao开发时候有几个重要的类,它们是SqlSessionFac ...
- 11Mybatis_mybatis开发Dao的方法
在介绍开发Dao的方法之前先介绍下SqlSession. 1.先介绍一下SqlSessionFactoryBuilder:通过SqlSessionFactoryBuilder创建会话工厂SqlSess ...
- 四 mybatis开发dao的方法
mybatis开发dao的方法 1.1 SqlSession使用范围 1.1.1 SqlSessionFactoryBuilder //以流的方式读取总的配置文件 Reader rea ...
- mybatis系列-04-mybatis开发dao的方法
4.1 SqlSession使用范围 4.1.1 SqlSessionFactoryBuilder 通过SqlSessionFactoryBuilder创建会话工厂SqlSession ...
- mybatis开发dao的方法——(三)
------------------------1. SqlSession使用范围------------------- 1.1 SqlSessionFactoryBuilder 通过S ...
随机推荐
- 使用Windows Azure创建Linux系统虚拟机-下
如何将数据磁盘附加到新虚拟机 您的应用程序可能需要存储数据.要这样设置,您可以将数据磁盘添加到先前创建的虚拟机.要做到这一点,最简单的方法是将空数据磁盘连接到本机. 在Linux上,磁盘资源通常由Az ...
- linux进程,作业,守护进程,进程间同步
ps axj命令查看系统中的进程.参数a表示不仅列当前用户的进程,也列出所有其他用户的进程,参数x表示不仅列有控制终端的进程,也列出所有无控制终端的进程,参数j表示列出与作业控制相关的信息: 凡是TP ...
- 安卓问题http://blog.csdn.net/xb12369/article/details/50510302
- 包含块、层叠上下文、BFC
包含块 什么是包含块?简单来说,就是决定一个元素大小和定位的元素.一个元素会为它的内部元素创建包含块,但也不能说元素的包含块就是它的父元素: 1.position:fixed 的元素 包含块是当前可视 ...
- openCV 2.4.13 iOS background_segm.hpp 'list' file not found
最近下载了最新版的OpenCV的Framework. 导入到项目里边,编译.然后就出现了问题 /opencv2.framework/Headers/video/background_segm.hpp: ...
- DataSet、DataTable和DataGridView知识备忘
datatable中,获取第i行j列的单元格内容: string str = DataSet.Tables[0].Rows[i][j].ToString():datagridv ...
- 有关UIImageView+AFNetworking 下载图片的线程问题
今天写了一个demo,从服务器获取图片,然后显示在cell上,大家都知道cell的重用机制,当往下拉的时候,上面的cell遮住了,下面的cell就会重用被遮住的cell, 贴代码: NSString ...
- java18 任务调度
任务调度; Timer类, /** 了解 Timer() schedule(TimerTask task, Date time) schedule(TimerTask task, Date first ...
- MyEclipse Hibernate Reverse Engineering 找不到项目错误
解决办法:在项目下找到.project文件,在最后的natures标签加入下面红色的一行代码. <natures> <nature>com.genuitec.ec ...
- jedis访问redis学习笔记
最近在学习redis,在网上查了些文章,利用他人已有的知识,总结写下了这篇文章,大部分内容还是引用别人的文章内容.经过测试发现spring-data-redis现在有的版本只能支持reids 2.6和 ...