Spring和MyBatis環(huán)境整合

SSH框架的結(jié)合幾乎家喻戶曉暖眼,但是一般的中小項目,使用Spring和MyBatis就夠了位岔,而且MyBatis輕便好使校赤,易上手,值得大家嘗試一次午绳。

  開篇簡介:

  Spring:

Spring是一個輕量級的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架置侍。

兩個重要模塊:Spring 面向方面編程(AOP)和控制反轉(zhuǎn) (IOC) 容器。

控制反轉(zhuǎn)模式(也稱作依賴性介入)的基本概念是:不創(chuàng)建對象拦焚,但是描述創(chuàng)建它們的方式蜡坊。在代碼中不直接與對象和服務(wù)連接,但在配置文件中描述哪一個組件需要哪一項服務(wù)赎败。

容器 (在 Spring 框架中是 IOC 容器) 負責(zé)將這些聯(lián)系在一起秕衙。在典型的 IOC 場景中,容器創(chuàng)建了所有對象僵刮,并設(shè)置必要的屬性將它們連接在一起据忘,決定什么時間調(diào)用方法。

?  MyBatis:

MyBatis 是支持普通 SQL查詢搞糕,存儲過程和高級映射的優(yōu)秀持久層框架勇吊。MyBatis 消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及

結(jié)果集的檢索。


MyBatis 使用簡單的 XML或注解用于配置和原始映射寞宫,將接口和 Java 的POJOs(Plain Old Java Objects萧福,普通的 Java

對象)映射成數(shù)據(jù)庫中的記錄。

?  開始整合Spring和MyBatis:

  jar列表截圖:

  2辈赋、創(chuàng)建一個簡單的數(shù)據(jù)庫(springmybaitis)和數(shù)據(jù)表(user---id,username,password)鲫忍。

  3、以用戶管理為例钥屈,創(chuàng)建model和dao.

  文件列表截圖如下:

  model----User.java

1 package com.springMyBatis.system.model;

2

3 public class User {

4? ? private int id;

5? ? private String username;

6? ? private String password;

7? ? public User(){}

8? ? public int getId() {

9? ? ? ? return id;

10? ? }

11? ? public void setId(int id) {

12? ? ? ? this.id = id;

13? ? }

14? ? public String getUsername() {

15? ? ? ? return username;

16? ? }

17? ? public void setUsername(String username) {

18? ? ? ? this.username = username;

19? ? }

20? ? public String getPassword() {

21? ? ? ? return password;

22? ? }

23? ? public void setPassword(String password) {

24? ? ? ? this.password = password;

25? ? }

26? ? public String toString(){

27? ? ? ? return "User[id="+id+" , username="+username+" , password="+password+"]";

28? ? }

29? ?

30

31 }

 dao------接口UserDao.java

1 package com.springMyBatis.system.dao;

2

3 import com.springMyBatis.system.model.User;

4

5 public interface UserDao {

6? ? public User getUser(User user);

7? ? public void addUser(User user);

8? ? public void updateUser(User user);

9? ? public void deleteUser(int UserId);

10 }

  dao-----UserDao.xml

1 <?xml version="1.0" encoding="UTF-8"?>

2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"?

3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">?

4 <mapper namespace="com.springMyBatis.system.dao.UserDao">?

5 <select id="getUser" parameterType="com.springMyBatis.system.model.User" resultType="com.springMyBatis.system.model.User">?

6? ? SELECT * FROM user WHERE username=#{username} AND password=#{password}?

7 </select>?

8 <insert id="addUser" parameterType="com.springMyBatis.system.model.User" flushCache="true">?

????????Java架構(gòu)交流學(xué)習(xí)圈:681065582 面向具有Java開發(fā)經(jīng)驗人群 幫助突破瓶頸 提升思維能力

