MyBatis的Dao開發模式,先來一個例子java
1.User.java 實體類以及sql
SqlMapConfig.xml配置文件
,見上一篇文章數據庫
2.UserDao.java接口apache
1 package com.test.dao; 2 3 import com.test.entity.User; 4 5 /** 6 * 7 * @author Mr 8 * dao模式1 例子 9 */ 10 public interface UserDao { 11 //根據id查找用戶 12 public User findUserById(int id); 13 //添加數據到數據庫 14 public void insertUser(User user); 15 //刪除一條數據 根據id刪除 16 public void deleteUser(int id); 17 }
3.UserDaoImpl.java接口的實現類session
1 package com.test.dao.impl; 2 3 import org.apache.ibatis.session.SqlSession; 4 import org.apache.ibatis.session.SqlSessionFactory; 5 6 import com.test.dao.UserDao; 7 import com.test.entity.User; 8 /** 9 * 10 * @author Mr 11 * 接口的實現類 12 */ 13 public class UserDaoImpl implements UserDao{ 14 //工廠私有化 15 private SqlSessionFactory sqlSessionFactory; 16 //添加帶參的構造方法 17 public UserDaoImpl(SqlSessionFactory sqlSessionFactory) { 18 this.sqlSessionFactory = sqlSessionFactory; 19 } 20 21 @Override 22 public User findUserById(int id) { 23 //獲取數據庫操做對象 24 SqlSession sqlSession = sqlSessionFactory.openSession(); 25 //操做數據庫 經過selectOne獲取一條記錄 26 User user = sqlSession.selectOne("test.findUserById", id); 27 //關閉鏈接 釋放資源 28 sqlSession.close(); 29 return user; 30 } 31 32 @Override 33 public void insertUser(User user) { 34 //獲取數據庫操做對象 35 SqlSession sqlSession = sqlSessionFactory.openSession(); 36 //使用insert 添加數據 37 sqlSession.insert("test.insertUser", user); 38 //提交事務 39 sqlSession.commit(); 40 //釋放資源 41 sqlSession.close(); 42 43 } 44 45 @Override 46 public void deleteUser(int id) { 47 //獲取數據庫操做對象 48 SqlSession sqlSession = sqlSessionFactory.openSession(); 49 //刪除一條記錄 50 sqlSession.delete("test.delUserById", id); 51 //提交事務 52 sqlSession.commit(); 53 //釋放資源 54 sqlSession.close(); 55 56 } 57 58 }
4.User.xml配置文件mybatis
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命名空間,爲了對sql語句進行隔離,方便管理 ,mapper開發dao方式,使用namespace有特殊做用 --> 6 <mapper namespace="test"> 7 <!-- 這裏能夠配置多個sql 8 根據用戶的id查詢 9 經過select進行查詢 10 select * from userss WHERE ID=#{id} 從plsql中測試完成複製過來 11 parameterType 指定輸入參數的類型 這裏是int 12 #{} 表示佔位符 13 #{id} 其中的id表示輸入參數,參數的名稱是id,若是輸入參數是簡單類型,能夠使用#{} 14 resultType 指定sql語句輸出結果的類型,咱們這裏是Java對象 15 --> 16 <select id="findUserById" parameterType="int" resultType="com.test.entity.User"> 17 select * from userss WHERE ID=#{id} 18 </select> 19 20 <!-- 根據姓名模糊查詢 --> 21 <select id="findUserByName" parameterType="java.lang.String" resultType="com.test.entity.User"> 22 select * from userss WHERE username LIKE '%${value}%' 23 </select> 24 <!-- 添加用戶 --> 25 <insert id="insertUser" parameterType="com.test.entity.User"> 26 insert into userss values(seq_users_id.nextval,#{username},#{birthday},#{sex},#{address}) 27 </insert> 28 <!-- 刪除用戶 --> 29 <delete id="delUserById" parameterType="java.lang.Integer"> 30 DELETE userss WHERE ID=#{id} 31 </delete> 32 <!-- 更新 --> 33 <update id="upUser" parameterType="com.test.entity.User"> 34 UPDATE userss SET username=#{username},address=#{address} WHERE ID=#{id} 35 </update> 36 37 </mapper>
5.Test.java測試類app
1 package com.test.demo; 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.SqlSessionFactory; 8 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 9 10 import com.test.dao.UserDao; 11 import com.test.dao.impl.UserDaoImpl; 12 import com.test.entity.User; 13 14 /** 15 * 16 * @author Mr 17 * 測試dao開發模式 18 */ 19 public class Test2 { 20 21 public static void main(String[] args) { 22 try { 23 //mybatis核心配置文件 24 String resource = "SqlMapConfig.xml"; 25 //讀取配置文件 26 InputStream config = Resources.getResourceAsStream(resource); 27 //獲取sqlSessionFactory工廠 28 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(config); 29 //建立對象工廠傳遞到impl類種 30 UserDao udao = new UserDaoImpl(sqlSessionFactory); 31 User user = udao.findUserById(31); 32 System.out.println(user); 33 } catch (IOException e) { 34 // TODO Auto-generated catch block 35 e.printStackTrace(); 36 } 37 38 } 39 40 }