mybatis的mapper接口代理使用的三個規范


2018-07-29

1.什么是mapper代理接口方式?

MyBatis之mapper代理方式。mapper代理使用的是JDK的動態代理策略

2.使用mapper代理方式有什么好處

使用這種方式可以不用寫接口的實現類,免除了復雜的方法,使得代碼更加清晰易懂

按照以前的DAO 開發模式 ,我們有一個寫了一個接口類 然后需要寫這接口的實現類

現在就是MyBATis 通過幫我們生成了這個實現了。而我們要做的就是配置好這實現類的 XML。

也就是說 使用了mybatis 開發中不需要寫數據庫的實現類 而只要實現接口 所有的實現又mybatis的配置文件去生成。

3.使用mappper代理方式要遵循什么規范?

1.接口名要和對應的映射文件的名稱相同(只是后綴名不同)

2.接口的全限定名要和mapper映射文件的namespace 一致

3.接口中的方法名要和mapper映射文件中的唯一標識的id相同

4.要在同一目錄下面(可以創建一個源文件夾,然后創建一個和src目錄下面相同的包,已達到xml和接口分離的作用)

5: 接口的方法返回類型和mapper 映射文件返回的類型一致

6 接口的方法參數類型和mapper 映射文件輸入類型要一致

For Example

1.建立一個web項目

2.在webRoot文件夾下面lib中導入mybatis的jar、log4j的jar(日志文件)、mysql-connection的jar(mysql連接數據庫的jar包),使用什么數據庫就導入什么jar包

注意:要添加到構建路徑中才能夠被使用

3.創建一個源文件夾用於存放mybatis的主配置文件和接口的映射文件(要創建和src目錄下面的接口的包名相同)、還有properties文件(鍵值對文件)

注意:配置文件如果要用於配置數據庫一定要寫正確不能多加空格,字符,寫得顛三倒四

  如com.mysql.jdbc.Driver 不能寫成com.jdbc.mysql.Driver

  也不能多加一個點,少一個點

config|--com.imp

         |--main_config.xml

    |--main_config.properties

 

1 driver=com.mysql.jdbc.Driver 2 url=jdbc\:mysql\://localhost\:3306/myweb?characterEncoding\=utf-8&&useSSL=false 3 username=root 4 password=root
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd" >
<configuration>
    <properties resource="main_config.properties"></properties>
    <typeAliases>
    <package name="com.pojo"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${username}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>    
    </environments>
    <mappers>
    <package name="com.imp"/>
    </mappers>
</configuration>
main_config.xml

 

 

4.寫一個對應數據庫的pojo類(com.pojo)

package com.pojo; public class Students { /** * 學號 姓名 年齡 */
    private int id; private String name; private int age; /** * 默然的構造函數 */
    public Students() { super(); // TODO 自動生成的構造函數存根
 } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } }
Students.java

 

5.寫一個接口類(com.imp)

 1 package com.imp;  2 
 3 import java.util.List;  4 
 5 import com.pojo.Students;  6 
 7 public interface IStudents {  8     
 9     List<Students> selectAll(); 10 
11 }
IStudents.java

 

6.寫一個和接口名相同的映射文件(xml)(com.imp)

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
 3 <!-- 命名空間要和接口的全限定名相同 -->
 4 <mapper namespace="com.imp.IStudents">
 5 <select id="selectAll" resultType="students">
 6  select * from students  7 </select>
 8 
 9   
10 </mapper>
IStudents.xml

 

7.寫一個工具類(com.util)

 1 package com.util;  2 
 3 import java.io.IOException;  4 import java.io.InputStream;  5 
 6 import org.apache.ibatis.io.Resources;  7 import org.apache.ibatis.session.SqlSession;  8 import org.apache.ibatis.session.SqlSessionFactory;  9 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 10 
11 public class DataBaseManager { 12     
13 
14     /**
15  * 使用的是靜態方法 16  * @return
17  * @throws IOException 18      */
19     public static SqlSession getSqlSession() throws IOException{ 20         //加載配置文件
21         InputStream inputStream = Resources.getResourceAsStream("main_config.xml"); 22         //創建會話工廠
23         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); 24         //開啟會話
25         SqlSession sqlSession = sqlSessionFactory.openSession(); 26         
27         
28         return sqlSession; 29  } 30 
31 }
DataBaseManager .java

 

8.寫一個測試類

 1 package com.test;  2 
 3 import java.io.IOException;  4 import java.util.List;  5 import org.apache.ibatis.session.SqlSession;  6 import org.junit.Test;  7 import com.imp.IStudents;  8 import com.pojo.Students;  9 import com.util.DataBaseManager; 10 
11 public class TestBasic { 12  @Test 13     public void testSelectAll() throws IOException{ 14         //獲取sqlsession
15         SqlSession sqlSession = DataBaseManager.getSqlSession(); 16  System.out.println(sqlSession); 17         
18         IStudents mapper =sqlSession.getMapper(IStudents.class); 19         List<Students> all = mapper.selectAll(); 20         for (Students students : all) { 21             System.out.println(students.getId()+students.getName()+students.getAge()); 22  } 23         
24  } 25 }
TestBasic .java

 

9.最后生成的目錄如下圖所示

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM