MyBatis配置

編寫MyBatis配置文件(配置文件能夠在上面下載的壓縮包root下找到PDF,裏面也有示例配置)java

Emp.xmlsql

複製代碼
 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 <mapper namespace="cn.happy.dao.EmpDao">
 6     <resultMap id="empMap" type="cn.happy.entity.Emp">
 7         <id property="empId" column="empNo"/>
 8         <result property="empName" column="ENAME"/>
 9         <result property="job"/>
10         <result property="mgr"/>
11         <result property="hiredate"/>
12         <result property="sal"/>
13         <result property="comm"/>
14         <association property="dept" javaType="cn.happy.entity.Dept">
15             <id property="deptNo"/>
16             <result property="deptName" column="DNAME"/>
17             <result property="loc"/>
18         </association>
19     </resultMap>
20     
21     <select id="getAllEmpInfo" resultMap="empMap">
22         select * from Emp e,Dept d where e.deptno=d.deptno
23     </select>
24     
25     <!-- <select id="countAll" resultType="int" > 
26     select count(*) from Emp
27     </select> -->
28 </mapper>
複製代碼

其中幾個經常使用的元素的做用以下:( 1.environment   和   2.mappers元素)數據庫

1.environment   元素:用於配置多個數據環境,這樣能夠映射多個數據庫信息。採用default來指定默認使用哪一個數據庫環境。environment則是每一個數據庫環境的具體配置,apache

 包括數據鏈接信息和事務管理信息。服務器

  在MyBatis中有兩個事物管理器類型(即type="[JDBC|MANAGED]")session

    JDBC:直接使用JDBC控制事務,它依賴於從數據庫獲得的鏈接來管理事務範圍。mybatis

    MANAGED:MyBatis本身不負責控制事務,它會讓容器來管理事務的整個生命週期(如經過Spring或javaEE應用服務器)app

  數據源類型有三種:UNPOOLED、POOLED、JNDI。ui

  UNPOOLED:這個數據源的實現是每次被請求時簡單打開和關閉鏈接,它有一點慢,這是對簡單應用程序的一個很好的選擇,由於它不須要及時的可用鏈接。spa

  POOLED:採用鏈接池以免建立新的鏈接實例時必要的初始鏈接和認證時間。這是一種當前Web應用程序快速響應請求的很流行的方法。

  JNDI:這個數據源的實現是爲了使用如Spring 或 應用服務器這類的容器。容器能夠集中或在外部配置數據源,MyBatis經過JNDI獲取數據源。

2.mappers元素:  包含全部mapper的列表,告訴MyBatis到哪裏去找SQL語句。mapper主要是定義SQL映射文件。

 

03. 建立實體化類和數據庫接口   (此處指演示Dept類。。字段比較少,好操做!)

複製代碼
1 public class Dept {    
2     private Integer deptNo;
3 
4     private String deptName;
5 
6     private String loc;
    (省略其餘getter() and Setter()...) 7 }
複製代碼

 

04.建立SQL映射文件(DeptMapper.xml   其中添加了對應數據庫增刪改查(模糊查詢)的配置:非ResultMap)

複製代碼
 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 <mapper namespace="cn.happy.dao.DeptDao">
 6 
 7 <select id="getAllDept" resultType="cn.happy.entity.Dept">
 8     select * from Dept
 9 </select>
10 
11 <insert id="addDept" parameterType="cn.happy.entity.Dept">
12     insert into dept values(SEQ_NUM.Nextval,#{deptName},#{loc})
13 </insert>
14 
15 <delete id="delDept" parameterType="cn.happy.entity.Dept">
16     delete from dept where deptNo=#{deptNo}
17 </delete>
18 <update id="">
19 
20 </update>
21 <select id="ilikeDept" parameterType="cn.happy.entity.Dept" resultType="cn.happy.entity.Dept">
22     select * from Dept where dname like '%${dname}%'
23 </select>
24 </mapper>
複製代碼

 對應數據庫增刪改查(模糊查詢)的簡單操做:

1 package cn.happy.test;
  2 
  3 import java.io.IOException;
  4 import java.io.InputStream;
  5 import java.util.List;
  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 import org.junit.Before;
 12 import org.junit.Test;
 13 
 14 import cn.happy.dao.DeptDao;
 15 import cn.happy.entity.Dept;
 16 import cn.happy.entity.Emp;
 17 
 18 public class Test3_MyBatis {
 19     SqlSession session ;
 20     @Before
 21     public void getInit() throws IOException{
 22         InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
 23         SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(stream);
 24         session= sf.openSession();
 25     }
 26     
 27     /**
 28      * ilikeDept
 29      */
 30     @Test
 31     public void Test_ilikeDept(){
 32         Dept dept = new Dept();
 33         dept.setDname("務");
 34         List<Dept> list = session.selectList("ilikeDept",dept);
 35         for (Dept item : list) {
 36             System.out.println(item);
 37         }
 38         
 39         
 40     }
 41     
 42     
 43     /**
 44      * delDept
 45      */
 46     @Test
 47     public void Test_delDept(){
 48         int count = session.delete("delDept",63);
 49         session.commit();
 50         System.out.println(count);
 51     }
 52     
 53     /**
 54      * addDept
 55      */
 56     @Test
 57     public void Test_addDept(){
 58         Dept dept=new Dept();
 59         dept.setDname("行政");
 60         dept.setLoc("五道口");
 61         int count = session.insert("addDept",dept);
 62         session.commit();
 63         System.out.println(count+"\tsave ok!");
 64     }
 65     
 66     /**
 67      * resultMap
 68      */
 69     @Test
 70     public void Test_getAllEmpInfo(){
 71         List<Emp> list = session.selectList("getAllEmpInfo");
 72         for (Emp item : list) {
 73             System.out.println(item.getEmpName());
 74         }
 75     }
 76     
 77     /*
 78      * 條件查詢
 79      */
 80     @Test
 81     public void Test03() throws IOException{
 82         
 83         //List<Dept> list = session.selectList("cn.happy.dao.DeptDao.getAllDept");
 84         DeptDao mapper = session.getMapper(DeptDao.class);
 85         List<Dept> list = mapper.getAllDept();
 86         
 87         for (Dept item : list) {
 88             System.out.println(item.getDeptNo());
 89         }
 90         //System.out.println(((Dept)obj).getDeptName());
 91     
 92     }
 93     
 94     
 95     
 96     /*
 97      * mybatis  查詢員工表記錄數
 98      */
 99     @Test
100     public void Test02() throws IOException{
101         InputStream stream = Resources.getResourceAsStream("mybatis-config.xml");
102         SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(stream);
103         SqlSession session = sf.openSession();
104         Object object = session.selectOne("cn.happy.dao.EmpDao.countAll");
105         System.out.println(object);
106         session.close();
107     }
108     
109     
110     @Test
111     public void Test01() throws IOException {
112            String resource = "mybatis-config.xml";
113            InputStream inputStream = Resources.getResourceAsStream(resource);
114            //得到會話工廠
115            SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
116            //會話
117            SqlSession session = sf.openSession();
118            //經過命名空間惟一鎖定要執行的sql
119            Dept dept = (Dept)session.selectOne("cn.happy.entity.Dept.selectDeptByNo", "63");
120            System.out.println(dept);
121            session.close();
122     }
123 
124 }
相關文章
相關標籤/搜索