springboot简单整合mybatis+各种整合时遇到的错误

springboot整合mybatis

项目结构在编译后 src下子级目录和resources下子级目录是同一级的
  1. 添加依赖

    	<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.0</version>   
         </dependency>
         <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.7</version>
        </dependency>
          
          <plugin>
              <groupId>org.mybatis.generator</groupId>
              <artifactId>mybatis-generator-maven-plugin</artifactId>
              <version>1.3.5</version>
    
              <configuration>
              <configurationFile>generatorConf.xml</configurationFile>
              <verbose>true</verbose>
              <overwrite>true</overwrite>
              </configuration>
          </plugin>
    
  2. 在application.properties文件中配置,配置url时必须配置时区,要不然会报时区错误异常

    #数据库相关配置
    spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
    spring.datasource.url=jdbc:mysql://localhost:3306/students?serverTimezone=CST
    spring.datasource.username=root
    spring.datasource.password=root
    
    1. 使用mbg

      1. 导入依赖 上面 导入插件 上面

      2. 配置mbg配置文件 注意得配置jdbc驱动,就是本地的,要不然插件用不了。或者在插件里面配置

        ​ 这个必须导入,要不然会报Exception getting JDBC Driver

        <classPathEntry location="D:\mysql-connector-java-8.0.22.jar"/> 
        
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE generatorConfiguration
                PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
                "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
        <generatorConfiguration>
        
            <properties resource="db.properties"/>
            <!--MyBatis可以生产两种版本
            豪华版:除了CRUD还有大量的查询         targetRuntime="MyBatis3"
            简单版:只有CRUD                        targetRuntime="MyBatis3Simple"
            -->
           
            <classPathEntry location="D:\mysql-connector-java-8.0.22.jar"/> 
            <context id="DB2Tables" targetRuntime="MyBatis3Simple">
        
                <!-- 去掉全部的注释 -->
                <commentGenerator>
                    <property name="suppressAllComments" value="true"/>
                </commentGenerator>
        
                <!--
                    修改数据库连接的属性信息
                -->
                <jdbcConnection driverClass="${spring.datasource.driverClassName}"
                                connectionURL="${mybatis.datasource.url}"
                                userId="${mybatis.datasource.username}"
                                password="${mybatis.datasource.password}">
                </jdbcConnection>
        
                <!--是否启用 BigDecimal-->
                <javaTypeResolver>
                    <property name="forceBigDecimals" value="false"/>
                </javaTypeResolver>
        
                <!--JavaBean的生成配置
                        targetPackage   生成的类的包名
                        targetProject   生成的类在哪个模块目录下
                -->
                <javaModelGenerator targetPackage="model"
                                    targetProject="src\main\java\com\w\springboot">
                    <property name="enableSubPackages" value="true"/>
                    <property name="trimStrings" value="true"/>
                </javaModelGenerator>
        
                <!--mapper.xml的生成配置
                        targetPackage   生成的配置文件在哪个包名下
                        targetProject   生成的文件在哪个模块目录下
                -->
                <sqlMapGenerator targetPackage="com.w.mapper"
                                 targetProject="src\main\resources">
                    <property name="enableSubPackages" value="true"/>
                </sqlMapGenerator>
                <!--mapper的生成配置
                        targetPackage   包名
                        targetProject   哪个模块目录下
                -->
                <javaClientGenerator type="XMLMAPPER"
                                     targetPackage="mapper"
                                     targetProject="src\main\java\com\w\springboot">
                    <property name="enableSubPackages" value="true"/>
                </javaClientGenerator>
        
                <!--
                    一个table标签表示一个表
                        tableName表示表名
                        domainObjectName表示生成的类名
                -->
                <table tableName="account" domainObjectName="Account"/>
        
        
            </context>
        </generatorConfiguration>
        
        
        
        1. Mapper映射文件存储位置 , 如果都放到src/main/java/mapper下,会有打包问题。所以将mapper.xml文件放到src/main/resources/mapper下就会正确编译。但是还需在application.propertise下配置

          mybatis.mapper-locations=classpath:mapper/*.xml
          
        2. 如果说是都在src/main/java/mapper下,得需要加上

           <!--**/*.xml 在java所有目录下找*.xml-->
          <resources>
              <resource>
                  <directory>src/main/java</directory>
                  <includes>
                 		 <include>**/*.xml</include> 
                   </includes>
              </resource>
          </resources>
          
        3. 切记在mapper.xml中namespace要是mapper接口的全类名,就是从同一级下开始,比如说是com.w.mapper.***mapper,如果错了会报找不到接口方法异常org.apache.ibatis.binding.BindingException: Invalid bound statement (not found

        4. 配置mbg配置文件如果使用了db.properties就上面的引入方式需要放到src/main/resources/目录下,要不然会报找不到配置文件异常

        5. 如果多次删除又加载mbg注意mapper.xml可能会重复出现代码,会报Result Maps collection already contains value for…BaseResultMap

      3. 如果不使用mbg快速生成

        1. Javabean自己写,mapper接口自己写

        2. mapper.xml自己写,并且放对位置在pom.xml里的build里面

          1. 放在src下,与mapper接口放在同一个文件。
           <resources>
              <!-- mapper.xml文件在java目录下 -->
              <resource>
                  <directory>src/main/java</directory>
                  <includes>
                      <include>**/*.xml</include>
                  </includes>
              </resource>
          </resources>
          
          1. 放在resources下,在resources下新建一个mapper文件夹,里边放 *.xml。同时还得在pom.xml里放入
          <resources>
                  <!-- mapper.xml文件在resources目录下-->
                  <resource>
                  	<directory>src/main/resources</directory>
          		</resource>
           </resources>
          
          1. 不论是1还是2 , 感觉2更好一点,都得在application.properties里面告诉spring boot映射文件的位置
          # 1. mapper.xml的位置
          mybatis.mapper-locations=com/w/mapper/*.xml
          
          # 2. mapper.xml的位置
          mybatis.mapper-locations=classpath:mapper/*.xml
          
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值