## 整合的方式
- 新建 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)