我们已经初步搭建了 MyBatis 框架,实现了findById功能,接下来继续完善,实现findAll,insert,update,delete功能。
目录结构跟上篇一样。更新的文件主要是UserMapper.xml和UserTest.java文件,写完一个接口,再写一个测试接口,测试驱动开发,这种模式简直太美妙了。
直接上代码:
UserMapper.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 namespace="com.cx.pojo.User">
<select id="findById" parameterType="int" resultType="com.cx.pojo.User">
SELECT * FROM User WHERE id=#{id}
</select>
<!-- 查询功能,resultType 设置返回值类型 -->
<select id="findAll" resultType="com.cx.pojo.User"> <!-- 书写 SQL 语句 -->
SELECT * FROM user
</select>
<insert id="insert" parameterType="com.cx.pojo.User">
INSERT INTO user (id,name,age) VALUES (#{id},#{name},#{age})
</insert>
<!-- 修改功能 -->
<update id="update" parameterType="com.cx.pojo.User">
UPDATE user set name=#{name},age=#{age}
WHERE id = #{id}
</update>
<!-- 删除功能 -->
<delete id="deleteById" parameterType="integer">
DELETE FROM user
WHERE id = #{id}
</delete>
</mapper>
UserTest.java文件如下:
package com.cx.test;
import com.cx.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.*;
import java.io.IOException;
import java.io.Reader;
import java.util.List;
public class UserTest {
@BeforeClass
public static void globalInit() { // 在所有方法执行之前执行
System.out.println("@BeforeClass标注的方法,在所有方法执行之前执行...");
}
@AfterClass
public static void globalDestory() { // 在所有方法执行之后执行
System.out.println("@AfterClass标注的方法,在所有方法执行之后执行...");
}
@Before
public void setUp() { // 在每个测试方法之前执行
System.out.println("@Before标注的方法,在每个测试方法之前执行...");
}
@After
public void tearDown() { // 在每个测试方法之后执行
System.out.println("@After标注的方法,在每个测试方法之后执行...");
}
@Test
public void testFindById() {
String resource ="mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
User user = session.selectOne("findById",2);
session.commit();
System.out.println(user.getName());
}catch (IOException e){
e.printStackTrace();
}
}
@Test
public void testFindAll() {
String resource ="mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
List<User> list = session.selectList("findAll");
session.commit();
System.out.println("list.size=======" + list.size());
}catch (IOException e){
e.printStackTrace();
}
}
@Test
public void testInsert(){
String resource ="mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
User user = new User();
user.setId(5);
user.setName("gavin");
user.setAge(12);
session.insert("insert", user);
session.commit();
}catch (IOException e){
e.printStackTrace();
}
}
@Test
public void testUpdate(){
String resource ="mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
User user = session.selectOne("findById",2);
user.setName("adadf");
user.setAge(12);
session.insert("update", user);
session.commit();
}catch (IOException e){
e.printStackTrace();
}
}
@Test
public void testDelete(){
String resource ="mybatis-config.xml";
Reader reader = null;
try {
reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
SqlSession session = sqlSessionFactory.openSession();
session.delete("deleteById",5);
session.commit();
}catch (IOException e){
e.printStackTrace();
}
}
}
每一个都是成功的。本人亲测。