MyBatis的Dao開發模式

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 }
相關文章
相關標籤/搜索