美文网首页
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