1. 程式人生 > >MyBatis的Dao開發模式

MyBatis的Dao開發模式

獲取 創建 package exce bat name interface 1.0 構造

MyBatis的Dao開發模式,先來一個例子

1.User.java 實體類以及

SqlMapConfig.xml配置文件

,見上一篇文章

2.UserDao.java接口

 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接口的實現類

 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配置文件

 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測試類

 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 }

MyBatis的Dao開發模式