兩大熱門框架 Spring 與 Mybatis 如何整合呢穆趴?

## 整合的方式

- 新建 maven 項目

- 引入依賴包

- 配置資源文件


## 案例實操

### 新建 maven? 項目

新建 maven 項目 spring_mybatis?

目錄結(jié)構(gòu)如下:

主目錄包:

? com.xxx.dao叠国、

? com.xxx.mapper仗岖、

? com.xxx.service蔓姚、

? com.xxx.service.impl?

測試包:spring_mybatis

### 引入依賴包

**打開 pom.xml 開始添加依賴包**

~~~ xml

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

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

? xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

? <modelVersion>4.0.0</modelVersion>

? <groupId>com.xxx</groupId>

? <artifactId>test-xxxms</artifactId>

? <version>1.0-SNAPSHOT</version>

? <name>test-xxxms</name>

? <!-- FIXME change it to the project's website -->

? <url>http://www.example.com</url>

? <properties>

? ? <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

? ? <maven.compiler.source>1.7</maven.compiler.source>

? ? <maven.compiler.target>1.7</maven.compiler.target>

? </properties>

? <dependencies>

? ? <dependency>

? ? ? <groupId>junit</groupId>

? ? ? <artifactId>junit</artifactId>

? ? ? <version>4.11</version>

? ? ? <scope>test</scope>

? ? </dependency>

? ? <!-- spring 核心jar -->

? ? <dependency>

? ? ? <groupId>org.springframework</groupId>

? ? ? <artifactId>spring-context</artifactId>

? ? ? <version>4.3.2.RELEASE</version>

? ? </dependency>

? ? <!-- spring 測試jar -->

? ? <dependency>

? ? ? <groupId>org.springframework</groupId>

? ? ? <artifactId>spring-test</artifactId>

? ? ? <version>4.3.2.RELEASE</version>

? ? </dependency>

? ? <!-- spring jdbc -->

? ? <dependency>

? ? ? <groupId>org.springframework</groupId>

? ? ? <artifactId>spring-jdbc</artifactId>

? ? ? <version>4.3.2.RELEASE</version>

? ? </dependency>

? ? <!-- spring事物 -->

? ? <dependency>

? ? ? <groupId>org.springframework</groupId>

? ? ? <artifactId>spring-tx</artifactId>

? ? ? <version>4.3.2.RELEASE</version>

? ? </dependency>

? ? <!-- c3p0 連接池 -->

? ? <dependency>

? ? ? <groupId>c3p0</groupId>

? ? ? <artifactId>c3p0</artifactId>

? ? ? <version>0.9.1.2</version>

? ? </dependency>

? ? <!-- mybatis -->

? ? <dependency>

? ? ? <groupId>org.mybatis</groupId>

? ? ? <artifactId>mybatis</artifactId>

? ? ? <version>3.4.1</version>

? ? </dependency>

? ? <!-- 添加mybatis與Spring整合的核心包 -->

? ? <dependency>

? ? ? <groupId>org.mybatis</groupId>

? ? ? <artifactId>mybatis-spring</artifactId>

? ? ? <version>1.3.0</version>

? ? </dependency>

? ? <!-- mysql 驅(qū)動包 -->

? ? <dependency>

? ? ? <groupId>mysql</groupId>

? ? ? <artifactId>mysql-connector-java</artifactId>

? ? ? <version>5.1.39</version>

? ? </dependency>

? ? <!-- 日志打印相關(guān)的jar -->

? ? <dependency>

? ? ? <groupId>org.slf4j</groupId>

? ? ? <artifactId>slf4j-log4j12</artifactId>

? ? ? <version>1.7.2</version>

? ? </dependency>

? ? <dependency>

? ? ? <groupId>org.slf4j</groupId>

? ? ? <artifactId>slf4j-api</artifactId>

? ? ? <version>1.7.2</version>

? ? </dependency>

? </dependencies>

? <build>

? ? <finalName>tpl-web</finalName>

? ? <resources>

? ? ? <resource>

? ? ? ? <directory>src/main/java</directory>

? ? ? ? <includes>

? ? ? ? ? <include>**/*.xml</include>

? ? ? ? </includes>

? ? ? </resource>

? ? ? <resource>

? ? ? ? <directory>src/main/resources</directory>

? ? ? ? <includes>

? ? ? ? ? <include>**/*.xml</include>

