您的位置:首页 > 其它

mybatis入门dao方式写URUD(二)

2017-09-18 23:59 197 查看
在上一篇博客中已经搭建好环境了,就不再说了,这次主要使用dao的方式写mybatis的CRUD,提高代码的可重用性。
目录结构:



创建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;
}
@Override
public 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 {

//通过构造方法注入sqlsessionfactory
private SqlSessionFactory sqlSessionFactory;
//sqlsession是线程不安全的

public stuDaoImpl(SqlSessionFactory sqlSessionFactory2) {
this.sqlSessionFactory= sqlSessionFactory2;
}

@Override
public Stu findStuById(int id) {
SqlSession sqlSession = sqlSessionFactory.openSession();
Stu stu = sqlSession.selectOne("test.findStuById", id);
//释放资源
sqlSession.close();
return stu;
}

@Override
public void insertStu(Stu stu) {
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.insert("test.insertStu", stu);
//提交事务
sqlSession.commit();
sqlSession.close();

}

@Override
public 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
*/
@Before
public void setup() throws Exception{
// 创建sqlsessionfactory
//1.创建会话工厂
String resource= "SqlMapConfig.xml";
//得到文件流
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

}

@Test
public 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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mybatis