爲什麼要通過接口操作MyBatis
在以往的情況下,我們通過MyBatis操作數據庫,每執行一條SQL語句就要實例化一個SqlSession,並且要調用相應的SQL映射文件信息。比如:
String statement = "com.dhj.entity.StudentMapper.delStudent";
操作有點麻煩,所以我們採用接口的形式,通過約定,進行更爲簡單的操作。
有一句話特別重要:約定優於配置,配置優於硬編碼。
如何通過接口操作MyBatis
首先,文件結構如圖所示:
其中,Student文件爲一個普通的POJO對象
mapper文件下面是,SQL的配置文件和映射接口文件,我們約定,接口映射文件的類和xml配置文件名是一樣的。
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 namespace="com.krt.mapper.StudentMapper">
<!--namespace 填寫映射文件的類路徑-->
<!--id 名稱 resultType 結果集類型 parameterType 輸入類型-->
<select id="selectStudent" resultType="student" parameterType="int">
select * from Student where id = #{id}
</select>
<insert id="addStudent" parameterType="com.krt.entity.Student">
insert into Student value (#{id},#{name},#{age})
</insert>
<delete id="delStudent" parameterType="int" >
delete from Student where id = #{id}
</delete>
<update id="updateStudent" parameterType="com.krt.entity.Student">
update Student set name = #{name},age =#{age} where id = #{id}
</update>
<select id="selectAllStudent" resultType="student" >
select * from Student
</select>
</mapper>
StudentMapper接口類源碼:(注意這是一個接口文件)
package com.krt.mapper;
import com.krt.entity.Student;
import java.util.List;
/*
* @Author 郭明德
* @Description
* @Date 2019/3/15 10:36
*
**/
//操作MyBatis接口
public interface StudentMapper {
/**
* 1,方法名和mapper.xml文件中的標籤的id值相同
* 2,方法的輸入參數和mapper.xml文件中的標籤的parameterType類型一致
* 3,方法的返回值 和 mapper.xml文件中的標籤的resultType類型一致
*/
//public abstract Student selectStudent(int id);
//查詢一個學生
Student selectStudent(int id);
//查詢全部
List<Student> selectAllStudent();
//增加
void addStudent(Student student);
//刪除
int delStudent(int id);
//更新
void updateStudent(Student student);
}
這個接口文件,我們不進行實現,該接口是StudentMapper.xml的映射文件。相關約定見註解。
這樣我們就可以通過調用該接口的相應的方法就可以調用相應的SQL語句。
我們只需要通過SqlSession對象,映射相應的SQL映射接口,然後調用相應的接口對象。
db.properties文件
該文件是一個用於存儲連接數據庫信息的文件。
driver = com.mysql.jdbc.Driver
url = jdbc:mysql://localhost:3306/test
username = root
password = root
這樣就可以方便我們配置數據庫信息。同時,在數據庫發生問題,或者在項目交付使用之後要進行修改數據庫都是非常方便的。
conf.xml中可以通過類似於EL表達式的方式調用。