目的:
-
把Mybatis的核心对象SqlSessionFactory 交给Spring管理 注入数据源对象
-
把Mybatis的配置中数据源对象,交给Spring管理
-
把Mybatis的Mapper接口的代理对象交给Spring管理 注入SqlSessionFactory
-
把事务作为通知, 使用AOP技术, 动态织入业务层的方法: Spring提供的声明式事务管理
-
把业务层的对象交给Spring管理, 注入Mapper代理对象
-
创建项目: web项目
-
添加依赖 C3p0连接池 数据库驱动, mybatis , spring
<?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.fs</groupId> <artifactId>spring-mybatis-demo</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>spring-mybatis-demo Maven Webapp</name> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <spring.version>5.2.15.RELEASE</spring.version> </properties> <dependencies> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <!--连接池: c3p0--> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> <!--spring--> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!--spring整合mybatis --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <!--mybatis与spring整合的jar--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>2.0.7</version> </dependency> <!--servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <!--jsp-api--> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <!--log4j--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.36</version> </dependency> <!--junit单元测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> </dependencies> <build> <finalName>spring-mybatis-demo</finalName> <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) --> <plugins> <plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.1.0</version> </plugin> <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging --> <plugin> <artifactId>maven-resources-plugin</artifactId> <version>3.0.2</version> </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.0</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>3.2.2</version> </plugin> <plugin> <artifactId>maven-install-plugin</artifactId> <version>2.5.2</version> </plugin> <plugin> <artifactId>maven-deploy-plugin</artifactId> <version>2.8.2</version> </plugin> </plugins> </pluginManagement> </build> </project>
-
在src/main/resources 添加: log4j的配置, 数据源的配置, mybatis主配置, sql映射文件, spring配置文件
-
在Spring配置文件中配置相关的bean
mysql8的驱动与mysql5驱动的区别:
-
driverClass: mysql5: com.mysql.jdbc.Driver
mysql8: com.mysql.cj.jdbc.Driver
-
jdbcUrl: mysql5: 不用指定时区 mysql8: 指定时区 serverTimezone=Asia/Shanghai>
mysql5: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8 mysql8: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
数据库相关参数
jdbc.driverClass=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai jdbc.username=root jdbc.password=123 #连接池参数 #当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 jdbc.acquireIncrement=5 #初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 jdbc.initialPoolSize=5 #连接池中保留的最小连接数。 jdbc.minPoolSize=3 #连接池中保留的最大连接数。Default: 15 jdbc.maxPoolSize=10
<!--加载Properties文件--> <context:property-placeholder location="classpath:db.properties" file-encoding="UTF-8"/> <!--配置数据源--> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${jdbc.driverClass}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> <property name="initialPoolSize" value="${jdbc.initialPoolSize}"/> <property name="minPoolSize" value="${jdbc.minPoolSize}"/> <property name="maxPoolSize" value="${jdbc.maxPoolSize}"/> <property name="acquireIncrement" value="${jdbc.acquireIncrement}"/> </bean>
配置SqlSessionFactory的Bean对象
<!--SqlSessionFactoryBean--> <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!--配置类型别名--> <property name="typeAliasesPackage" value="com.fs.entity"/> <!--mybatis的主配置文件--> <property name="configLocation" value="classpath:mybatis-config.xml"/> <!--mapper映射文件 一个一个映射文件加载--> <!-- <property name="mapperLocations" value="classpath:mapper/UserMapper.xml,classpath:mapper/LoginMapper.xml"/>--> <!--支持通配符方式--> <property name="mapperLocations" value="classpath*:mapper/*Mapper.xml"/> </bean>
-