9? ? INSERT INTO user (id,username,password) VALUES (#{id},#{username},#{password})?

10 </insert>?

11 <update id="updateUser" parameterType="com.springMyBatis.system.model.User">?

12? ? UPDATE user SET password=#{password} WHERE id=#{id}?

13 </update>?

14 <delete id="deleteUser" parameterType="int">?

15? ? DELETE FROM user WHERE id=#{id}?

16 </delete>?

17 </mapper>

  4悟民、Spring配置文件----ApplicationContext.xml

1 <?xml version="1.0" encoding="UTF-8"?>

2 <beans?

3? ? xmlns="http://www.springframework.org/schema/beans"?

4? ? xmlns:tx="http://www.springframework.org/schema/tx"?

5? ? xmlns:p="http://www.springframework.org/schema/p"?

6? ? xmlns:aop="http://www.springframework.org/schema/aop"?

7? ? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"?

8? ? xsi:schemaLocation="http://www.springframework.org/schema/beans?

9? ? http://www.springframework.org/schema/beans/spring-beans-3.0.xsd?

10? ? http://www.springframework.org/schema/tx?

11? ? http://www.springframework.org/schema/tx/spring-tx-3.0.xsd?

12? ? http://www.springframework.org/schema/aop? ?

13? ? http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">?

14 <!-- 配置數(shù)據(jù)源-->?

15? ? <bean id="jdbcDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">?

16? ? <property name="driverClassName">?

17? ? ? ? <value>org.gjt.mm.mysql.Driver</value>?

18? ? </property>?

19? ? <property name="url">?

20? ? ? ? <value>jdbc:mysql://localhost:3306/springmybaitis?useUnicode=true&amp;characterEncoding=UTF-8</value>?

21? ? ? ? <!--springmybaitis是我的數(shù)據(jù)庫? -->

22? ? </property>?

23? ? <property name="username">?

24? ? ? ? <value>root</value>?

25? ? </property>?

26? ? <property name="password">?

27? ? ? ? <value>123456</value>?

28? ? </property>?

29 </bean>?

30 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">?

31? ? <property name="dataSource" ref="jdbcDataSource" />?

32? ? <property name="configLocation" value="classpath:mybatis-config.xml"></property>?

33 </bean>?

34 <bean id="userDao" class="org.mybatis.spring.mapper.MapperFactoryBean">?

????????Java架構(gòu)交流學(xué)習(xí)圈:681065582 面向具有Java開發(fā)經(jīng)驗人群 幫助突破瓶頸 提升思維能力

35? ? <property name="mapperInterface" value="com.springMyBatis.system.dao.UserDao"></property>?

36? ? <property name="sqlSessionFactory" ref="sqlSessionFactory"></property>?

37 </bean>?

38 </beans>

  5、MyBatis的配置文件------mybatis-config.xml

1 <?xml version="1.0" encoding="UTF-8"?>

2 <!DOCTYPE configuration PUBLIC?

3? ? "-//mybatis.org//DTD Config 3.0//EN"?

4? ? "http://mybatis.org/dtd/mybatis-3-config.dtd">?

5 <configuration>?

6? ? <mappers>?

7? ? ? ? <mapper resource="com/springMyBatis/system/dao/UserDao.xml"/>?

8? ? </mappers>?

9 </configuration>

  6篷就、測試

  首先測試添加一條數(shù)據(jù):

1 package com.springMyBatis.system.test;

2

3 import org.springframework.context.ApplicationContext;

4 import org.springframework.context.support.ClassPathXmlApplicationContext;

5

6 import com.springMyBatis.system.dao.UserDao;

7 import com.springMyBatis.system.model.User;

8

9 public class UserController {

10? ?

11? ? /**

12? ? ? * @param args

13? ? ? */

14? ? public static void main(String[] args) {

15? ? ? ? ApplicationContext ctx=null;

16? ? ? ? ctx=new ClassPathXmlApplicationContext("applicationContext.xml");

17? ? ? ? UserDao userDao=(UserDao) ctx.getBean("userDao");

18? ? ? ? User user=new User();

19? ? ? ? //添加兩條數(shù)據(jù)

20? ? ? ? user.setId(1);

21? ? ? ? user.setUsername("Jessica");

22? ? ? ? user.setPassword("123");

23? ? ? ? userDao.addUser(user);

24? ? ? ? user.setId(2);

25? ? ? ? user.setUsername("Jessica2");

26? ? ? ? user.setPassword("123");

27? ? ? ? userDao.addUser(user);

28? ? ? ? System.out.println("添加成功");

29? ? ? ? //查詢數(shù)據(jù)

30? ? ? ? user.setUsername("Jessica");

31? ? ? ? user.setPassword("123");

32? ? ? ? System.out.println(userDao.getUser(user).toString());

33? ? ? ? user.setUsername("Jessica2");

34? ? ? ? user.setPassword("123");

35? ? ? ? System.out.println(userDao.getUser(user).toString());

36? ? ? ? //修改數(shù)據(jù)

37? ? ? ? user.setId(2);

38? ? ? ? user.setPassword("802");

39? ? ? ? userDao.updateUser(user);

40? ? ? ? System.out.println("修改成功");

41? ? ? ? //刪除數(shù)據(jù)

42? ? ? ? userDao.deleteUser(1);

43? ? ? ? System.out.println("刪除成功");

44? ? ? ?

45? ? }

46

47 }


  最后數(shù)據(jù)庫只剩一條數(shù)據(jù):

    結(jié)合Spring和MyBatis很簡單射亏,對于一些小一些的項目,想要做到精致易掌控,這兩個框架的結(jié)合足以智润。雖然現(xiàn)在Hibernate也很紅及舍,但是感覺它內(nèi)部很神秘,很難配置窟绷,也不好優(yōu)化锯玛,就是有種不敢下手的感覺。雖說Hibernate配置有點難兼蜈,但是搭好了環(huán)境后攘残,開發(fā)效率還是很高的,只需要配置一下表關(guān)系什么的就Ok了为狸。但是比如說查個數(shù)據(jù)什么的歼郭,很難掌控的到細節(jié)。Mybatis就可以控制sql的細節(jié)辐棒,雖然寫sql語句比較耗費時間病曾,也需要你的sql基礎(chǔ),但是也正因為這樣涉瘾,使用MyBatis的人的sql水平才會提高啊知态,看到我們項目經(jīng)理二三分鐘弄出一個看似復(fù)雜卻又很效率的sql語句捷兰,感覺很帥立叛,很牛的樣子。這么分析起來贡茅,兩者皆不可拋秘蛇,結(jié)合學(xué)習(xí)一下。本文只是簡單的實例顶考,在*dao.xml的配置文件里赁还,還有其他幫助優(yōu)化和簡化sql,幫助提高效率的一些知識驹沿,有待我們進一步學(xué)習(xí)呢艘策。還有,也可以通過結(jié)合Spring自動掃描裝配dao等渊季,也可以為配置文件減輕負擔(dān)不少朋蔫,期待下一次更成熟的使用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末却汉,一起剝皮案震驚了整個濱河市驯妄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌合砂,老刑警劉巖青扔,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡微猖,警方通過查閱死者的電腦和手機谈息,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凛剥,“玉大人黎茎,你說我怎么就攤上這事〉被冢” “怎么了傅瞻?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盲憎。 經(jīng)常有香客問我嗅骄,道長,這世上最難降的妖魔是什么饼疙? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任溺森,我火速辦了婚禮,結(jié)果婚禮上窑眯,老公的妹妹穿的比我還像新娘屏积。我一直安慰自己,他們只是感情好磅甩,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布炊林。 她就那樣靜靜地躺著,像睡著了一般卷要。 火紅的嫁衣襯著肌膚如雪渣聚。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天僧叉,我揣著相機與錄音奕枝,去河邊找鬼。 笑死瓶堕,一個胖子當(dāng)著我的面吹牛隘道,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播郎笆,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼谭梗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了题画?” 一聲冷哼從身側(cè)響起默辨,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎苍息,沒想到半個月后缩幸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體壹置,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年表谊,在試婚紗的時候發(fā)現(xiàn)自己被綠了钞护。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡爆办,死狀恐怖难咕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情距辆,我是刑警寧澤余佃,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站跨算,受9級特大地震影響爆土,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜诸蚕,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一步势、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧背犯,春花似錦坏瘩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蛉幸,卻和暖如春破讨,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背奕纫。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留烫沙,地道東北人匹层。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像锌蓄,于是被迫代替她去往敵國和親升筏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理瘸爽,服務(wù)發(fā)現(xiàn)您访,斷路器,智...
    卡卡羅2017閱讀 134,711評論 18 139
  • 通過之前的兩篇我們能在本地搭建單一和集群兩種方式的dubbo服務(wù)剪决,這篇我們來看 springmvc+spring+...
    安琪拉_4b7e閱讀 2,167評論 0 6
  • 對于java中的思考的方向灵汪,1必須要看前端的頁面檀训,對于前端的頁面基本的邏輯,如果能理解最好享言,不理解也要知道幾點峻凫。 ...
    神尤魯?shù)婪?/span>閱讀 819評論 0 0
  • 林小珂把目光從電視上移到了老公身上,她看了一眼老公用輕描淡寫的口氣說:“老公览露,咱再生個孩子吧荧琼。”電視新聞剛才說國家...
    域星閱讀 695評論 5 10
  • 再過幾個小時就是2016年啦累舷,但是也沒有什么值得激動的。以往跨年會熬到零點夹孔,為了發(fā)條微博或是朋友圈或是空間”挥現(xiàn)在,...
    西柚和檸檬閱讀 254評論 0 0