Spring整合Mybatis步骤以及需要注意的地方

1、 Mybatis逆向工程

配置文件generatorConfig.xml在相应的maven工程中内容为:
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
    <!-- mybatis-generator:generate -->
    <context id="atguiguTables" targetRuntime="MyBatis3">
        <commentGenerator>
            <!-- 是否去除自动生成的注释 true:是;false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection
                driverClass="com.mysql.jdbc.Driver"
                connectionURL="jdbc:mysql://localhost:3306/project_crowd?useUnicode=true&amp;characterEncoding=utf8"
                userId="root"
                password="xxxx">
        </jdbcConnection>
        <!-- 默认 false,把 JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true 时把
        JDBC DECIMAL
        和 NUMERIC 类型解析为 java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>
        <!-- targetProject:生成 Entity 类的路径 -->
        <javaModelGenerator targetProject=".\src\main\java"
                            targetPackage="com.atguigu.crowd.entity">
            <!-- enableSubPackages:是否让 schema 作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:XxxMapper.xml 映射文件生成的路径 -->
        <sqlMapGenerator targetProject=".\src\main\java"
                         targetPackage="com.atguigu.crowd.mapper">
            <!-- enableSubPackages:是否让 schema 作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!-- targetPackage:Mapper 接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetProject=".\src\main\java"
                             targetPackage="com.atguigu.crowd.mapper">
            <!-- enableSubPackages:是否让 schema 作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 数据库表名字和我们的 entity 类对应的映射指定 -->
        <table tableName="t_admin" domainObjectName="Admin" />
    </context>
</generatorConfiguration>

包括数据库连接信息、目标工程路径、映射文件生成路径、接口生成的路径以及数据库表与实体类对应的映射指定。

2、 创建Spring配置文件专门配置Spring和Mybatis整合相关

主要就是加入各种Spring和Mybatis的依赖

3、 在Spring配置文件中加载jdbc.Properties属性文件

jdbc.Properties文件内容(数据库相关):

jdbc.user=root
jdbc.password=xxxx
jdbc.url=jdbc:mysql://localhost:3306/project_crowd?useUnicode=true&characterEncoding=UTF-8
jdbc.driver=com.mysql.jdbc.Driver

4、 配置数据源

5、 配置SqlSessionFactoryBean:

6、 配置MapperScannerConfigurer

以上配置在spring-persist-mybatis.xml中
a) 配置mybatis-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

</configuration>

b) 配置spring-persist-mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--加载外部属性文件-->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<!--配置数据源-->
<!-- 配置数据源  com.alibaba.druid.pool.DruidDataSource-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <!-- 连接数据库的用户名 -->
    <property name="username" value="${jdbc.user}"/>
    <!-- 连接数据库的密码 -->
    <property name="password" value="${jdbc.password}"/>
    <!-- 目标数据库的 URL 地址 -->
    <property name="url" value="${jdbc.url}"/>
    <!-- 数据库驱动全类名 -->
    <property name="driverClassName" value="${jdbc.driver}"/>
</bean>
<!-- 配置SqlSessionFactoryBean整合Mybatis -->
<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!--指定Mybatis全局配置文件的位置-->
    <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    <!--指定Mapper.xml的位置-->
    <property name="mapperLocations" value="classpath:mybatis.mapper/*Mapper.xml"></property>
    <!--装配数据源-->
    <property name="dataSource" ref="dataSource"></property>
    <!-- 配置插件-->
    <property name="plugins">
        <array>
            <bean  class="com.github.pagehelper.PageHelper">
                <property name="properties">
                    <props>
                        <!--配置数据库方言,告诉PageHelper当前使用的数据库-->
                        <prop key="dialect">mysql</prop>
                        <!--配置页码的合理化修正-->
                        <prop key="reasonable">true</prop>
                    </props>
                </property>
            </bean>
        </array>
    </property>
</bean>
<!-- 配置MapperScannerConfigurer来扫描Mapper接口所在的包-->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.atguigu.mapper"></property>

</bean>

```

包括加载外部属性文件、数据源信息、SqlSessionFactoryBean(注意指定在配置文件generatorConfig.xml生成的Mapper地址)、配置插件、配置MapperScannerConfigurer来扫描Mapper接口所在的包。

7、 测试从数据源中获取数据库连接

写一个测试类实验一下能否连接数据库

import com.atguigu.crowd.entity.Admin;
import com.atguigu.mapper.AdminMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;

//再类上标记必要的注解,Spring整合Junit
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-persist-mybatis.xml"})
public class CrowdTest {

      @Autowired
    private DataSource datasource;

    @Autowired
    private AdminMapper adminMapper;
    
    //测试能否正常连接数据库
    @Test
    public void testConnection() throws SQLException {
        Connection connection = datasource.getConnection();
        System.out.println(connection);
    }

    //测试往数据库中插入是否正常
    @Test
    public void testInsertAdmin(){
        Admin admin = new Admin(null,"tom","123123","tom","tom@qq.com",null);
        int count = adminMapper.insert(admin);
        System.out.println("受影响的行数:" + count);
    }
}

配置过程中遇到的问题:

1、 @ContextConfiguration注解无法使用问题:需要在依赖Spring-test中删除test后就能使用(直接百度就能解决)

2、@RunWith注解无法使用,就需要将Dirctory变成test的目录就可以使用并且导入Junit依赖(测试类的注解,idea中只能用在测试的目录下,需要将目录改为测试Dirctory)

3、在测试能否操作数据库时遇到Invalid bound statement (not found): com.atguigu.mapper.AdminMapper.insert问题:
经过排查是AdminMapper.xml文件中的nameSpace中路径地址错误,导致无法找到AdminMapper接口报错。要注意在spring-persist-mybatis.xml指定XxxMapper.xml配置文件位置、Mybatis全局配置文件的位置不能出错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值