亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Spring集成MyBatis框架

2019-11-11 04:08:23
字體:
來源:轉載
供稿:網友

SPRing集成MyBatis框架

    java在寫數據庫查詢時,我接觸過四種方式:

    1、純Java代碼,引用對應的數據庫驅動包,自己寫連接與釋放邏輯(可以用連接池)

    這種模式實際上性能是非常不錯的,但是使用起來并不是非常方便:一是要手工為Connection做獲取與釋放,大量的冗余代碼也容易出錯;另一個是,復雜的SQL用字符串寫起來簡直不可維護(換行、可視長度、參數都是問題)。

    2、使用Spring JdbcTemplate

    這個其實還是挺不錯的,配置比較簡單,功能豐富上比手工管理Connection要舒服多了,而且代碼也比較簡潔。突出的問題就是SQL維護還是挺麻煩的。

    3、使用Hibernate框架

    一句話,配置很麻煩,用起來還是挺不錯的。但是有一個致命缺陷,它并不能像單表查詢一樣可以幫我們完成多表的查詢。如果有復雜的多表查詢或查詢條件,還是得用SQL去查,這對于一些業務邏輯復雜或者會經常變更的業務來說,后期維護就是災難,改到想哭(因為真的是很混亂,一定要開始就規劃好)。

    4、使用MyBatis框架

    這個是當前我所做項目最喜歡用的數據庫持久化框架了,它通過xml配置可以非常簡單直觀地幫你完成各種條件、判斷、多表的綜合查詢,實現方式比Java代碼拼SQL要舒服太多了,在這方面更是甩Hibernate一條街。要說易用性,其實也挺容易用的,但是配置上也要對一些數據做映射,不過相對而言更加靈活。它的實體類并不一定要是數據庫物理表,而可以是任意查詢出來的數據集(類似數據傳輸對象DTO)。

   

    簡單總結一下:

    配置容易程度:1 > 2 > 4 > 3

    使用便捷程度:2 > 3 > 4 > 1

    查詢靈活程度:4 > 1 = 2 > 3

    下面將開始介紹Spring集成MyBatis的配置和使用,項目基于Maven構建,連接MySQL數據庫:

 

一、Maven配置

復制代碼
 1         <!-- Spring Base --> 2         <dependency> 3             <groupId>org.springframework</groupId> 4             <artifactId>spring-beans</artifactId> 5             <version>4.2.5.RELEASE</version> 6         </dependency> 7         <dependency> 8             <groupId>org.springframework</groupId> 9             <artifactId>spring-context</artifactId>10             <version>4.2.5.RELEASE</version>11         </dependency>12         <dependency>13             <groupId>org.springframework</groupId>14             <artifactId>spring-jdbc</artifactId>15             <version>4.2.5.RELEASE</version>16         </dependency>17         <!-- MySql -->18         <dependency>19             <groupId>mysql</groupId>20             <artifactId>mysql-connector-java</artifactId>21             <version>5.1.39</version>22         </dependency>23         <dependency>24             <groupId>com.mchange</groupId>25             <artifactId>c3p0</artifactId>26             <version>0.9.5.2</version>27         </dependency>28         <dependency>29             <groupId>org.mybatis</groupId>30             <artifactId>mybatis</artifactId>31             <version>3.4.1</version>32         </dependency>33         <dependency>34             <groupId>org.mybatis</groupId>35             <artifactId>mybatis-spring</artifactId>36             <version>1.3.0</version>37         </dependency>復制代碼

    關于Spring的包引用,我這里的引用只作為參考,其它web、mvc的包視各業務來引用。如果不用Maven,就自己乖乖引jar包,或者使用其它包管理吧。

 

二、Spring配置

