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 協議》,轉載必須註明作者和本文連結