mybatis笔记<二> 整合spring
mybatis与spring整合需要添加几个jar包,mybatis-spring, spring-context, spring-jdbc
1. spring ioc只要一个jar包就ok
2. 我用了c3p3数据库连接池
跟笔记<一>比,需要修改的地方
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.gxf.mybatis</groupId> <artifactId>demo</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.0.8.RELEASE</version> </dependency> <!-- c3p0 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <!-- spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>3.0.4.RELEASE</version> </dependency> </dependencies> </project>
添加beans.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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="mapperLocations" value="classpath*:mapper/*.xml"/> </bean> <bean id="personMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="com.gxf.mybatis.mapper.PersonMapper" /> <property name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="${jdbc.driverClassName}"/> <property name="jdbcUrl" value="${jdbc.url}"/> <property name="user" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </bean> <context:property-placeholder location="jdbc.properties"/> </beans>
jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost/db_test
jdbc.username=root
jdbc.password=luckygxf
测试类main方法
package com.gxf.mybatis.util; import com.gxf.mybatis.mapper.PersonMapper; import com.gxf.mybatis.mapper.PersonMapper1; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class PersonTableOps { private static SqlSessionFactory sqlSessionFactory = SqlSessionFactoryHelper.getSqlSessionFactory(); private static PersonMapper personMapper; public static void main(String[] args) { testSpringMybatis(); } private static void testSpringMybatis(){ ApplicationContext applicationContext = new ClassPathXmlApplicationContext("beans.xml"); personMapper = (PersonMapper) applicationContext.getBean("personMapper"); Person person = personMapper.selectPerson(1); System.out.println(person); } /** * test mybatis select method * */ private static void testSelectOnes(){ // selectOne1(); // selectOne2(); selectOne3(); } /** * 第一种方式 * */ public static void selectOne1(){ SqlSession session = sqlSessionFactory.openSession(); try { Person person = session.selectOne( "com.gxf.mybatis.mapper.PersonMapper.selectPerson", 1); System.out.println(person); } finally { session.close(); } } /** * 第二种方式 * */ public static void selectOne2(){ SqlSession session = sqlSessionFactory.openSession(); try { PersonMapper mapper = session.getMapper(PersonMapper.class); Person person = mapper.selectPerson(1); System.out.println(person); } finally { session.close(); } } /** * 第三种方式 * */ public static void selectOne3(){ SqlSession session = sqlSessionFactory.openSession(); try { sqlSessionFactory.getConfiguration().addMapper(PersonMapper1.class); PersonMapper1 mapper = session.getMapper(PersonMapper1.class); Person person = mapper.selectPerson(1); System.out.println(person); } finally { session.close(); } } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } public static void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { PersonTableOps.sqlSessionFactory = sqlSessionFactory; } public PersonMapper getPersonMapper() { return personMapper; } public void setPersonMapper(PersonMapper personMapper) { this.personMapper = personMapper; } }
以前没有想到的
1. spring ioc 一个jar包搞定
2. 使用配置文件,占位符
接下来要看下mybatis源码,还有spring整合到一起的源码,出个笔记
Please call me JiangYouDang!