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 ...
随机推荐
- 用Quartus II 建立一个工程模板,以后新建工程时无需再配置参数
以前用Quartus II 每次新建工程时,都要设置工程名,选择工程路径,选择芯片型号等等,好麻烦呀!可不可以建一个工程模板,以后新建工程时直接改相应文件名就可以呀!后来我一琢磨,感觉也不是不可以.因 ...
- cocos2d-x编程的一些小技巧
转自:http://blog.sina.com.cn/s/blog_61d2d3f50100zgz8.html 一. CC_ASSERT 或 CCAssert宏 Assert - 断言 使用断言可 ...
- Java凝视Override、Deprecated、SuppressWarnings具体解释
一.什么是凝视 说起凝视,得先提一提什么是元数据(metadata).所谓元数据就是数据的数据.也就是说,元数据是描写叙述数据的.就象数据表中的字段一样,每一个字段描写叙述了这个字段下的数据的 ...
- mysql选择联合索引还是单索引?索引列应该使用哪一个最有效?深入測试探讨
先建表 CREATE TABLE `menu_employee` ( `Id` int(11) NOT NULL AUTO_INCREMENT COMMENT '自增主键,无实际意义', `emplo ...
- 数扰结构-visualization
http://www.cs.usfca.edu/~galles/visualization/Algorithms.html?url_type=39&object_type=webpage&am ...
- js渐变显示渐变消失
以下是渐变的js代码(表示多余三行的要隐藏,点击"more"显示剩下的,点击“less”要逐渐隐藏): function showAccomplishmentTableRow(){ ...
- prepare a mysql docker server
@run server.. docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql @applica ...
- string与StringBuilder之性能比较
知道“StringBuilder比string性能强”好多年了,近日无聊病发作,就把这两个家伙给动了手术: using System; using System.Text; namespace Con ...
- Manually connecting to the Oracle Linux Yum Server
Manually connecting to the Oracle Linux Yum Server 1. Download and Install Oracle Linux Note: The ...
- c语言,strcmp(),字符串比较,看Asic 码,str1>str2,返回值 > 0;两串相等,返回
#include<stdio.h> #include<string.h> int main() { char *buffer1="aaa",*buffer ...