码迷,mamicode.com
首页 > 其他好文 > 详细

Mybatis笔记 - 原始Dao开发方法

时间:2018-01-27 13:44:50      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:post   分享   员工信息   pre   color   dtd   info   font   conf   

     使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法。原始Dao的开发方式是基于入门程序的基础上,对 控制程序 进行分层开发,程序员需要 编写 Dao接口Dao实现类,但对 SQL映射文件、pojo类、sqlMapConfig.xml等 配置文件 并不做改变。

一、映射文件

1、SQL映射

  1 <?xml version="1.0" encoding="UTF-8" ?>
  2 <!DOCTYPE mapper
  3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  5 <mapper namespace="test">
  6 	<!-- 根据id获取员工信息 -->
  7 	<select id="findEmpById" parameterType="int" resultType="po.Emp">
  8 		select * from emp where empno = #{empno}
  9 	</select>
 10 
 11 	<!-- 自定义条件查询员工列表 -->
 12 	<select id="findEmpByEmpname" parameterType="java.lang.String" resultType="po.Emp">
 13 	   select * from emp  where ename like ‘%${value}%‘
 14 	</select>
 15 
 16 	<!-- 添加员工信息 -->
 17 	<insert id="insertEmp" parameterType="po.Emp">
 18 	<selectKey keyProperty="empno" order="AFTER" resultType="java.lang.Integer">
 19 		select LAST_INSERT_ID()
 20 	</selectKey>
 21 	  insert into emp(ename,job) values(#{ename},#{job})
 22 	</insert>
 23 
 24 	<!-- 删除员工信息 -->
 25 	<delete id="deleteEmpById" parameterType="int">
 26 		delete from emp where empno=#{empno}
 27 	</delete>
 28 
 29 	<!-- 更新员工信息 -->
 30 	<update id="updateEmp" parameterType="po.Emp">
 31 		update emp set ename=#{ename},job=#{job}
 32 			where empno=#{empno}
 33 	</update>
 34 </mapper>

2、pojo类

  1 package po;
  2 //导入相关类
  3 public class Emp {
  4 	private int empno;
  5 	private String ename;
  6 	private String job;
  7 	private int mgr;
  8 	private Date hiredate;
  9 	private double sal;
 10 	private double comm;
 11 	private int deptno;
 12 
 13 	@Override
 14 	public String toString() {
 15 		return "编号:"+empno+"    姓名:"+ename+"    工作:"+job+"\n";
 16 	}
 17 	set()/get()方法 ...
 18 }

二、Dao层

1、Dao类

  1 package Dao;
  2 //导入相关类
  3 public interface EmpDao {
  4 	public Emp findEmpById(int empno);
  5 	public List<Emp> findEmpByEmpname(String tname);
  6 	public int insertEmp(Emp emp);
  7 	public int deleteEmpById(int empno);
  8 	public int updateEmp(Emp emp);
  9 }
2、DaoImp类
  1 package Dao;
  2 //导入相关类
  3 public class EmpDaoImp implements EmpDao {
  4 	private SqlSessionFactory sqlSessionFactory ;
  5 
  6 	// 在dao实现类的构造方法中注入注入SqlSessionFactory
  7 	public EmpDaoImp(SqlSessionFactory sqlSessionFactory) {
  8 		this.sqlSessionFactory = sqlSessionFactory;
  9 	}
 10 
 11 	@Override
 12 	public Emp findEmpById(int empno) {
 13 		SqlSession sqlSession = sqlSessionFactory.openSession();
 14 		Emp emp = null;
 15 		//使用finally语句,保证释放资源操作必须执行
 16 		try {
 17 			emp = sqlSession.selectOne("test.findEmpById",empno);
 18 		}finally {
 19 			sqlSession.close();
 20 		}
 21 		return emp;
 22 	}
 23 
 24 	@Override
 25 	public List<Emp> findEmpByEmpname(String ename) {
 26 		SqlSession sqlSession = sqlSessionFactory.openSession();
 27 		List<Emp> emp = null;
 28 		try {
 29 			 emp = sqlSession.selectList("test.findEmpByEmpname",ename);
 30 		}finally {
 31 			sqlSession.close();
 32 		}
 33 		return emp;
 34 	}
 35 
 36 	@Override
 37 	public int insertEmp(Emp emp) {
 38 		SqlSession sqlSession = sqlSessionFactory.openSession();
 39 		int flag = 0;
 40 		try {
 41 			flag = sqlSession.insert("test.insertEmp",emp);
 42 		}finally{
 43 			//必须提交,更新数据
 44 			sqlSession.commit();
 45 			sqlSession.close();
 46 		}
 47 		return flag;
 48 	}
 49 
 50 	@Override
 51 	public int deleteEmpById(int empno) {
 52 		SqlSession sqlSession = sqlSessionFactory.openSession();
 53 		int flag = 0;
 54 		try {
 55 			flag = sqlSession.delete("test.deleteEmpById",empno);
 56 		}finally{
 57 			//必须提交,更新数据
 58 			sqlSession.commit();
 59 			sqlSession.close();
 60 		}
 61 		return flag;
 62 	}
 63 
 64 	@Override
 65 	public int updateEmp(Emp emp) {
 66 		SqlSession sqlSession = sqlSessionFactory.openSession();
 67 		int flag = 0;
 68 		try {
 69 			flag = sqlSession.update("test.updateEmp",emp);
 70 		}finally{
 71 			//必须提交,更新数据
 72 			sqlSession.commit();
 73 			sqlSession.close();
 74 		}
 75 		return flag;
 76 	}
 77 }

三、测试程序

1、Junit单元测试

  1 package Test;
  2 //导入相关类
  3 public class Mybatis_Dao {
  4 
  5 	//使用 单例模式 管理会话工厂
  6 	private SqlSessionFactory sqlSessionFactory;
  7 	@Before
  8 	public void createSqlSessionFactory() throws IOException {
  9 		 // Mybatis配置文件
 10 		String resource = "SqlMapConfig.xml";
 11 		// 得到配置文件流
 12 		InputStream inputStream = Resources.getResourceAsStream(resource);
 13 		// 创建会化工厂,传入Mybatis配置文件信息
 14 		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
 15 	}
 16 
 17 	// 根据 id查询部门信息
 18 	@Test
 19 	public void testFindEmpById() {
 20 		EmpDaoImp empDaoImp = new EmpDaoImp(sqlSessionFactory);
 21 		Emp emp = empDaoImp.findEmpById(7369);
 22 		System.out.println(emp);
 23 	}
 24 
 25 	// 根据员工姓名模糊查询员工信息
 26 	@Test
 27 	public void testFindEmpByEmpname() {
 28 		EmpDaoImp empDaoImp = new EmpDaoImp(sqlSessionFactory);
 29 		List<Emp> emp = empDaoImp.findEmpByEmpname("th");
 30 		for(Emp e:emp) {
 31 			System.out.println(e);
 32 		}
 33 	}
 34 
 35 	// 添加员工信息
 36 	@Test
 37 	public void testInsert() {
 38 		EmpDaoImp empDaoImp = new EmpDaoImp(sqlSessionFactory);
 39 		Emp emp = new Emp();
 40 		emp.setEname("test");
 41 		emp.setJob("test");
 42 		int flag = empDaoImp.insertEmp(emp);
 43 		System.out.println("自增主键值:"+emp.getEmpno());
 44 	}
 45 
 46 	// 更新员工信息
 47 	@Test
 48 	public void testUpdate() {
 49 		EmpDaoImp empDaoImp = new EmpDaoImp(sqlSessionFactory);
 50 		Emp emp = new Emp();
 51 		emp.setEmpno(7946);
 52 		emp.setEname("test7946");
 53 		emp.setJob("test7946");
 54 		int flag = empDaoImp.updateEmp(emp);
 55 		if(flag == 1)
 56 			System.out.println("更新成功!");
 57 	}
 58 
 59 	// 根据id删除员工信息
 60 	@Test
 61 	public void testDelete() {
 62 		EmpDaoImp empDaoImp = new EmpDaoImp(sqlSessionFactory);
 63 		int flag = empDaoImp.deleteEmpById(7946);
 64 		if(flag == 1)
 65 			System.out.println("删除成功!");
 66 	}
 67 }

2、测试结果、

(1)根据 id查询部门信息

     技术分享图片

(2)根据员工姓名模糊查询员工信息

    技术分享图片

(3)添加员工信息

    技术分享图片

(4)更新员工信息

    技术分享图片

(5)根据id删除员工信息

    技术分享图片

Mybatis笔记 - 原始Dao开发方法

标签:post   分享   员工信息   pre   color   dtd   info   font   conf   

原文地址:https://www.cnblogs.com/sh086/p/8365137.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!