程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> MyBatis配置,mybatis配置文件

MyBatis配置,mybatis配置文件

編輯:JAVA綜合教程

MyBatis配置,mybatis配置文件


編寫MyBatis配置文件(配置文件可以在上面下載的壓縮包root下找到PDF,裡面也有示例配置)

Emp.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 <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則是每個數據庫環境的具體配置,

 包括數據連接信息和事務管理信息。

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

    JDBC:直接使用JDBC控制事務,它依賴於從數據庫得到的連接來管理事務范圍。

    MANAGED:MyBatis自己不負責控制事務,它會讓容器來管理事務的整個生命周期(如通過Spring或javaEE應用服務器)

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

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

  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 }

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved