欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring和MyBatis整合自动生成代码里面text类型遇到的坑

程序员文章站 2023-12-16 23:19:22
spring和mybatis整合以后,使用自动生成代码工具生成dao和mapper配置文件,生成步骤如下(以intelli idea为例)。 1.编写生成代码配置文件ge...

spring和mybatis整合以后,使用自动生成代码工具生成dao和mapper配置文件,生成步骤如下(以intelli idea为例)。

1.编写生成代码配置文件generatorconfig.xml。

<?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>
  <classpathentry location="d:\dev\maven\repository\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar"/>
  <context id="db2tables" defaultmodeltype="flat" targetruntime="mybatis3">
    <commentgenerator>
      <property name="suppressdate" value="true"/>
      <!-- 是否去除自动生成的注释 true:是 : false:否 -->
      <property name="suppressallcomments" value="false"/>
    </commentgenerator>
    <jdbcconnection driverclass="com.mysql.jdbc.driver"
            connectionurl="jdbc:mysql://localhost:3306/mycollege?characterencoding=utf-8"
            userid="root"
            password="root">
    </jdbcconnection>
    <javatyperesolver>
      <property name="forcebigdecimals" value="false"/>
    </javatyperesolver>
    <!-- 生成模型的包名和位置 -->
    <javamodelgenerator targetpackage="com.cx.elearnning.model"
              targetproject="src/main/java">
      <property name="enablesubpackages" value="true"/>
      <property name="trimstrings" value="true"/>
    </javamodelgenerator>
    <!-- generate xml -->
    <sqlmapgenerator targetpackage="/"
             targetproject="src/main/resources/mapper">
      <property name="enablesubpackages" value="true"/>
    </sqlmapgenerator>
    <!-- generate mapper -->
    <javaclientgenerator type="xmlmapper" targetpackage="com.cx.elearnning.dao"
               targetproject="src/main/java">
      <property name="enablesubpackages" value="true"/>
    </javaclientgenerator>
   <!--需要自动生成的表名和对应的model名-->
    <table tablename="sys_user" domainobjectname="sysuser"></table>
  </context>
</generatorconfiguration>

2.配置如下maven运行命令。

Spring和MyBatis整合自动生成代码里面text类型遇到的坑 

3.运行generatorcode即可。

问题描述

假如数据库表里面存在text或者blob字段。自动生成的数据库配置文件如下,会多出几个以withblobs结尾的方法和resultmap:

<!--仅仅贴上不一样的部分-->
<resultmap extends="baseresultmap" id="resultmapwithblobs" type="com.cx.elearnning.model.eduwebsiteprofile">
  <!--
   warning - @mbggenerated
   this element is automatically generated by mybatis generator, do not modify.
  -->
  <result column="desciption" jdbctype="longvarchar" property="desciption" />
 </resultmap>
<select id="selectbyexamplewithblobs" parametertype="com.cx.elearnning.model.eduwebsiteprofileexample" resultmap="resultmapwithblobs">
  <!--
   warning - @mbggenerated
   this element is automatically generated by mybatis generator, do not modify.
  -->
  select
  <if test="distinct">
   distinct
  </if>
  <include refid="base_column_list" />
  ,
  <include refid="blob_column_list" />
  from edu_website_profile
  <if test="_parameter != null">
   <include refid="example_where_clause" />
  </if>
  <if test="orderbyclause != null">
   order by ${orderbyclause}
  </if>
 </select>

假如此时查询数据或者更新数据的使用仍然使用selectbyexample或者updatebyexample,得到的text或者blob数据是null。

正确做法

应该使用selectbyexamplewithblobs或者updatebyexamplewithblobs这两个方法。

总结

以上所述是小编给大家介绍的spring和mybatis整合自动生成代码里面text类型遇到的坑,希望对大家有所帮助

上一篇:

下一篇: