Spring整合Mybatis

mac2024-05-17  31

Spring整合Mybatis

整合思路

连接池

原理图解:

常用连接池:c3p0  dbcp  druid(阿里巴巴研发)。

开发步骤:maven项目中引入依赖

<!--c3p0连接池--> <!-- https://mvnrepository.com/artifact/com.mchange/c3p0 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!--dbcp连接池--> <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!--aplibaba druid 连接池--> <!-- https://mvnrepository.com/artifact/com.alibaba/druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version> </dependency>

代码案例:通过三种不同方式获取数据库连接

public class TestDataSource { //C3p0连接池 @Test public void testC3p0() throws Exception { // 创建连接池对象 ComboPooledDataSource dataSource = new ComboPooledDataSource(); // 设置连接数据库的参数 dataSource.setDriverClass("oracle.jdbc.OracleDriver"); dataSource.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:xe"); dataSource.setUser("hr"); dataSource.setPassword("hr"); // 获取连接 Connection connection = dataSource.getConnection(); System.out.println(connection); } //Dbcp连接池 @Test public void testDbcp() throws SQLException { // 创建连接池对象 BasicDataSource dataSource = new BasicDataSource(); // 设置连接数据库参数 dataSource.setDriverClassName("oracle.jdbc.OracleDriver"); dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe"); dataSource.setUsername("hr"); dataSource.setPassword("hr"); // 获取连接 Connection connection = dataSource.getConnection(); System.out.println(connection); } //Druid连接池 @Test public void testDruid() throws SQLException { // 创建连接池对象 DruidDataSource dataSource = new DruidDataSource(); // 设置连接数据库参数 dataSource.setDriverClassName("oracle.jdbc.OracleDriver"); dataSource.setUrl("jdbc:oracle:thin:@localhost:1521:xe"); dataSource.setUsername("hr"); dataSource.setPassword("hr"); // 设置连接池优化配置的参数 dataSource.setInitialSize(3);// 设置初始化连接池创建的连接数 dataSource.setMaxActive(5); // 设置最大活跃连接数 dataSource.setMaxWait(2000); // 设置最大等待时间 dataSource.setMinIdle(3); // 设置最少空闲连接数 // 获取连接 Connection connection = dataSource.getConnection(); System.out.println(connection); }

以上是数据库连接池获取连接的基本核心代码

我们一般使用阿里提供的Druidl连接池

数据库连接池的作用:使连接资源得到了重复使用,避免了资源的浪费及

内存的占用,可以大大提高程序性能,性能也更加平稳,使系统响应速度变快。

原理:提前创建一个存放数据库连接的池子,池子中存放着一定量的数据库连接对象,需要时去池子中去取,不需要时放进池子中,别人需要时可以在池子中去拿没有使用的连接。

 

Spring整合Mybatis核心过程

1. 导入整合的依赖

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->

2.引入配置文件

            2.1 spring的配置文件

<?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:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd"> <!--数据源的使用--> <context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="driverClassName" value="${oracle.driver}"></property> <property name="url" value="${oracle.url}"></property> <property name="username" value="${oracle.username}"></property> <property name="password" value="${oracle.password}"></property> <property name="initialSize" value="3"></property> </bean> <!--创建sqlSessionFactory目的是为了获取数据库连接并且注册Mapper文件--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--注入数据源--> <property name="dataSource" ref="dataSource"></property> <!--注册mapper文件位置--> <property name="mapperLocations" value="classpath:cn/huiani/mapper/*Mapper.xml"></property> <!--给实体类起别名--> <property name="typeAliasesPackage" value="cn.huiani.entity"></property> </bean> <!--创建dao实现类的对象 主要作用是根据上面的Mapper使用Spring工厂反射原理来创建Dao层实现类对象 --> <bean id="mapperScanner" class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!--注入sqlSessionFactory--> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> <!--指定dao接口所在的位置 默认Spring管理创建的dao实现类的对象的beanid是接口类名[首字母小写]: 比如: UserDao接口实现类的对象 beanid 是 == userDao AccountDao == accountDao --> <property name="basePackage" value="cn.huiani.dao"></property> </bean> <!--创建service--> <bean id="productService" class="cn.huiani.service.ProductServiceImpl" autowire="byType"></bean> </beans>

            2.2 mybatis的mapper文件

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "../mybatis-3-mapper.dtd" > <mapper namespace="cn.huiani.dao.ProductDao"> ... </mapper>

            2.3 jdbc.properties小配置文件

oracle.driver = oracle.jdbc.OracleDriver oracle.url = jdbc:oracle:thin:@localhost:1521:xe oracle.username = hr oracle.password =

            2.4 log4j.properties配置文件

log4j.rootLogger=DEBUG, stdout # SqlMap logging configuration... log4j.logger.com.ibatis=DEBUG log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG log4j.logger.com.ibatis.sqlmap.engine.cache.CacheModel=DEBUG log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientImpl=DEBUG log4j.logger.com.ibatis.sqlmap.engine.builder.xml.SqlMapParser=DEBUG log4j.logger.com.ibatis.common.util.StopWatch=DEBUG log4j.logger.java.sql.Connection=DEBUG log4j.logger.java.sql.Statement=DEBUG log4j.logger.java.sql.PreparedStatement=DEBUG log4j.logger.java.sql.ResultSet=DEBUG # 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

最为关键的是Spring配置文件的书写,详细注释在以上代码中已经体现。。

3.编码开发流程

3.1 封装实体类

            3.2 定义DAO接口

            3.3 编写mapper文件

            3.4 编写service

            测试前要写好spring配置文件中关于mybatis相关的信息,以及service创建的配置

注意: Spring整合mybatis后,默认事务是自动提交的

 

最新回复(0)