MyBatis 的简单 CRUD 操作
CRUD
所谓CRUD即数据库的增删改查操作
第一章已经说了MyBatis的特点和优势,其中提到了MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO为数据库中的记录。这里其实可以发现,使用MyBatis框架只需要修改接口中的方法以及对应的XML 配置文件,或者使用注解(之后会讲到注解的各种用法)就可以对数据库进行不同的操作。
select 操作
例如简单的查询所有学生信息
先在接口中编写要实现的方法(上篇已提到)
public interface StudentMapper { List<Student> getStudents(); }
接着在对应的XML文件中编写对应执行SQL
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.hudu.dao.StudentMapper"> <select id="getStudents" resultType="Student"> select * from student </select> </mapper>
然后需要在mybatis-config.xml文件中添加绑定
<!--通过resource方法定位StudentMapper.xml文件--> <mapper resource="com/hudu/dao/StudentMapper.xml"/> <!--通过类定位--> <!-- <mapper class="com.hudu.dao.StudentMapper"/>--> <!--通过包扫描--> <!-- <package name="com.hudu.dao"/>-->
三种方法都行,但是第二种使用 class 的文件绑定接口和 mapper 配置文件和第三种必须两文件同名和在同一包结构下。
测试
@Test public void test1() { SqlSession sqlSession = MybatisUtil.getSqlSession(); StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); List<Student> students = mapper.getStudents(); for (Student student : students) { System.out.println(student); } sqlSession.close(); }
结果
delete 操作
之后的演示只会展示核心配置文件和代码
接口中定义方法
//给id属性起一个别名 void deleteStudent(@Param("sid") int id);
编写对应 XML 配置文件
<delete id="deleteStudent" parameterType="_int"> delete from student where id = #{sid} </delete>
测试
@Test public void test2() { SqlSession sqlSession = MybatisUtil.getSqlSession(); StudentMapper mapper = sqlSession.getMapper(StudentMapper.class); mapper.deleteStudent(5); sqlSession.close(); }
insert 操作
void addStudent(Student student);
<insert id="addStudent" parameterType="Student">
insert into student(id,name,tid) values (#{id},#{name},#{tid})
</insert>
这里参数类型能直接写Student是因为 mybatis-config.xml 中定义了 typeAlias
<!--可以给实体类起别名-->
<typeAliases>
<typeAlias type="com.hudu.pojo.Student" alias="Student"/>
<!--扫描实体类的包,它的默认别名就为这个类的类名,实体类比较多用package扫描-->
<!--<package name="com.com.test.pojo"/>-->
</typeAliases>
update 操作
void updateStudent(Student student);
<update id="updateStudent" parameterType="Student">
update student set name = #{name},tid = #{tid} where id = #{id}
</update>
总结
- XML文件 namespace 要与接口绑定
- 接口中的具体实现在 XML 中实现
- 基本数据类型参数用_int等表示,具体看官方文档
- 对象类型的参数为了便于使用最好在 mybatis-config 中配置 typeAliases,给实体类起别名。
本作品采用《CC 协议》,转载必须注明作者和本文链接