【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编写方法的更多相关文章

  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. 解决SQL数据库无法脱机的问题

    数据库无法脱机:原理——有人在占用. 解决办法: select * from master.sys.sysprocesses where dbid=db_id('数据库名称') kill [id]

  2. Docker系列(四)Dockerfile

    基本语法 使用 #来注释 FROM 指令告诉Docker使用哪个镜像作为基础 接着是维护者信息 RUN 开头的指令会在创建中运行,比如安装软件包 FROM 格式: FROM<image>或 ...

  3. deep learning(1)BP神经网络原理与练习

    具体原理参考如下讲义: 1.神经网络 2.反向传导 3.梯度检验与高级优化 看完材料1和2就可以梳理清楚bp神经网络的基本工作原理,下面通过一个C语言实现的程序来练习这个算法 //Backpropag ...

  4. Worker、Task、Executor三者之间的关系

  5. hdoj 1406 完数

    完数 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submissi ...

  6. nginx + lua 构建网站防护waf(一)

    最近在帮朋友维护一个站点.这个站点是一个Php网站.坑爹的是用IIS做代理.出了无数问题之后忍无可忍,于是要我帮他切换到nginx上面,前期被不断的扫描和CC.最后找到了waf这样一个解决方案缓解一下 ...

  7. jQuery进行图片预先加载

    /** **将图片加载到内存中,在页面任何位置引用的时候,直接从缓存中读取,提升用户的体验,提高网站的流畅度.** **/ <!DOCTYPE html PUBLIC "-//W3C/ ...

  8. elasticsearch的基本用法

    开始学习使用 elasticsearch, 把步骤记录在这里: 最大的特点: 1. 数据库的 database, 就是  index 2. 数据库的 table,  就是 tag 3. 不要使用bro ...

  9. 皮皮果模式系统开发app

    皮皮果系统定制开发,皮皮果网站系统开发. 皮皮果游戏横空出世,比QQ农场有过之而无不及,深得广大玩家喜爱.无论草根百姓还是达官贵人,都可以来学习娱乐的游戏.让你在娱乐中收获物质生活和精神生活,英伦果园 ...

  10. nginx安装php和php-fpm

    最近在学习nginx,看了好多帖子终于安装成功了. 经验,首先不要用yum安装,安装完以后根本找不到安装目录在哪里呀,然后安装失败以后会很不方便. 最终选择了自己编译安装. 看了好多帖子都不行,终于找 ...