1.先说mybatis怎么操作数据库
2.再说spring怎么来帮忙
这文就是为了解释以下代码,spring+mybatis框架,在配置文件里常见。
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 自动扫描mapping.xml文件 -->
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath:mybatis/mapper/**/*.xml"></property>
<property name="configLocation" value="classpath:spring/mybatis-config.xml"></property>
</bean>
<!-- dao配置操作数据库 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.pocket.payment.approvalManage.dao;com.pocket.payment.personalInfo.dao"/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
1.下载一个mybatis,然后导包,如下图。
看官网文档怎么说:
1。可以从xml中获取一个SqlSessionFactory.
疑问:1.怎么配置xml呢,
2.怎么从xml中获取一个SqlSessionFactory.
往下看
【看,下图这样配置一个xml。】
【从SqlSessionFactory中获取一个sqlSession】
接口的下xml怎么写(如UserDao.xml)
【实例操作】
新建一个UserDao.java
加粗样式写一个UserDao.xml
配置mybatis-config.xml
测试 官方代码
@Test
public void userDaoTest() throws IOException{
SqlSession session = null;
try {
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
session = sqlSessionFactory.openSession();
UserDao mapper = session.getMapper(UserDao.class);
User user = mapper.queryById(5);
System.out.println(user);
} catch (Exception e) {
}finally{
session.close();
}
}
【引入spring-基础版】
数据源让spring创建
SqlSessionFactory让spring创建
让spring实现UserDao接口
测试
存在的问题
1.mybatis-config.xml里面需要配很多很多很多xml(如果有很多类的话)
2.applicationContext.xml需要配很多mapperInterface
<!-- Mapper动态代理开发 -->
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
<property name="mapperInterface" value="mybatis.dao.UserDao"/>
</bean>
【引入spring-升级版】
1.原来mybatis里面,创建SqlSessionFactory不是需要数据源,和xml吗
这时候,配在如下就好了(红色字体)
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="mapperLocations" value="classpath*:src/mybatis/dao/xml/*.xml"/>
</bean>
有了工厂,实现dao的时候,还要把到给工厂吧,如下(红色部分):
之前sqlSession怎么来的,sqlSessionFactory.openSession()来的,所以这里也要给sqlSessionFactoryBean,再给dao,就可以实现dao了。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
<property name="basePackage" value="mybatis.dao"/>
</bean>