使用這種模式程序員須要編寫mapper.xml文件,程序員編寫mapper接口要遵循規範,mybatis能夠自動生成mapper接口實現類代理對象。html
開發規範:
1.在mapper.xml中namespace等於mapper接口地址。
<mapper namespace="com.test.dao.UserMapper">
2.mapper.java接口中的方法名和mapper.xml中statement的id的名字一致。
<select id="findUserById"
3.mapper.java接口中方法輸入參數類型和mapper.xml中statement的parameterType指定的類型保持一致。
4.mapper.java接口中的方法返回值類型和mapper.xml中statement的resultType指定的類型保持一致。java
案例以下:程序員
1.User.java 文件參考MyBatis實現增刪改查spring
2.SqlMapConfig.xmlsql
1 <!DOCTYPE configuration 2 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 4 <configuration> 5 <!-- 和spring整合後 environments配置將廢除 mybatis-config.xml--> 6 <environments default="development"> 7 <environment id="development"> 8 <!-- 使用jdbc事務管理--> 9 <transactionManager type="JDBC" /> 10 <!-- 數據庫鏈接池--> 11 <dataSource type="POOLED"> 12 <property name="driver" value="oracle.jdbc.driver.OracleDriver" /> 13 <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /> 14 <property name="username" value="dsx" /> 15 <property name="password" value="admin" /> 16 </dataSource> 17 </environment> 18 </environments> 19 20 <!-- 加載mapper.xml --> 21 <mappers> 22 <mapper resource="com/test/dao/UserMapper.xml" /> 23 </mappers> 24 25 </configuration>
3.UserMapper.java接口數據庫
package com.test.dao; import com.test.entity.User; /** * * @author Mr * Mapper接口代理模式開發命名必定是:實體類名+Mapper * * 使用mapper開發步驟: * 1.編寫接口和mapper.xml要遵循4個指標 * 2.SqlMapConfig.xml中加載UserMapper.xml */ public interface UserMapper { //根據用戶id查詢用戶 public User findUserById(int id); //添加用戶 public void addUser(User user); //刪除用戶條目 public void delUserById(int id); //根據id更新用戶信息 public void upUserById(int id); }
4.UserMapper.xml配置文件 和第3步在同一包下apache
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <!-- namespace命名空間是UserMapper接口的全類名--> 6 <mapper namespace="com.test.dao.UserMapper"> 7 <!-- 這裏能夠配置多個sql 8 根據用戶的id查詢 9 --> 10 <select id="findUserById" parameterType="int" resultType="com.test.entity.User"> 11 select * from userss WHERE ID=#{id} 12 </select> 13 <!-- 添加用戶 --> 14 <insert id="addUser" parameterType="com.test.entity.User"> 15 insert into userss values(seq_users_id.nextval,#{username},#{birthday},#{sex},#{address}) 16 </insert> 17 18 </mapper>
5.測試類session
1 package com.test.demo; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.Date; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory; 10 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 11 12 import com.test.dao.UserMapper; 13 import com.test.entity.User; 14 15 /** 16 * 17 * @author Mr 18 * 只寫了接口,沒有寫接口的實現類 19 */ 20 public class Test3 { 21 22 public static void main(String[] args) { 23 // TODO Auto-generated method stub 24 try { 25 //mybatis核心配置文件 26 String resource = "SqlMapConfig.xml"; 27 //讀取配置文件 28 InputStream inputStream = Resources.getResourceAsStream(resource); 29 //獲取工廠 30 SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream); 31 //獲取數據庫操做對象 32 SqlSession sqlSession = sf.openSession(); 33 //經過反射機制自動生成接口實現類 34 UserMapper um = sqlSession.getMapper(UserMapper.class); 35 /* //調用方法獲取對象 36 User user = um.findUserById(31); 37 System.out.println(user);*/ 38 39 //添加用戶 40 User user = new User("老趙", new Date(), "1", "寧夏回族自治區"); 41 um.addUser(user); 42 sqlSession.commit(); 43 System.out.println(user); 44 45 } catch (IOException e) { 46 // TODO Auto-generated catch block 47 e.printStackTrace(); 48 } 49 50 51 } 52 53 }