美文网首页
0327-spring整合mybatis/数据源管理模型

0327-spring整合mybatis/数据源管理模型

作者: 小咕咕coco | 来源:发表于2020-03-27 20:10 被阅读0次

就是spring接管mybatis的:数据源配置+session开闭/mapper获取问题

整体流程

参考:https://blog.csdn.net/eson_15/article/details/51684968

  1. 引入新包:mybatis-spring,commons-dbcp(数据源管理模型,具体内容见下)
  2. applicationContext.xml:dataSource/sqlSessionFactory/Mapper都用bean管理:
    <!-- 加载classpath下的db.properties文件,里面配了数据库连接的一些信息 -->
    <context:property-placeholder location="classpath:db.properties"/>
    <!-- 配置数据源 -->
    <bean id="dataSource" class="${dataSource}" destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="maxActive" value="10" />
        <property name="maxIdle" value="5" />
    </bean>


    <!-- 配置sqlSessionFactory,SqlSessionFactoryBean是用来产生sqlSessionFactory的 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 加载mybatis的全局配置文件,放在classpath下的mybatis文件夹中了 -->
        <property name="configLocation" value="mybatis-config.xml" />
        <!-- 加载数据源,使用上面配置好的数据源 -->
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- MapperFactoryBean:根据mapper接口生成的代理对象 -->
    <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
        <property name="mapperInterface" value="com.pojo.UserDao"/>
        <property name="sqlSessionFactory" ref="sqlSessionFactory" />
    </bean>
  1. mybatis-config.xml(上面的sqlSessionFactory bean的生成要用到
    只需配置mapper resource即可(其他可选
<configuration>
    <!-- 别名的定义 -->
    <typeAliases>
        <typeAlias type="com.pojo.User" alias="User"/>
    </typeAliases>
    <mappers>
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>
  1. 映射xml+dao接口文件(配合生成mapper,上文相应bean也有引用
  2. 测试文件
public class testUser {
    private ApplicationContext applicationContext;

    @Before
    public void setUp() throws Exception {
        //得到spring容器
        applicationContext = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");
    }
    @Test
    public void testFindUserById() throws Exception {
        //通过bean获取Mapper,并用dao接口接收
        UserDao userDao = (UserDao) applicationContext.getBean("userMapper");
        User user = userDao.findById(1);
        System.out.println(user.getWish());
    }
}

一些bug

  1. 找不到mapper recourse问题
    mybatis配置文件中mapper recourse的路径是对的,但是就是一直报错
    解决办法:把两个文件(config和mapper)都移到recourse文件夹直接下方解决

  2. clearCache()方法找不到

java.lang.NoSuchMethodError: org.springframework.core.annotation.AnnotationUtils.clearCache()V

解决办法:spring-context/core/test三个包的版本要保持一致

  1. xml和其他(比如properties)文件中&符号不同:
xml中的&符号需要哟过&amp;代替

相关文章

网友评论

      本文标题:0327-spring整合mybatis/数据源管理模型

      本文链接:https://www.haomeiwen.com/subject/feuruhtx.html