春入门笔记之春整合的MyBatis
- 2018年11月22日
整合思想:
- SqlSessionFactory的对象应该放在春容器中作为单例存在
- 传统DAO的开发方式中,应该从sprng容器中获得的SqlSession对象
- 映射代理形式中,应该从春天容器中直接获得映射的代理对象
- 数据库的连接以及数据库连接池事务管理都交给春容器来完成
步骤:
- 导入相应依赖包:( mybatis -spring)
- 创建数据库配置文件(jdbcConfig.properties )
mysql版本是8.0.1的所以数据库驱动配置的类为c3p0中的com.mysql.cj.jdbc.Driver
- 在弹簧配置文件(applicationContext.xml中)
- 加载数据库配置文件
- 配置数据源
- 配置MyBatis的工厂
- 整合spring 和mybatis 。
<!--加载数据库配置文件-->
<context:property-placeholder location="classpath:jdbcConfig.properties"/>
<!--配置数据源-->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!--用户名-->
<property name="user" value="${jdbc.user}"></property>
<!--密码-->
<property name="password" value="${jdbc.password}"></property>
<!--数据库连接地址-->
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<!--驱动配置-->
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="maxPoolSize" value="${c3p0.maxPoolSize}"></property>
<property name="minPoolSize" value="${c3p0.minPoolSize}"></property>
<property name="initialPoolSize" value="${c3p0.initialPoolSize}"></property>
<property name="acquireIncrement" value="${c3p0.acquireIncrement}"></property>
</bean>
<!--sqlSessionFactory配置mybatis工厂-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--加载mybatis配置文件-->
<property name="configLocation" value="mybatis-config.xml"></property>
<!--配置数据源-->
<property name="dataSource" ref="dataSource"></property>
<!--类的别名包-->
<property name="typeAliasesPackage" value="org.robert.entity"></property>
</bean>
<!--spring和mybatis整合-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--mapper所在包-->
<property name="basePackage" value="org.robert.mapper"></property>
<!--指定ioc容器中mybatis工厂的bean名字-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>
测试整合结果:
/**
* mybatis和spring整合
*/
@Test
void myspring(){
ApplicationContext path = new ClassPathXmlApplicationContext("applicationContext.xml");
DogMapper dog = path.getBean(DogMapper.class);
Dog dog1 = dog.get(1);
System.out.println(dog1);
}
DogMapper:
<?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="org.robert.mapper.DogMapper">
<select id="get" resultType="Dog">
select * from dog where id=#{id}
</select>
</mapper>
打印结果: