一、使用Junit
在MyBatis01的基础上,使用Junit,导入eclipse自带的Junit包
然后写一个使用Junit的测试类Student2.java
添加
package com.java.service;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.java.mappers.StudentMapper;
import com.java.model.Student;
import com.java.util.SqlSessionFactoryUtil;
public class StudentTest2 {
private static Logger logger=Logger.getLogger(StudentTest.class);
private SqlSession sqlSession=null;
private StudentMapper studentMapper=null;
/**
* 测试方法前调用
* @throws Exception
*/
@Before
public void setUp() throws Exception {
sqlSession=SqlSessionFactoryUtil.openSession();
studentMapper=sqlSession.getMapper(StudentMapper.class);
}
/**
* 测试方法后调用
* @throws Exception
*/
@After
public void tearDown() throws Exception {
sqlSession.close();
}
@Test
public void testAdd() {
logger.info("添加学生");
Student student=new Student("王五",12);
studentMapper.add(student);
sqlSession.commit();
}
}
测试结果:,Junit使用添加成功
二、使用 XML 配置 SQL 映射器
实现删查改
定义接口
model--Student实体类
package com.java.model;
public class Student {
private Integer id;
private String name;
private Integer age;
public Student() {
super();
}
public Student(String name, Integer age) {
super();
this.name = name;
this.age = age;
}
public Student(Integer id, String name, Integer age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
StudentMapper.java
package com.java.mappers;
import java.util.List;
import com.java.model.Student;
public interface StudentMapper {
public int add(Student student);
public int update(Student student);
public int delete(Integer id);
public Student findById(Integer id);
public List<Student> find();
}
修改
写映射文件StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper对应接口 -->
<mapper namespace="com.java.mappers.StudentMapper">
<!-- id对应StudentMapper接口的方法 -->
<!--parameterType:因为mybatis-config.xml右Student别名,所以可以使用Student-->
<!-- 否则parameterType要导入完整的路径com.java.model.Student -->
<!-- 添加使用insert标签,属性名Student.name,Student.age导入进数据库 -->
<insert id="add" parameterType="Student" >
insert into t_student values(null,#{name},#{age})
</insert>
<!-- 修改 -->
<update id="update" parameterType="Student">
update t_student set name=#{name},age=#{age} where id=#{id}
</update>
</mapper>
StudentTest2
package com.java.service;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.java.mappers.StudentMapper;
import com.java.model.Student;
import com.java.util.SqlSessionFactoryUtil;
public class StudentTest2 {
private static Logger logger=Logger.getLogger(StudentTest.class);
private SqlSession sqlSession=null;
private StudentMapper studentMapper=null;
/**
* 测试方法前调用
* @throws Exception
*/
@Before
public void setUp() throws Exception {
sqlSession=SqlSessionFactoryUtil.openSession();
studentMapper=sqlSession.getMapper(StudentMapper.class);
}
/**
* 测试方法后调用
* @throws Exception
*/
@After
public void tearDown() throws Exception {
sqlSession.close();
}
@Test
public void testAdd() {
logger.info("添加学生");
Student student=new Student("王五",12);
studentMapper.add(student);
sqlSession.commit();
}
@Test
public void testUpdate(){
logger.info("修改学生");
Student student=new Student(1,"王五2",13);
studentMapper.update(student);
//开启事务
sqlSession.commit();
}
}
原本数据库
修改测试后
删除
写映射文件StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper对应接口 -->
<mapper namespace="com.java.mappers.StudentMapper">
<!-- id对应StudentMapper接口的方法 -->
<!--parameterType:因为mybatis-config.xml右Student别名,所以可以使用Student-->
<!-- 否则parameterType要导入完整的路径com.java.model.Student -->
<!-- 添加使用insert标签,属性名Student.name,Student.age导入进数据库 -->
<insert id="add" parameterType="Student" >
insert into t_student values(null,#{name},#{age})
</insert>
<!-- 修改 -->
<update id="update" parameterType="Student">
update t_student set name=#{name},age=#{age} where id=#{id}
</update>
<!-- 删除 -->
<delete id="delete" parameterType="Integer">
delete from t_student where id=#{id}
</delete>
</mapper>
StudentTest2
package com.java.service;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.java.mappers.StudentMapper;
import com.java.model.Student;
import com.java.util.SqlSessionFactoryUtil;
public class StudentTest2 {
private static Logger logger=Logger.getLogger(StudentTest.class);
private SqlSession sqlSession=null;
private StudentMapper studentMapper=null;
/**
* 测试方法前调用
* @throws Exception
*/
@Before
public void setUp() throws Exception {
sqlSession=SqlSessionFactoryUtil.openSession();
studentMapper=sqlSession.getMapper(StudentMapper.class);
}
/**
* 测试方法后调用
* @throws Exception
*/
@After
public void tearDown() throws Exception {
sqlSession.close();
}
@Test
public void testAdd() {
logger.info("添加学生");
Student student=new Student("王五",12);
studentMapper.add(student);
sqlSession.commit();
}
@Test
public void testUpdate(){
logger.info("修改学生");
Student student=new Student(1,"王五2",13);
studentMapper.update(student);
//开启事务
sqlSession.commit();
}
@Test
public void testDelete(){
logger.info("删除学生");
studentMapper.delete(1);
sqlSession.commit();
}
}
原本数据库
测试删除后
查找(通过id)
写映射文件StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper对应接口 -->
<mapper namespace="com.java.mappers.StudentMapper">
<!-- id对应StudentMapper接口的方法 -->
<!--parameterType:因为mybatis-config.xml右Student别名,所以可以使用Student-->
<!-- 否则parameterType要导入完整的路径com.java.model.Student -->
<!-- 添加使用insert标签,属性名Student.name,Student.age导入进数据库 -->
<insert id="add" parameterType="Student" >
insert into t_student values(null,#{name},#{age})
</insert>
<!-- 修改 -->
<update id="update" parameterType="Student">
update t_student set name=#{name},age=#{age} where id=#{id}
</update>
<!-- 删除 -->
<delete id="delete" parameterType="Integer">
delete from t_student where id=#{id}
</delete>
<!-- 通过id查找学生 -->
<select id="findById" parameterType="Integer" resultType="Student">
select * from t_student where id=#{id}
</select>
</mapper>
StudentTest2
package com.java.service;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.java.mappers.StudentMapper;
import com.java.model.Student;
import com.java.util.SqlSessionFactoryUtil;
public class StudentTest2 {
private static Logger logger=Logger.getLogger(StudentTest.class);
private SqlSession sqlSession=null;
private StudentMapper studentMapper=null;
/**
* 测试方法前调用
* @throws Exception
*/
@Before
public void setUp() throws Exception {
sqlSession=SqlSessionFactoryUtil.openSession();
studentMapper=sqlSession.getMapper(StudentMapper.class);
}
/**
* 测试方法后调用
* @throws Exception
*/
@After
public void tearDown() throws Exception {
sqlSession.close();
}
@Test
public void testAdd() {
logger.info("添加学生");
Student student=new Student("王五",12);
studentMapper.add(student);
sqlSession.commit();
}
@Test
public void testUpdate(){
logger.info("修改学生");
Student student=new Student(1,"王五2",13);
studentMapper.update(student);
//开启事务
sqlSession.commit();
}
@Test
public void testDelete(){
logger.info("删除学生");
studentMapper.delete(1);
sqlSession.commit();
}
@Test
public void testFindById(){
logger.info("通过ID查找学生");
Student student=studentMapper.findById(2);
System.out.println(student);
}
}
测试结果
学生列表
写映射文件StudentMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper对应接口 -->
<mapper namespace="com.java.mappers.StudentMapper">
<!-- 定义一个集合,用来返回所有学生,property对象属性,column对应数据库字段-->
<resultMap type="Student" id="StudentResult">
<id property="id" column="id"/>
<result property="name" column="name"/>
<result property="age" column="age"/>
</resultMap>
<insert id="add" parameterType="Student" >
insert into t_student values(null,#{name},#{age})
</insert>
<!-- 修改 -->
<update id="update" parameterType="Student">
update t_student set name=#{name},age=#{age} where id=#{id}
</update>
<!-- 删除 -->
<delete id="delete" parameterType="Integer">
delete from t_student where id=#{id}
</delete>
<!-- 通过id查找学生 -->
<select id="findById" parameterType="Integer" resultType="Student">
select * from t_student where id=#{id}
</select>
<!--学生列表-->
<select id="find" resultMap="StudentResult">
select * from t_student
</select>
</mapper>
StudentTest2
package com.java.service;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.java.mappers.StudentMapper;
import com.java.model.Student;
import com.java.util.SqlSessionFactoryUtil;
public class StudentTest2 {
private static Logger logger=Logger.getLogger(StudentTest.class);
private SqlSession sqlSession=null;
private StudentMapper studentMapper=null;
/**
* 测试方法前调用
* @throws Exception
*/
@Before
public void setUp() throws Exception {
sqlSession=SqlSessionFactoryUtil.openSession();
studentMapper=sqlSession.getMapper(StudentMapper.class);
}
/**
* 测试方法后调用
* @throws Exception
*/
@After
public void tearDown() throws Exception {
sqlSession.close();
}
@Test
public void testAdd() {
logger.info("添加学生");
Student student=new Student("王五",12);
studentMapper.add(student);
sqlSession.commit();
}
@Test
public void testUpdate(){
logger.info("修改学生");
Student student=new Student(1,"王五2",13);
studentMapper.update(student);
//开启事务
sqlSession.commit();
}
@Test
public void testDelete(){
logger.info("删除学生");
studentMapper.delete(1);
sqlSession.commit();
}
@Test
public void testFindById(){
logger.info("通过ID查找学生");
Student student=studentMapper.findById(2);
System.out.println(student);
}
@Test
public void testFind(){
logger.info("查找所有学生");
List<Student> studentList=studentMapper.find();
for(Student s:studentList){
System.out.println(s);
}
}
}
测试结果