MyBatis配置

来源:http://www.cnblogs.com/fangyan-fight2015/archive/2016/12/17/6189429.html
-Advertisement-
Play Games

編寫MyBatis配置文件(配置文件可以在上面下載的壓縮包root下找到PDF,裡面也有示例配置) Emp.xml 其中幾個常用的元素的作用如下:( 1.environment 和 2.mappers元素) 1.environment 元素:用於配置多個數據環境,這樣可以映射多個資料庫信息。採用de ...


編寫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 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • <mvc:annotation-driven/> 這個便簽會註冊2個自定義攔截器,所以導致請求過來就會自己去走註冊的這2個攔截器和定義的一堆bean 但是這個便簽是必須得定義的 直接貼代碼吧 通過自定義攔截器來過濾掉靜態資源 這個問題困擾了我2天,整整熬了2天,翻遍了博客員和百度,各種瞎扯淡,也反思 ...
  • MyGraphicsView.h MyGraphicsView.cpp 三種繪製方法效果圖: ...
  • 一、model 到目前為止,當我們的程式涉及到資料庫相關操作時,我們一般都會這麼搞: 創建資料庫,設計表結構和欄位 使用 MySQLdb 來連接資料庫,並編寫數據訪問層代碼 業務邏輯層去調用數據訪問層執行資料庫操作 django為使用一種新的方式,即:關係對象映射(Object Relational ...
  • 一、前言 發下牢騷,這段時間要做項目,又要學框架,搞得都沒時間寫筆記,但是覺得這知識學過還是要記錄下。進入主題了 1.1、Hibernate簡介 什麼是Hibernate?Hibernate有什麼用? Hibernate是開放源代碼的對象關係映射框架,用來把java的對象映射到資料庫中的關係數據中, ...
  • JVM是按照運行時數據的存儲結構來劃分記憶體結構的。JVM在運行Java程式時,將他們劃分成不同格式的數據,分別存儲在不同的區域,這些數據就是運行時數據。運行時數據區域包括堆,方法區,運行時常量池,程式計數器,虛擬機棧,本地方法棧。 ...
  • 概述: Apache Solr是一個用JAVA語言構建在Apache Lucene項目上的開源的企業級搜索平臺。主要特性包含:全文搜索、命中高亮、片段式搜索、實時索引、動態集群、資料庫集成、NoSQL特性和富文本處理。提供分散式搜索和索引複製,設計時便充分考慮了擴展和容錯能力。Solr目前是第二流行 ...
  • 1、節選自Python Documentation 3.5.2的部分解釋 Objects are Python’s abstraction for data. All data in a Python program is represented by objects or by relations ...
  • POI和Excel簡介 JAVA中操作Excel的有兩種比較主流的工具包: JXL 和 POI 。jxl 只能操作Excel 95, 97, 2000也即以.xls為尾碼的excel。而poi可以操作Excel 95及以後的版本,即可操作尾碼為 .xls(03版)和.xlsx(07版)兩種格式的ex ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...