Mybatis的CRUD操作
- 配置 Student.xml
首先,我们在 SQL 映射文件中新增语句,用来支撑 CRUD 的系列操作
<?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="pojo">
<select id="listStudent" resultType="Student">
select * from student
</select>
<insert id="addStudent" parameterType="Student">
insert into student (id, studentID, name) values (#{id},#{studentID},#{name})
</insert>
<delete id="deleteStudent" parameterType="Student">
delete from student where id = #{id}
</delete>
<select id="getStudent" parameterType="_int" resultType="Student">
select * from student where id= #{id}
</select>
<update id="updateStudent" parameterType="Student">
update student set name=#{name} where id=#{id}
</update>
</mapper>
- parameterType:要求输入参数的类型
- resultType:输出的类型
- 第二步:实现增删改查
- `package test;
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 pojo.Student;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
public class TestMyBatis {
public static void main(String[] args) throws IOException {
// 根据 mybatis-config.xml 配置的信息得到 sqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 然后根据 sqlSessionFactory 得到 session
SqlSession session = sqlSessionFactory.openSession();
// 增加学生
Student student1 = new Student();
student1.setId(4);
student1.setStudentID(4);
student1.setName("新增加的学生");
session.insert("addStudent", student1);
// 删除学生
Student student2 = new Student();
student2.setId(1);
session.delete("deleteStudent", student2);
// 获取学生
Student student3 = session.selectOne("getStudent", 2);
// 修改学生
student3.setName("修改的学生");
session.update("updateStudent", student3);
// 最后通过 session 的 selectList() 方法调用 sql 语句 listStudent
List<Student> listStudent = session.selectList("listStudent");
for (Student student : listStudent) {
System.out.println("ID:" + student.getId() + ",NAME:" + student.getName());
}
// 提交修改
session.commit();
// 关闭 session
session.close();
}
}`
上述的程序中:
- 通过 session.insert(“addStudent”, student1); 增加了一个 ID 和 studentID 都为 4,名字为“新增加的学生” 的学生
- 通过 session.delete(“deleteStudent”, student2); 删除了 ID = 1 的学生
- 通过 Student student3 = session.selectOne(“getStudent”, 2); 获取了 ID = 2的学生
- 通过 session.update(“updateStudent”, student3); 将 ID = 2
的学生的名字修改为 “修改的学生” 通过 session.commit() 来提交事务,也可以简单理解为更新到数据库
条件查询
<select id="findStudentByName" parameterMap="java.lang.String" resultType="Student">
SELECT * FROM student WHERE name LIKE '%${value}%'
</select>
注意: 标签对中 SQL 语句的 “ $ {}” 符号,表示拼接 SQL 串,将接受的参数内容不加任何修饰地拼接在 SQL 中,在 “${}” 中只能使用 value 来代表其中的参数。
@Test
public void test() throws IOException {
// 根据 mybatis-config.xml 配置的信息得到 sqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 然后根据 sqlSessionFactory 得到 session
SqlSession session = sqlSessionFactory.openSession();
// 模糊查询
List<Student> students = session.selectList("findStudentByName", "三颗心脏");
for (Student student : students) {
System.out.println("ID:" + student.getId() + ",NAME:" + student.getName());
}
}