? ? ? ? ? <include>**/*.properties</include>

? ? ? ? </includes>

? ? ? </resource>

? ? </resources>

? </build>

</project>

~~~

### 配置資源文件

? a) Spring 文件 spring.xml

? b) Mybatis 文件 mybatis.xml

? c) 數(shù)據(jù)庫連接 properties 文件 db.properties

? d) 日志輸出文件 log4j.properties

#### spring.xml 文件配置

~~~ xml

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

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

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

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

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

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

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

? ? ? ? http://www.springframework.org/schema/context

? ? ? ? http://www.springframework.org/schema/context/spring-context.xsd

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

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

? ? <context:component-scan base-package="com.xxx"/>

? ? <context:property-placeholder location="db.properties"/>

? ? <tx:annotation-driven? transaction-manager="txManager"/>

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

? ? <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">

? ? ? ? <property name="driverClass" value="${jdbc.driver}"></property>

? ? ? ? <property name="jdbcUrl" value="${jdbc.url}"></property>

? ? ? ? <property name="user" value="${jdbc.user}"></property>

? ? ? ? <property name="password" value="${jdbc.password}"></property>

? ? </bean>

? ? <bean id="txManager"

? ? ? ? ? class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

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

? ? </bean>

<!--? 整合 框架(Spring與Mybatis)? -->

? ? <!-- 配置 sqlSessionFactory-->

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

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

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

? ? ? ? <!-- 框架的配置文件 -->

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

? ? ? ? <!-- 映射文件 -->

? ? ? ? <property name="mapperLocations" value="classpath:com/xxx/dao/mapper/*.xml" />

? ? </bean>

? ? <!-- 配置掃描器 -->

? ? <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer">

? ? ? ? <!-- 掃描com.xxx.dao這個包以及它的子包下的所有映射接口類 -->

? ? ? ? <property name="basePackage" value="com.xxx.dao" />

? ? ? ? <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />

? ? </bean>

</beans>

~~~

#### mybatis.xml 文件配置

~~~ xml

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

<!DOCTYPE configuration

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

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

<configuration>

? ? <!--別名的配置? 每個人必須會 -->

? ? <typeAliases>

? ? ? ? <package name="com.xxx.model"/>

? ? </typeAliases>

</configuration>

~~~

#### db.properties 文件配置(對于其它數(shù)據(jù)源屬性配置惕耕,見 c3p0 配置講解,這里采用默認(rèn)屬性配置)

建立數(shù)據(jù)庫 mybatis(**注意數(shù)據(jù)庫蜜自,用戶名菩貌,密碼以自己本地數(shù)據(jù)庫為準(zhǔn)** )

~~~ xml

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&characterEncoding=

utf8

jdbc.username=root

jdbc.password=

~~~

#### log4j.properties

便于控制臺日志輸出

~~~ xml

# Global logging configuration

log4j.rootLogger=DEBUG, stdout

# Console output...

log4j.appender.stdout=org.apache.log4j.ConsoleAppender

log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

~~~

## 擴(kuò)展

### 開始編寫 helloworld

#### User 實體類定義

~~~ java

public class User {

? ? private int id;

? ? private String userName;

? ? private String userPwd;

? ? public int getId() {

? ? return id;

? ? }

? ? public void setId(int id) {

? ? this.id = id;

? ? }

? ? public String getUserName() {

? ? return userName;

? ? }

? ? public void setUserName(String userName) {

? ? this.userName = userName;

? ? }

? ? public String getUserPwd() {

? ? return userPwd;

? ? }

? ? public void setUserPwd(String userPwd) {

? ? this.userPwd = userPwd;

? ? }

? ? @Override

? ? public String toString() {

? ? return "User [id=" + id + ", userName=" + userName + ", userPwd="

? ? \+ userPwd + "]";

? ? }

}

~~~

#### UseDao 接口與映射文件定義

UserDao 接口

~~~ java

public interface UserDao {

public User queryUserById(int id);

}

~~~

UserMapper.xml(**注意:此時映射文件命名空間定義要符合規(guī)則:接口包名**.**接口類**

**名**,**否則不按規(guī)則出牌,測試會報錯重荠,然后你就蒙圈了<住!戈鲁!**)

~~~ xml

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

<!DOCTYPE mapper

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

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

<mapper namespace="com.xxx.dao.UserDao">

<select id="queryUserById" parameterType="int" resultType="user">

select id,userName,userPwd from user where id=#{id}?

</select>

</mapper>

~~~

#### UserService 接口類與實現(xiàn)類定義

~~~ java

public interface UserService {

public User queryUserById();

}

~~~

UserServiceImpl 實現(xiàn)類(**此時直接注入我們的** **UserDao** **接口即可仇参,然后直接調(diào)用**

**其方法,事已至此婆殿,離成功僅差一步诈乒!**)

~~~ java

@Service

public class UserServiceImpl implements UserService{

? ? @Resource

? ? private UserDao userDao;

? ? public User queryUserById(){

? ? return userDao.queryUserById(7);?

? ? }

}

~~~

####? junit 測試 需要視頻配套資料或其他資料+我們小姐姐V lezijie007(加好友暗號 98 ,不備注不加)

因為與 spring 框架集成婆芦,我們采用 spring 框架測試 spring Test

~~~ java

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = {"classpath:spring.xml"} )

public class TestSpringMybatis {

? ? @Autowired

? ? private UserService userService;

? ? @Test

? ? public void testQueryUserById() {

? ? System.out.println(userService.queryUserById(1));

? ? }

}

~~~

#### 結(jié)果輸出

![](https://img-blog.csdnimg.cn/img_convert/b233587bc200d77eb84fb777d83cf636.png)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怕磨,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子消约,更是在濱河造成了極大的恐慌肠鲫,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件或粮,死亡現(xiàn)場離奇詭異导饲,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)氯材,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門渣锦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人浓体,你說我怎么就攤上這事泡挺。” “怎么了命浴?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵娄猫,是天一觀的道長。 經(jīng)常有香客問我生闲,道長媳溺,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任碍讯,我火速辦了婚禮悬蔽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘捉兴。我一直安慰自己蝎困,他們只是感情好录语,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著禾乘,像睡著了一般澎埠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上始藕,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天蒲稳,我揣著相機(jī)與錄音,去河邊找鬼伍派。 笑死江耀,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的诉植。 我是一名探鬼主播祥国,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼倍踪!你這毒婦竟也來了系宫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤建车,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后椒惨,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缤至,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年康谆,在試婚紗的時候發(fā)現(xiàn)自己被綠了领斥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡沃暗,死狀恐怖月洛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情孽锥,我是刑警寧澤嚼黔,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站惜辑,受9級特大地震影響唬涧,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盛撑,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一碎节、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抵卫,春花似錦狮荔、人聲如沸胎撇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽创坞。三九已至,卻和暖如春受葛,著一層夾襖步出監(jiān)牢的瞬間题涨,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工总滩, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留纲堵,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓闰渔,卻偏偏與公主長得像席函,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冈涧,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345