復制代碼
 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3        xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 4  5     <bean id="myDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> 6         <property name="driverClass" value="com.mysql.jdbc.Driver" /> 7         <property name="jdbcUrl" value="jdbc:mysql://xxx.xxx.xxx.xxx:3306/xxxdb" /> 8         <property name="user" value="lekko" /> 9         <property name="passWord" value="xxx" />10         <property name="minPoolSize" value="2" />11         <property name="maxPoolSize" value="100" />12     </bean>13 14     <bean id="sqlsessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">15         <property name="mapperLocations" value="classpath:mapper/**/*Mapper.xml" />16         <property name="dataSource" ref="myDataSource" />17     </bean>18  19     <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">20         <property name="basePackage" value="lekko.code.**.dao" />21     </bean>22 23 </beans>復制代碼

    這里的配置比較關鍵。

    1、myDataSource是一個ComboPooledDataSource類型的實例bean,它實現了數據庫連接池的功能。

    2、sqlSessionFactory是MyBatis用于建立查詢的工廠實例,它包括了一個mapperLocations定位,以及dataSource數據庫連接來源。

            - mapperLocations指定了MyBatis將會搜索的路徑,支持Ant風格路徑。在指定的路徑下,MyBatis會把讀取其中的xml查詢,并將用于后面的dao映射。

            - dataSource是來源數據庫,這里直接就是前面的連接池。

    3、mapperScannerConfigurer是MyBatis用于自動建立數據庫dao類的配置器。

            - basePackage指定了要掃描的包名稱,支持Ant風格路徑。在指定的包名稱下,MyBatis通過Spring,會自動發現對應包名下的dao接口,在后面需要查詢時,為接口提供實現。

    下圖是MyBatis的大體框架,可以作為上述配置的一個補述:

    也就是說,MyBatis會根據XML配置Mapper去組成數據庫查詢,然后把查詢中所涉及的參數、返回結果,都映射成為Java對象(或元數據類型)。最后交由數據庫去執行,返回。三、dao接口復制代碼
 1 package lekko.code.test.dao; 2  3 import lekko.code.test.model.TestModel; 4 import org.springframework.stereotype.Repository; 5  6 /** 7  * 測試DAO 8  */ 9 @Repository10 public interface TestDao {11 12     TestModel getTest(String name);13 14     int addTest(String name);15 16 }復制代碼

    上面這個接口,由于屬于包lekko.code.**.dao,所以會被識別為需要映射的dao。

    接口只有兩個方法,一個是查詢getTest,一個是新增addTest。至于getTest已經根據需要,我這里提取成了一個實體類TestModel:

復制代碼
 1 package lekko.code.test.model; 2  3 /** 4  * 測試數據類 5  */ 6 public class TestModel { 7  8     private int id; 9     private String name;10 11     public String getName() {12         return name;13     }14     public void setName(String name) {15         this.name = name;16     }17 18     public int getId() {19         return id;20     }21     public void setId(int id) {22         this.id = id;23     }24 25 }復制代碼

 

四、Mapper映射

復制代碼
 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3  4 <mapper namespace="lekko.code.test.dao.TestDao"> 5  6     <select id="getTest" resultType="lekko.code.test.model.TestModel"> 7         select id, name from Test where name = #{name} 8     </select> 9 10     <insert id="addTest">11         insert into Test (name, createdTime) values (#{name}, now())12     </insert>13 14 </mapper>復制代碼

    語法我就不詳細解釋了,百度一下就有。各種條件、判斷、參數都有解釋。我本人非常喜歡這種自由度高,sql看起來也很舒服的配置方式。

    

    至此,大體的使用介紹已經完畢。MyBatis還是挺不錯的,建議大家在業務合適的情況下試用試用。

     

