Mybatis(三):使用mybatis-spring搭建myb

2019-05-15  本文已影响0人  aix91

1. 引入依赖

<dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.4.1</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>2.0.1</version>
</dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
            <version>3.3.0</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.25</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.1.5.RELEASE</version>
        </dependency>

2. 注入SqlSessionFactory

mybatis-spring中SqlSessionFactory通过SqlSessionFactoryBean生成

    <bean id="webgroup" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="jdbcUrl" value="jdbc:mysql://${db.webgroup.host}:3306/${db.webgroup.database}"/>
        <property name="username" value="${db.webgroup.username}"/>
        <property name="password" value="${db.webgroup.password}"/>
        <property name="autoCommit" value="false"></property>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="webgroup"/>
    </bean>
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.test.db.mapper"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>

3. 定义mapper

MapperScannerConfigurer 只能扫描到basePackage下至少定义了一个方法的interface。

package com.test.db.mapper;
@Mapper
public interface TopicTagMapper {

    /**
     * @param code
     * @return
     */
    TopicTagDO getTagOnCode(@Param("code") String code);
}
<mapper namespace="com.test.db.mapper.TopicTagMapper">
    <select id="getTagOnCode" resultType="com.testmodels.dos.TopicTagDO">
      select id,name,code,display_value as displayName
      from tb_seo_tag where code = #{code}
    </select>
</mapper>

4. Invalid bound statement (not found)

运行mybatis程序时,容易出现bound的问题。主要原因有如下几点:

通常情况下,会出现打包后,Mapper.java 和 Mapper.xml 不在同一个package下,那是因为idea默认是不编译 src\main\java下的xml文件。于是,我们可以将xml文件放在resource目录下:比如Mapper.java 的namespace是"com.test.db.mapper.TopicTagMapper", 那么在resource里创建一个"com.test.db.mapper.TopicTagMapper"目录,将Mapper.xml文件存放在该目录下。

上一篇 下一篇

猜你喜欢

热点阅读