mybatis入门dao方式写URUD(二)

来源:互联网 发布:安卓模拟器知乎 编辑:程序博客网 时间:2024/06/16 01:04

在上一篇博客中已经搭建好环境了,就不再说了,这次主要使用dao的方式写mybatisCRUD,提高代码的可重用性。

目录结构:




创建entity


package pojo;public class Stu {private long id;private String name;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Stu [id=" + id + ", name=" + name + "]";}}

创建dao

package Dao;import pojo.Stu;/** * 相当于接口 * @author lenovo * */public interface stuDao {//查询Stu findStuById(int id);//添加void insertStu(Stu stu);//删除void deletestu(int id);}

创建实现层:


package Dao.impl;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import Dao.stuDao;import pojo.Stu;public class stuDaoImpl implements stuDao {//通过构造方法注入sqlsessionfactoryprivate SqlSessionFactory sqlSessionFactory;//sqlsession是线程不安全的public stuDaoImpl(SqlSessionFactory sqlSessionFactory2) {this.sqlSessionFactory= sqlSessionFactory2;}@Overridepublic Stu findStuById(int id) {SqlSession sqlSession = sqlSessionFactory.openSession();Stu stu = sqlSession.selectOne("test.findStuById", id);//释放资源sqlSession.close();return stu;}@Overridepublic void insertStu(Stu stu) {SqlSession sqlSession = sqlSessionFactory.openSession();sqlSession.insert("test.insertStu", stu);//提交事务sqlSession.commit();sqlSession.close();}@Overridepublic void deletestu(int id) {SqlSession sqlSession = sqlSessionFactory.openSession();sqlSession.delete("test.updatestu", id);//提交事务sqlSession.commit();sqlSession.close();}}

创建mapper映射文件:

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapper SYSTEM "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="test">  <select id="findStuById" parameterType="int" resultType="pojo.Stu">  select * from stu where id=#{id}  </select>    <!-- 添加用户 -->  <insert id="insertStu" parameterType="pojo.Stu">  insert into  stu(id,name)  VALUES (#{id},#{name});  </insert>    <!--删除用户  -->  <delete id="deleteStu" parameterType="java.lang.Integer">     delete from stu where id=#{id}  </delete></mapper>

创建测试类:

package tests;import static org.junit.Assert.*;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 pojo.Stu;import Dao.stuDao;import Dao.impl.stuDaoImpl;public class stuDaoImplTest {private SqlSessionFactory sqlSessionFactory;/** * 此方法是在testFindStuById()之前执行 * @throws Exception */@Beforepublic void setup() throws Exception{// 创建sqlsessionfactory//1.创建会话工厂String resource= "SqlMapConfig.xml";//得到文件流InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}@Testpublic void testFindStuById() {//创建dao对象stuDao dao = new stuDaoImpl(sqlSessionFactory);//调用dao方法Stu stu = dao.findStuById(1);System.out.println(stu);}}



<!-- 加载mapper配置文件-->

<mappers>

<mapper resource="sqlmap/stu.xml"/>

</mappers>