spring整合mybatis基于xml配置
- 數據庫
/*
Navicat MySQL Data Transfer
?
Source Server ????????: mysql
Source Server Version : 50549
Source Host ??????????: localhost:3306
Source Database ??????: ooxx
?
Target Server Type ???: MYSQL
Target Server Version : 50549
File Encoding ????????: 65001
?
Date: 2019-09-19 13:23:49
*/
?
SET FOREIGN_KEY_CHECKS=0;
?
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
??`id` int(11) NOT NULL AUTO_INCREMENT,
??`name` varchar(255) DEFAULT NULL,
??`pwd` varchar(255) DEFAULT NULL,
??PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
?
-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '康康', '56345');
INSERT INTO `user` VALUES ('2', '喬治大哥', '123456');
INSERT INTO `user` VALUES ('3', 'George', '123456');
INSERT INTO `user` VALUES ('4', '董小康', '123456');
?
- Pom.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.henu</groupId>
????<artifactId>spring_mybatis_xml</artifactId>
????<version>1.0-SNAPSHOT</version>
????<!--導入spring依賴-->
????<dependencies>
????????<!-- spring4.3.2 -->
????????<!-- spring-context -->
????????<dependency>
????????????<groupId>org.springframework</groupId>
????????????<artifactId>spring-context</artifactId>
????????????<version>4.3.2.RELEASE</version>
????????</dependency>
????????<!-- spring-core -->
????????<dependency>
????????????<groupId>org.springframework</groupId>
????????????<artifactId>spring-core</artifactId>
????????????<version>4.3.2.RELEASE</version>
????????</dependency>
????????<!-- spring-beans -->
????????<dependency>
????????????<groupId>org.springframework</groupId>
????????????<artifactId>spring-beans</artifactId>
????????????<version>4.3.2.RELEASE</version>
????????</dependency>
????????<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
????????<dependency>
????????????<groupId>org.springframework</groupId>
????????????<artifactId>spring-aop</artifactId>
????????????<version>4.3.2.RELEASE</version>
????????</dependency>
????????<!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
????????<dependency>
????????????<groupId>org.springframework</groupId>
????????????<artifactId>spring-aspects</artifactId>
????????????<version>4.3.2.RELEASE</version>
????????</dependency>
????????<!--使用AspectJ方式注解需要相應的包 -->
????????<dependency>
????????????<groupId>org.aspectj</groupId>
????????????<artifactId>aspectjrt</artifactId>
????????????<version>1.6.11</version>
????????</dependency>
????????<!--使用AspectJ方式注解需要相應的包 -->
????????<!--
????????<dependency>
????????????<groupId>org.aspectj</groupId>
????????????<artifactId>aspectjweaver</artifactId>
????????????<version>1.6.11</version>
????????</dependency>
????????-->
????????<!-- 添加數據庫連接池?druid -->
????????<dependency>
????????????<groupId>com.alibaba</groupId>
????????????<artifactId>druid</artifactId>
????????????<version>1.1.3</version>
????????</dependency>
????????<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
????????<dependency>
????????????<groupId>mysql</groupId>
????????????<artifactId>mysql-connector-java</artifactId>
????????????<version>5.1.6</version>
????????</dependency>
????????<!-- spring-tx 事務控制-->
????????<dependency>
????????????<groupId>org.springframework</groupId>
????????????<artifactId>spring-tx</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>
????????<!--mybatis-->
????????<dependency>
????????????<groupId>org.mybatis</groupId>
????????????<artifactId>mybatis</artifactId>
????????????<version>3.4.5</version>
????????</dependency>
????????<!-- spring整合mybatis插件包 -->
????????<dependency>
????????????<groupId>org.mybatis</groupId>
????????????<artifactId>mybatis-spring</artifactId>
????????????<version>1.3.2</version>
????????</dependency>
????????<!-- https://mvnrepository.com/artifact/org.springframework/spring-expression -->
????????<dependency>
????????????<groupId>org.springframework</groupId>
????????????<artifactId>spring-expression</artifactId>
????????????<version>4.3.2.RELEASE</version>
????????</dependency>
????????<!-- https://mvnrepository.com/artifact/junit/junit -->
????????<dependency>
????????????<groupId>junit</groupId>
????????????<artifactId>junit</artifactId>
????????????<version>4.12</version>
????????????<scope>compile</scope>
????????</dependency>
????????<!-- pagehelper -->
????????<dependency>
????????????<groupId>com.github.pagehelper</groupId>
????????????<artifactId>pagehelper</artifactId>
????????????<version>5.1.2</version>
????????</dependency>
????????<dependency>
????????????<groupId>org.projectlombok</groupId>
????????????<artifactId>lombok</artifactId>
????????????<version>1.18.0</version>
????????</dependency>
????</dependencies>
</project>
?
- Bean
package com.henu.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired;
/**
?* @author George
?* @description
?**/
@NoArgsConstructor
@AllArgsConstructor
@Data
public class User {
????private Integer id;
????private String name;
????private String pwd;
}
?
- Dao
package com.henu.dao;
import com.henu.bean.User;
import java.util.List;
/**
?* @author George
?* @description
?**/
public interface UserDao {
????List<User> queryAll();
????int insert(User user);
}
?
- Service
package com.henu.service;
import com.henu.bean.User;
import java.util.List;
public interface UserService {
????List<User> queryAll();
????int insert(User user);
}
?
- serviceImpl
package com.henu.service;
import com.henu.bean.User;
import com.henu.dao.UserDao;
import lombok.Data;
import java.util.List;
/**
?* @author George
?* @description
?**/
@Data
public class UserServiceImpl implements UserService {
????private UserDao userDao;
????public List<User> queryAll() {
????????List<User> users = userDao.queryAll();
????????return users;
????}
????public int insert(User user) {
????????return userDao.insert(user);
????}
}
?
- Resources_db.properties
#db config
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/ooxx
jdbc.username=root
jdbc.password=123456
initialSize=5
minIdle=2
maxActive=10
maxWait=10000
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
testWhileIdle=true
testOnBorrow=true
testOnReturn=false
poolPreparedStatements=true
maxPoolPreparedStatementPerConnectionSize=20
defaultAutoCommit=true
validationQuery=select 1
?
- Resources_sqlMybatisConfig.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>
????????<!-- 設置實體類別名 -->
????????<typeAlias type="com.henu.bean.User" alias="user"></typeAlias>
????</typeAliases>
????<!-- 配置分頁插件 -->
????<plugins>
????????<plugin interceptor="com.github.pagehelper.PageInterceptor">
????????????<!-- 設置合理性分頁 -->
????????????<property name="reasonable" value="true"></property>
????????</plugin>
????</plugins>
</configuration>
?
- Resources_springContext.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:p="http://www.springframework.org/schema/p"
???????xmlns:aop="http://www.springframework.org/schema/aop"
???????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/aop
http://www.springframework.org/schema/aop/spring-aop.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.xsd">
????<!--導入屬性文件-->
????<context:property-placeholder location="classpath:db.properties"></context:property-placeholder>
????<!--配置數據源-->
????<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
????????<property name="driverClassName" value="${jdbc.driverClassName}"/>
????????<property name="url" value="${jdbc.url}"/>
????????<property name="username" value="${jdbc.username}"/>
????????<property name="password" value="${jdbc.password}"/>
????????<!-- ******配置數據庫連接池相關信息******* -->
????????<!-- 配置初始化大小、最小、最大 -->
????????<property name="initialSize" value="${initialSize}"/>
????????<property name="minIdle" value="${minIdle}"/>
????????<property name="maxActive" value="${maxActive}"/>
????????<!-- 配置獲取連接等待超時的時間 -->
????????<property name="maxWait" value="${maxWait}"/>
????????<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閑連接,單位是毫秒 -->
????????<property name="timeBetweenEvictionRunsMillis" value="${timeBetweenEvictionRunsMillis}"/>
????????<!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
????????<property name="minEvictableIdleTimeMillis" value="${minEvictableIdleTimeMillis}"/>
????????<property name="testWhileIdle" value="${testWhileIdle}"/>
????????<!-- 這里建議配置為TRUE,防止取到的連接不可用 -->
????????<property name="testOnBorrow" value="${testOnBorrow}"/>
????????<property name="testOnReturn" value="${testOnReturn}"/>
????????<!-- 打開PSCache,并且指定每個連接上PSCache的大小 -->
????????<property name="poolPreparedStatements" value="${poolPreparedStatements}"/>
????????<property name="maxPoolPreparedStatementPerConnectionSize"
??????????????????value="${maxPoolPreparedStatementPerConnectionSize}"/>
????????<!-- 這里配置提交方式,默認就是TRUE,可以不用配置 -->
????????<property name="defaultAutoCommit" value="${defaultAutoCommit}"/>
????????<!-- 驗證連接有效與否的SQL,不同的數據配置不同 -->
????????<property name="validationQuery" value="${validationQuery}"/>
????</bean>
????<!--配置sqlSessionFactory-->
????<bean name="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
????????<!--配置數據源-->
????????<property name="dataSource" ref="dataSource"></property>
????????<!--加載mybatis的配置文件-->
????????<property name="configLocation" value="classpath:sqlMybatisConfig.xml"></property>
????????<!--加載mybatis的映射文件-->
????????<property name="mapperLocations" value="classpath:mapper/UserDao.xml"></property>
????</bean>
????<!--掃描dao層???id未被使用可以不取-->
????<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
????????<!--指定dao接口路徑-->
????????<property name="basePackage" value="com.henu.dao"></property>
????????<!--指定sqlSessionFactory-->
????????<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
????</bean>
????<!--配置service層-->
????<bean id="userService" class="com.henu.service.UserServiceImpl">
????????<!--注入userDao ?小細節:這里雖然沒有在上方定義像我們之前所熟知的userDao的id或者name
????????但是當你ref=userDao時并不出錯,原因在于上方的掃描dao層-->
????????<property name="userDao" ref="userDao"></property>
????</bean>
????<!--************************************************************-->
????<!--配置事務管理器-->
????<bean name="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
????????<property name="dataSource" ref="dataSource"/>
????</bean>
????<!--配置切入點表達式(業務層)-->
????<aop:config>
????????<aop:advisor advice-ref="userAdvice" pointcut="execution(* com.henu.service.UserServiceImpl.*(..))"></aop:advisor>
????</aop:config>
????<tx:advice id="userAdvice" transaction-manager="txManager">
????????<!--配置事務屬性-->
????????<tx:attributes>
????????????<tx:method name="query*" propagation="REQUIRED" isolation="READ_COMMITTED" read-only="false" rollback-for="java.lang.Exception" timeout="-1"/>
????????????<tx:method name="insert*" propagation="REQUIRED" isolation="READ_COMMITTED" read-only="false" rollback-for="java.lang.Exception" timeout="-1"/>
????????</tx:attributes>
????</tx:advice>
</beans>
?
- Resources_UserDao.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.henu.dao.UserDao">
????<resultMap id="userMap" type="User">
????????<id property="id" column="id"></id>
????????<result property="name" column="name"></result>
????????<result property="pwd" column="pwd"></result>
????</resultMap>
????<select id="queryAll" resultMap="userMap">
????????select * from user;
????</select>
????<insert id="insert" parameterType="user">
????????insert into user values(#{id},#{name},#{pwd})
????</insert>
</mapper>
?
- 測試SMTest
package com.henu.text;
import com.henu.bean.User;
import com.henu.service.UserService;
import lombok.AllArgsConstructor;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.util.List;
/**
?* @author George
?* @description
?**/
public class SMTest {
????private ClassPathXmlApplicationContext context = null;
????private UserService userService = null;
????@Before
????public void init(){
????????context = new ClassPathXmlApplicationContext("springContext.xml");
????????userService = context.getBean(UserService.class);
????}
????@Test
????public void queryAll(){
????????List<User> users = userService.queryAll();
????????for (User user : users) {
????????????System.out.println(user);
????????}
????}
????@Test
????public void insert(){
????????User user = new User(null,"董小康","123456");
????????userService.insert(user);
????}
????@After
????public void destory(){
????????context.close();
????}
}
?
?
總結
以上是生活随笔為你收集整理的spring整合mybatis基于xml配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop MapReduce V2—
- 下一篇: spring整合mybatis基于注解