MyBatis創建項目(2)是基於MyBatis創建項目(1)的改進版:
1、刪除Dao接口的實現類;
--->
2、修改SQL映射文件的namespace屬性值爲接口的全限定名;
<?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"> <!-- namespace就相當於java中的package --> <mapper namespace="com.wolfhome.mybatis.hrz.dao.UserDao"> <insert id="saveAddUser" parameterType="com.wolfhome.mybatis.hrz.domain.User"> insert into user (username,password) values(#{username},#{password}) </insert> <delete id="deleteUserById" parameterType="_int"> delete from user where id=#{id} </delete> </mapper>
3、確保接口中的方法名與SQL映射文件中的SQL映射id完全相同;確保接口中方法傳遞的參數類型和SQL映射的sql標籤中的屬性中所配置的參數和返回值類型要一模一樣;
4、Test類中通過SqlSession對象的getMapper(Class clazz)方法創建接口的動態代理對象,參數爲接口的Class;
package com.wolfhome.mybatis.hrz.test; import java.io.IOException; import java.io.InputStream; 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 com.wolfhome.mybatis.hrz.dao.UserDao; import com.wolfhome.mybatis.hrz.domain.User; /** * <p>ClassName:Test</p> * @功能描述 測試類 * <p>Company:wolfhome</p> * @author Hrzhi * @date 2017年11月10日 下午5:42:48 */ public class Test { public static void main(String[] args) throws IOException { // 用流的形式加載mybatis主配置文件 String resource = "resources/mybatis/mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); // 獲得SqlSessionFactory對象 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 獲得SqlSession對象,與數據庫會話的對象 SqlSession session = sqlSessionFactory.openSession(); // 利用反射機制創建dao實現類,以多態的形式返回給dao接口 UserDao userDao = session.getMapper(UserDao.class); // 添加用戶 User user = new User(); user.setUsername("李四"); user.setPassword("123456"); try { int result = userDao.saveAddUser(user); session.commit(); System.out.println("添加成功" + result + "個新用戶"); } catch (IOException e) { e.printStackTrace(); } finally { session.close(); } } }
5、將動態代理對象賦值給接口變量,並調用接口中的方法;
6、MyBatis動態SQL:點擊“MyBatis動態SQL”查看,其實就是用了<where>、<if>等標籤的sql語句。
總結:
1、實現代碼簡潔,少寫了dao層的實現類;
2、dao層接口名和SQL映射文件名必須一樣;
3、SQL映射文件中命名空間namespace是接口的“包名.類名”;
4、SQL映射文件中id值必須和接口中的方法名一樣;
5、接口中方法所傳遞的參數必須和SQL映射文件中的參數類型一致。
MyBatis開發步驟總結:
1、導包:mybatis.jar相關jar和數據庫驅動包mysql-connector-java.jar;
2、創建實體類;
3、定義Dao接口和接口實現類;
4、安裝MyBatis:在src目錄下創建MyBatis主配置文件;在Dao接口的同級別目錄下創建SQL映射文件;
5、配置主配置文件的運行環境,即數據庫連接屬性配置;
6、在主配置文件中加入SQL映射文件;
7、編寫Dao方法,調用SQL映射文件;
8、創建測試類,調用dao方法。