from: http://www.cnblogs.com/lekko/p/6367732.html?hmsr=toutiao.io&utm_medium=toutiao.io&utm_source=toutiao.io


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产福利成人在线| 国产精品第2页| 国产精品一区二区三区久久| 亚洲丁香婷深爱综合| 日韩在线中文字| 日韩成人av一区| 午夜精品免费视频| 久久精品精品电影网| 精品小视频在线| 成人免费在线视频网址| xvideos成人免费中文版| 日韩av综合网站| 欧洲美女免费图片一区| 欧美成人免费小视频| 日韩午夜在线视频| 欧美尤物巨大精品爽| 日韩免费观看视频| 欧美激情一区二区三区久久久| 日韩在线观看免费| 国产精品1区2区在线观看| 91久久精品美女高潮| 久久亚洲私人国产精品va| 免费成人高清视频| 国产成人自拍视频在线观看| 久久久久在线观看| 91精品久久久久久综合乱菊| 亚洲国产精品嫩草影院久久| 日韩国产一区三区| 中文国产成人精品久久一| 欧美日韩中文字幕在线| 亚洲人成网站在线播| 精品中文字幕在线2019| 久久av资源网站| 欧美电影在线免费观看网站| 亚洲电影在线看| 亚洲四色影视在线观看| 亚洲男人的天堂网站| 亚洲国产天堂网精品网站| 欧美性在线观看| 91在线免费看网站| 中文字幕欧美精品日韩中文字幕| 国产精品999| 97国产精品免费视频| 久久影视电视剧凤归四时歌| 亚洲性生活视频在线观看| 一个人看的www欧美| 国产精品白嫩初高中害羞小美女| 久久91亚洲精品中文字幕奶水| 精品视频一区在线视频| 亚洲第一区中文字幕| 亚洲第一在线视频| 亚洲天堂一区二区三区| 97人人模人人爽人人喊中文字| 国产一区二区在线免费视频| 国产乱人伦真实精品视频| 欧美成年人视频| 美女精品久久久| 精品国产一区二区三区久久狼5月| 色噜噜久久综合伊人一本| 日韩大片在线观看视频| 亚洲天堂成人在线视频| 日韩在线视频二区| 国产福利成人在线| 97精品一区二区三区| 国内免费久久久久久久久久久| 欧美国产日韩二区| 亚洲人成网7777777国产| 91高潮在线观看| 色婷婷综合久久久久中文字幕1| 狠狠躁夜夜躁人人爽超碰91| 国产精品久久久久久久久免费看| 日韩在线视频观看| 岛国av一区二区在线在线观看| 成人福利网站在线观看| 亚洲国产日韩欧美在线图片| 亚洲精品国产品国语在线| 欧美日韩综合视频网址| 国产精品高清免费在线观看| 日韩欧美极品在线观看| 国产一区二中文字幕在线看| 秋霞av国产精品一区| 成人免费看黄网站| 久久中文字幕国产| 成人免费在线视频网址| 日本午夜精品理论片a级appf发布| 国产精品白丝jk喷水视频一区| 奇门遁甲1982国语版免费观看高清| 欧美一区二粉嫩精品国产一线天| 国产精品成人免费电影| 亚洲精品日韩丝袜精品| 欧美一区二区三区免费观看| 亚洲视频国产视频| 精品国产91乱高清在线观看| 色狠狠av一区二区三区香蕉蜜桃| 97国产精品久久| 久热精品视频在线免费观看| 日韩精品久久久久| 日韩小视频在线观看| 亚洲第一福利视频| 亚洲国产成人爱av在线播放| 国产视频在线观看一区二区| 91wwwcom在线观看| 国产精品羞羞答答| 亚洲视频国产视频| 一区二区三区视频观看| 国产精品成人aaaaa网站| 亚洲午夜色婷婷在线| 日韩二区三区在线| 日韩欧美一区二区三区| 狠狠色噜噜狠狠狠狠97| 国产日韩欧美日韩| 久久国产精品久久久| 久久久久成人网| 欧美三级xxx| 国内成人精品视频| 欧美激情国产精品| 国产成人综合一区二区三区| 美女扒开尿口让男人操亚洲视频网站| 欧美成人免费在线观看| 亚洲精品视频播放| 久久国产精品网站| 97精品国产97久久久久久春色| 2019国产精品自在线拍国产不卡| 一区二区三区视频观看| 亚洲系列中文字幕| 欧美精品电影免费在线观看| 日韩免费精品视频| 欧美国产日韩在线| 日韩精品在线播放| 中文字幕在线视频日韩| 亚洲福利在线视频| 日韩国产欧美精品一区二区三区| 日韩欧美有码在线| 欧美日韩免费在线观看| 国产精品久久久一区| 欧洲亚洲免费视频| 91免费人成网站在线观看18| 久久久亚洲影院| 91精品久久久久久久久中文字幕| 亚洲18私人小影院| 精品国产一区二区三区在线观看| 欧美日韩国产麻豆| 久久视频在线免费观看| 精品国产91久久久| 国产精品香蕉在线观看| 国产精品综合网站| 亚洲黄色av女优在线观看| 3344国产精品免费看| 日韩av三级在线观看| 精品自拍视频在线观看| 成人精品久久久| 欧美裸体男粗大视频在线观看| 日韩电影在线观看永久视频免费网站| 亚洲人成伊人成综合网久久久| 亚洲欧美日韩精品久久奇米色影视| 久久久999国产精品| 国产精品小说在线| 国产精品直播网红| 亚洲国内高清视频| 欧美黑人性视频| 韩国三级日本三级少妇99| 精品国偷自产在线视频99| 国产精品久久久久久久久久久不卡| 国产日韩欧美日韩|