当前位置: 移动技术网 > IT编程>开发语言>Java > 详解在springboot中使用Mybatis Generator的两种方式

详解在springboot中使用Mybatis Generator的两种方式

2019年07月19日  | 移动技术网IT编程  | 我要评论

介绍

mybatis generator(mbg)是mybatis的一个代码生成工具。mbg解决了对数据库操作有最大影响的一些crud操作,很大程度上提升开发效率。如果需要联合查询仍然需要手写sql。相信很多人都听说过微服务,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在一个微服务的开发过程中很可能只关注对单表的操作。所以mbg在开发过程中可以快速的生成代码提升开发效率。

本文将说到在springboot的项目中如何去配置(xml形式和java配置类形式)和使用mbg以及mbg生成代码的两种方式(xml形式和注解形式),在springboot中更推荐去使用注解的形式。

mbg配置

1.添加依赖

  <dependency>
    <groupid>org.mybatis.generator</groupid>
    <artifactid>mybatis-generator-core</artifactid>
    <version>1.3.5</version>
  </dependency>

2.xml配置

配置示例:在新建springboot项目的根目录下创建mbg.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>
  <context id="db2tables" targetruntime="mybatis3">
    <commentgenerator>
       <!-- 是否自动去除生成注释 true 不生成-->
      <property name="suppressallcomments" value="true"/>
      <!--生成的注释包含时间戳-->
      <!-- <property name="suppressdate" value="true"/> -->
    </commentgenerator>  
    <!-- 数据库连接信息 -->
    <jdbcconnection 
      driverclass="com.mysql.jdbc.driver"
      connectionurl="jdbc:mysql://localhost:3306/definesys"
      userid="root"
      password="welcome1">
    </jdbcconnection> 
   
   <!-- 默认false,把jdbc decimal 和 numeric 类型解析为 integer,为 true时把jdbc decimal 和
      numeric 类型解析为java.math.bigdecimal -->   
    <javatyperesolver>
      <property name="forcebigdecimals" value="true"/>
    </javatyperesolver>
    
    <!-- 实体类 bean 带有get和set方法的bean -->
    <javamodelgenerator targetpackage="com.mgb.domain" targetproject="src/main/java">
     <property name="enablesubpackages" value="true" />
     <property name="trimstrings" value="true" />
    </javamodelgenerator>
  
  <!-- sql语句相关的xml或者注解的生成包路径 -->
    <sqlmapgenerator targetpackage="com.mgb.mapper" targetproject="src/main/java">
     <property name="enablesubpackages" value="true" />
    </sqlmapgenerator>
  
  <!-- 生成的接口所在的位置 注解type="annotatedmapper" xml type="xmlmapper" -->  
    <javaclientgenerator type="annotatedmapper" targetpackage="com.mgb.dao" targetproject="src/main/java">
     <property name="enablesubpackages" value="true" />
    </javaclientgenerator> 
     
    <table tablename="user_info" enablecountbyexample="true" enableupdatebyexample="true" enabledeletebyexample="true" enableselectbyexample="true" selectbyexamplequeryid="true">
      <property name="constructorbased" value="false" />
      <!-- 数据库表主键 -->
      <generatedkey column="id" sqlstatement="jdbc" identity="true" />
    </table>
  </context>
</generatorconfiguration>

配置详解

<?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>
<!-- 可以用于加载配置项或者配置文件,在整个配置文件中就可以使用${propertykey}的方式来引用配置项
  resource:配置资源加载地址,使用resource,mbg从classpath开始找,比如com/myproject/generatorconfig.properties    
  url:配置资源加载地质,使用url的方式,比如file:///c:/myfolder/generatorconfig.properties.
  注意,两个属性只能选址一个;

  另外,如果使用了mybatis-generator-maven-plugin,那么在pom.xml中定义的properties都可以直接在generatorconfig.xml中使用
<properties resource="" url="" />
 -->

 <!-- 在mbg工作的时候,需要额外加载的依赖包
   location属性指明加载jar/zip包的全路径
<classpathentry location="/program files/ibm/sqllib/java/db2java.zip" />
 -->

<!-- 
  context:生成一组对象的环境 
  id:必选,上下文id,用于在生成错误时提示
  defaultmodeltype:指定生成对象的样式
    1,conditional:类似hierarchical;
    2,flat:所有内容(主键,blob)等全部生成在一个对象中;
    3,hierarchical:主键生成一个xxkey对象(key class),blob等单独生成一个对象,其他简单属性在一个对象中(record class)
  targetruntime:
    1,mybatis3:默认的值,生成基于mybatis3.x以上版本的内容,包括xxxbysample;
    2,mybatis3simple:类似mybatis3,只是不生成xxxbysample;
  introspectedcolumnimpl:类全限定名,用于扩展mbg
-->
 <context id="mysql" defaultmodeltype="hierarchical" targetruntime="mybatis3simple" >

  <!-- 自动识别数据库关键字,默认false,如果设置为true,根据sqlreservedwords中定义的关键字列表;
    一般保留默认值,遇到数据库关键字(java关键字),使用columnoverride覆盖
   -->
  <property name="autodelimitkeywords" value="false"/>
  <!-- 生成的java文件的编码 -->
  <property name="javafileencoding" value="utf-8"/>
  <!-- 格式化java代码 -->
  <property name="javaformatter" value="org.mybatis.generator.api.dom.defaultjavaformatter"/>
  <!-- 格式化xml代码 -->
  <property name="xmlformatter" value="org.mybatis.generator.api.dom.defaultxmlformatter"/>

  <!-- beginningdelimiter和endingdelimiter:指明数据库的用于标记数据库对象名的符号,比如oracle就是双引号,mysql默认是`反引号; -->
  <property name="beginningdelimiter" value="`"/>
  <property name="endingdelimiter" value="`"/>

  <!-- 必须要有的,使用这个配置链接数据库
    @todo:是否可以扩展
   -->
  <jdbcconnection driver connectionurl="jdbc:mysql:///pss" userid="root" password="admin">
    <!-- 这里面可以设置property属性,每一个property属性都设置到配置的driver上 -->
  </jdbcconnection>

  <!-- java类型处理器 
    用于处理db中的类型到java中的类型,默认使用javatyperesolverdefaultimpl;
    注意一点,默认会先尝试使用integer,long,short等来对应decimal和 numeric数据类型; 
  -->
  <javatyperesolver type="org.mybatis.generator.internal.types.javatyperesolverdefaultimpl">
    <!-- 
      true:使用bigdecimal对应decimal和 numeric数据类型
      false:默认,
        scale>0;length>18:使用bigdecimal;
        scale=0;length[10,18]:使用long;
        scale=0;length[5,9]:使用integer;
        scale=0;length<5:使用short;
     -->
    <property name="forcebigdecimals" value="false"/>
  </javatyperesolver>

  <!-- java模型创建器,是必须要的元素
    负责:1,key类(见context的defaultmodeltype);2,java类;3,查询类
    targetpackage:生成的类要放的包,真实的包受enablesubpackages属性控制;
    targetproject:目标项目,指定一个存在的目录下,生成的内容会放到指定目录中,如果目录不存在,mbg不会自动建目录
   -->
  <javamodelgenerator targetpackage="com._520it.mybatis.domain" targetproject="src/main/java">
    <!-- for mybatis3/mybatis3simple
      自动为每一个生成的类创建一个构造方法,构造方法包含了所有的field;而不是使用setter;
     -->
    <property name="constructorbased" value="false"/>

    <!-- 在targetpackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
    <property name="enablesubpackages" value="true"/>

    <!-- for mybatis3 / mybatis3simple
      是否创建一个不可变的类,如果为true,
      那么mbg会创建一个没有setter方法的类,取而代之的是类似constructorbased的类
     -->
    <property name="immutable" value="false"/>

    <!-- 设置一个根对象,
      如果设置了这个根对象,那么生成的keyclass或者recordclass会继承这个类;在table的rootclass属性中可以覆盖该选项
      注意:如果在key class或者record class中有root class相同的属性,mbg就不会重新生成这些属性了,包括:
        1,属性名相同,类型相同,有相同的getter/setter方法;
     -->
    <property name="rootclass" value="com._520it.mybatis.domain.basedomain"/>

    <!-- 设置是否在getter方法中,对string类型字段调用trim()方法 -->
    <property name="trimstrings" value="true"/>
  </javamodelgenerator>

  <!-- 生成sql map的xml文件生成器,
    注意,在mybatis3之后,我们可以使用mapper.xml文件+mapper接口(或者不用mapper接口),
      或者只使用mapper接口+annotation,所以,如果 javaclientgenerator配置中配置了需要生成xml的话,这个元素就必须配置
    targetpackage/targetproject:同javamodelgenerator
   -->
  <sqlmapgenerator targetpackage="com._520it.mybatis.mapper" targetproject="src/main/resources">
    <!-- 在targetpackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
    <property name="enablesubpackages" value="true"/>
  </sqlmapgenerator>

  <!-- 对于mybatis来说,即生成mapper接口,注意,如果没有配置该元素,那么默认不会生成mapper接口 
    targetpackage/targetproject:同javamodelgenerator
    type:选择怎么生成mapper接口(在mybatis3/mybatis3simple下):
      1,annotatedmapper:会生成使用mapper接口+annotation的方式创建(sql生成在annotation中),不会生成对应的xml;
      2,mixedmapper:使用混合配置,会生成mapper接口,并适当添加合适的annotation,但是xml会生成在xml中;
      3,xmlmapper:会生成mapper接口,接口完全依赖xml;
    注意,如果context是mybatis3simple:只支持annotatedmapper和xmlmapper
  -->
  <javaclientgenerator targetpackage="com._520it.mybatis.mapper" type="annotatedmapper" targetproject="src/main/java">
    <!-- 在targetpackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
    <property name="enablesubpackages" value="true"/>
    <!-- 可以为所有生成的接口添加一个父接口,但是mbg只负责生成,不负责检查
    <property name="rootinterface" value=""/>
     -->
  </javaclientgenerator>
  <!-- 选择一个table来生成相关文件,可以有一个或多个table,必须要有table元素
    选择的table会生成一下文件:
    1,sql map文件
    2,生成一个主键类;
    3,除了blob和主键的其他字段的类;
    4,包含blob的类;
    5,一个用户生成动态查询的条件类(selectbyexample, deletebyexample),可选;
    6,mapper接口(可选)

    tablename(必要):要生成对象的表名;
    注意:大小写敏感问题。正常情况下,mbg会自动的去识别数据库标识符的大小写敏感度,在一般情况下,mbg会
      根据设置的schema,catalog或tablename去查询数据表,按照下面的流程:
      1,如果schema,catalog或tablename中有空格,那么设置的是什么格式,就精确的使用指定的大小写格式去查询;
      2,否则,如果数据库的标识符使用大写的,那么mbg自动把表名变成大写再查找;
      3,否则,如果数据库的标识符使用小写的,那么mbg自动把表名变成小写再查找;
      4,否则,使用指定的大小写格式查询;
    另外的,如果在创建表的时候,使用的""把数据库对象规定大小写,就算数据库标识符是使用的大写,在这种情况下也会使用给定的大小写来创建表名;
    这个时候,请设置delimitidentifiers="true"即可保留大小写格式;

    可选:
    1,schema:数据库的schema;
    2,catalog:数据库的catalog;
    3,alias:为数据表设置的别名,如果设置了alias,那么生成的所有的select sql语句中,列名会变成:alias_actualcolumnname
    4,domainobjectname:生成的domain类的名字,如果不设置,直接使用表名作为domain类的名字;可以设置为somepck.domainname,那么会自动把domainname类再放到somepck包里面;
    5,enableinsert(默认true):指定是否生成insert语句;
    6,enableselectbyprimarykey(默认true):指定是否生成按照主键查询对象的语句(就是getbyid或get);
    7,enableselectbyexample(默认true):mybatis3simple为false,指定是否生成动态查询语句;
    8,enableupdatebyprimarykey(默认true):指定是否生成按照主键修改对象的语句(即update);
    9,enabledeletebyprimarykey(默认true):指定是否生成按照主键删除对象的语句(即delete);
    10,enabledeletebyexample(默认true):mybatis3simple为false,指定是否生成动态删除语句;
    11,enablecountbyexample(默认true):mybatis3simple为false,指定是否生成动态查询总条数语句(用于分页的总条数查询);
    12,enableupdatebyexample(默认true):mybatis3simple为false,指定是否生成动态修改语句(只修改对象中不为空的属性);
    13,modeltype:参考context元素的defaultmodeltype,相当于覆盖;
    14,delimitidentifiers:参考tablename的解释,注意,默认的delimitidentifiers是双引号,如果类似mysql这样的数据库,使用的是`(反引号,那么还需要设置context的beginningdelimiter和endingdelimiter属性)
    15,delimitallcolumns:设置是否所有生成的sql中的列名都使用标识符引起来。默认为false,delimitidentifiers参考context的属性

    注意,table里面很多参数都是对javamodelgenerator,context等元素的默认属性的一个复写;
   -->
  <table tablename="userinfo" >

    <!-- 参考 javamodelgenerator 的 constructorbased属性-->
    <property name="constructorbased" value="false"/>

    <!-- 默认为false,如果设置为true,在生成的sql中,table名字不会加上catalog或schema; -->
    <property name="ignorequalifiersatruntime" value="false"/>

    <!-- 参考 javamodelgenerator 的 immutable 属性 -->
    <property name="immutable" value="false"/>

    <!-- 指定是否只生成domain类,如果设置为true,只生成domain类,如果还配置了sqlmapgenerator,那么在mapper xml文件中,只生成resultmap元素 -->
    <property name="modelonly" value="false"/>

    <!-- 参考 javamodelgenerator 的 rootclass 属性 
    <property name="rootclass" value=""/>
     -->

    <!-- 参考javaclientgenerator 的 rootinterface 属性
    <property name="rootinterface" value=""/>
    -->

    <!-- 如果设置了runtimecatalog,那么在生成的sql中,使用该指定的catalog,而不是table元素上的catalog 
    <property name="runtimecatalog" value=""/>
    -->

    <!-- 如果设置了runtimeschema,那么在生成的sql中,使用该指定的schema,而不是table元素上的schema 
    <property name="runtimeschema" value=""/>
    -->

    <!-- 如果设置了runtimetablename,那么在生成的sql中,使用该指定的tablename,而不是table元素上的tablename 
    <property name="runtimetablename" value=""/>
    -->
    <!-- 注意,该属性只针对mybatis3simple有用;
      如果选择的runtime是mybatis3simple,那么会生成一个selectall方法,如果指定了selectallorderbyclause,那么会在该sql中添加指定的这个order条件;
     -->
    <property name="selectallorderbyclause" value="age desc,username asc"/>

    <!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如born_date,生成的属性名字就是born_date,而不会是borndate -->
    <property name="useactualcolumnnames" value="false"/>

    <!-- generatedkey用于生成生成主键的方法,
      如果设置了该元素,mbg会在生成的<insert>元素中生成一条正确的<selectkey>元素,该元素可选
      column:主键的列名;
      sqlstatement:要生成的selectkey语句,有以下可选项:
        cloudscape:相当于selectkey的sql为: values identity_val_local()
        db2    :相当于selectkey的sql为: values identity_val_local()
        db2_mf  :相当于selectkey的sql为:select identity_val_local() from sysibm.sysdummy1
        derby   :相当于selectkey的sql为:values identity_val_local()
        hsqldb   :相当于selectkey的sql为:call identity()
        informix :相当于selectkey的sql为:select dbinfo('sqlca.sqlerrd1') from systables where tabid=1
        mysql   :相当于selectkey的sql为:select last_insert_id()
        sqlserver :相当于selectkey的sql为:select scope_identity()
        sybase   :相当于selectkey的sql为:select @@identity
        jdbc   :相当于在生成的insert元素上添加usegeneratedkeys="true"和keyproperty属性
    <generatedkey column="" sqlstatement=""/>
     -->

    <!-- 
      该元素会在根据表中列名计算对象属性名之前先重命名列名,非常适合用于表中的列都有公用的前缀字符串的时候,
      比如列名为:cust_id,cust_name,cust_email,cust_address等;
      那么就可以设置searchstring为"^cust_",并使用空白替换,那么生成的customer对象中的属性名称就不是
      custid,custname等,而是先被替换为id,name,email,然后变成属性:id,name,email;

      注意,mbg是使用java.util.regex.matcher.replaceall来替换searchstring和replacestring的,
      如果使用了columnoverride元素,该属性无效;

    <columnrenamingrule searchstring="" replacestring=""/>
     -->

     <!-- 用来修改表中某个列的属性,mbg会使用修改后的列来生成domain的属性;
       column:要重新设置的列名;
       注意,一个table元素中可以有多个columnoverride元素哈~
     -->
        <!-- 指定类型 -->
     <columnoverride column="record_date" jdbctype="timestamp"/> 

     <columnoverride column="username">
       <!-- 使用property属性来指定列要生成的属性名称 -->
       <property name="property" value="username"/>

       <!-- javatype用于指定生成的domain的属性类型,使用类型的全限定名
       <property name="javatype" value=""/>
       -->

       <!-- jdbctype用于指定该列的jdbc类型 
       <property name="jdbctype" value=""/>
       -->

       <!-- typehandler 用于指定该列使用到的typehandler,如果要指定,配置类型处理器的全限定名
         注意,mybatis中,不会生成到mybatis-config.xml中的typehandler
         只会生成类似:where id = #{id,jdbctype=bigint,typehandler=com._520it.mybatis.mytypehandler}的参数描述
       <property name="jdbctype" value=""/>
       -->

       <!-- 参考table元素的delimitallcolumns配置,默认为false
       <property name="delimitedcolumnname" value=""/>
       -->
     </columnoverride>

     <!-- ignorecolumn设置一个mgb忽略的列,如果设置了改列,那么在生成的domain中,生成的sql中,都不会有该列出现 
       column:指定要忽略的列的名字;
       delimitedcolumnname:参考table元素的delimitallcolumns配置,默认为false

       注意,一个table元素中可以有多个ignorecolumn元素
     <ignorecolumn column="deptid" delimitedcolumnname=""/>
     -->
  </table>
</context>
</generatorconfiguration>

生成代码:

public class testmgb {
  public static void main(string[] args) throws ioexception, xmlparserexception, invalidconfigurationexception, sqlexception, interruptedexception {
    list<string> warnings =new arraylist<string>();
    boolean overwrite=true;
    file configfile=new file("mgb.xml");
    configurationparser cp=new configurationparser(warnings);
    configuration config=cp.parseconfiguration(configfile);
    defaultshellcallback callback=new defaultshellcallback(overwrite);
    mybatisgenerator mybatisgenerator=new mybatisgenerator(config,callback,warnings);
    mybatisgenerator.generate(null);
  }

}

3.java配置示例

基于java的配置是和上面的xml配置是相对应的。直接运行该示例即可生成数据表对于的pojo,mapper接口和一个sqlprovider java类。

package com.mgb.test;

import java.util.arraylist;
import java.util.list;

import org.mybatis.generator.api.mybatisgenerator;
import org.mybatis.generator.config.commentgeneratorconfiguration;
import org.mybatis.generator.config.configuration;
import org.mybatis.generator.config.context;
import org.mybatis.generator.config.jdbcconnectionconfiguration;
import org.mybatis.generator.config.javaclientgeneratorconfiguration;
import org.mybatis.generator.config.javamodelgeneratorconfiguration;
import org.mybatis.generator.config.javatyperesolverconfiguration;
import org.mybatis.generator.config.modeltype;
import org.mybatis.generator.config.pluginconfiguration;
import org.mybatis.generator.config.sqlmapgeneratorconfiguration;
import org.mybatis.generator.config.tableconfiguration;
import org.mybatis.generator.internal.defaultshellcallback;

public class mgbconfig {
  public static void main(string[] args) throws exception{
     //配置xml配置项
     list<string> warnings = new arraylist<string>();
     boolean overwrite = true;
     configuration config = new configuration();
     context context = new context(modeltype.conditional);
     context.settargetruntime("mybatis3");
     context.setid("defaultcontext");
     
    //自动识别数据库关键字,默认false,如果设置为true,
    //根据sqlreservedwords中定义的关键字列表;一般保留默认值,遇到数据库关键字(java关键字),
    //使用columnoverride覆盖
     context.addproperty("autodelimitkeywords","true");
     
    //生成的java文件的编码
    context.addproperty("javafileencoding","utf-8");
    context.addproperty("beginningdelimiter","`");
    context.addproperty("endingdelimiter","`");
    //格式化java代码
    context.addproperty("javaformatter","org.mybatis.generator.api.dom.defaultjavaformatter");
    //格式化xml代码
    context.addproperty("xmlformatter","org.mybatis.generator.api.dom.defaultxmlformatter");
    //格式化信息
    pluginconfiguration pluginconfiguration = new pluginconfiguration();
    pluginconfiguration.setconfigurationtype("org.mybatis.generator.plugins.serializableplugin");
    pluginconfiguration.setconfigurationtype("org.mybatis.generator.plugins.tostringplugin");
    context.addpluginconfiguration(pluginconfiguration);
    
    //设置是否去除生成注释
    commentgeneratorconfiguration commentgeneratorconfiguration = new commentgeneratorconfiguration();
    commentgeneratorconfiguration.addproperty("suppressallcomments","true");
    //commentgeneratorconfiguration.addproperty("suppressdate","true");
    context.setcommentgeneratorconfiguration(commentgeneratorconfiguration);
  
    //设置连接数据库
    jdbcconnectionconfiguration jdbcconnectionconfiguration = new jdbcconnectionconfiguration();
    jdbcconnectionconfiguration.setdriverclass("com.mysql.jdbc.driver");
    jdbcconnectionconfiguration.setconnectionurl("jdbc:mysql://localhost:3306/definesys");
    jdbcconnectionconfiguration.setpassword("welcome1");
    jdbcconnectionconfiguration.setuserid("root");
    context.setjdbcconnectionconfiguration(jdbcconnectionconfiguration);
    
    javatyperesolverconfiguration javatyperesolverconfiguration = new javatyperesolverconfiguration();
    //是否使用bigdecimal, false可自动转化以下类型(long, integer, short, etc.)
    javatyperesolverconfiguration.addproperty("forcebigdecimals","false");
    context.setjavatyperesolverconfiguration(javatyperesolverconfiguration);
    
    //生成实体类的地址
    javamodelgeneratorconfiguration javamodelgeneratorconfiguration = new javamodelgeneratorconfiguration();
    javamodelgeneratorconfiguration.settargetpackage("com.mgb.domain");
    javamodelgeneratorconfiguration.settargetproject("src/main/java");
    javamodelgeneratorconfiguration.addproperty("enablesubpackages","true");
    javamodelgeneratorconfiguration.addproperty("trimstrings","true");
    context.setjavamodelgeneratorconfiguration(javamodelgeneratorconfiguration);
    
    //生成的xml的地址
    sqlmapgeneratorconfiguration sqlmapgeneratorconfiguration = new sqlmapgeneratorconfiguration();
    sqlmapgeneratorconfiguration.settargetproject("src/main/java");
    sqlmapgeneratorconfiguration.settargetpackage("com.mgb.mapper");
    sqlmapgeneratorconfiguration.addproperty("enablesubpackages","true");
    context.setsqlmapgeneratorconfiguration(sqlmapgeneratorconfiguration);
    
    //生成注解接口
    javaclientgeneratorconfiguration javaclientgeneratorconfiguration = new javaclientgeneratorconfiguration();
    javaclientgeneratorconfiguration.settargetpackage("com.mgb.dao");
    javaclientgeneratorconfiguration.settargetproject("src/main/java");
    //注解形式 annotatedmapper xml形式 xmlmapper
    javaclientgeneratorconfiguration.setconfigurationtype("annotatedmapper");
    javaclientgeneratorconfiguration.addproperty("enablesubpackages","true");
    context.setjavaclientgeneratorconfiguration(javaclientgeneratorconfiguration);
    
    tableconfiguration tableconfiguration = new tableconfiguration(context);
    tableconfiguration.settablename("user_info");
    tableconfiguration.setcountbyexamplestatementenabled(true);
    tableconfiguration.setupdatebyexamplestatementenabled(true);
    tableconfiguration.setdeletebyexamplestatementenabled(true);
    tableconfiguration.setinsertstatementenabled(true);
    tableconfiguration.setdeletebyprimarykeystatementenabled(true);    
    context.addtableconfiguration(tableconfiguration);
    
    config.addcontext(context);
    defaultshellcallback callback = new defaultshellcallback(overwrite);
    mybatisgenerator mybatisgenerator = new mybatisgenerator(config, callback, warnings);
    mybatisgenerator.generate(null);
  }  
}

使用

package com.mgb.service;
import java.util.list;
import org.springframework.beans.factory.annotation.autowired;
import org.springframework.stereotype.service;

import com.mgb.dao.userinfomapper;
import com.mgb.domain.userinfo;
import com.mgb.domain.userinfoexample;

@service
public class userservice {
  @autowired
  private userinfomapper userinfomapper;
  
  /**
   * 按姓名查询
   * @param name
   * @return
   */
  public list<userinfo> getuserbyname(string name){
    userinfoexample uerinfoexample=new userinfoexample();
    uerinfoexample.createcriteria().andnameequalto(name);
    return userinfomapper.selectbyexample(uerinfoexample);
  }
  
  /**
   * 有条件的insert
   * @param userinfo
   * @return
   */
  public integer adduser(userinfo userinfo) {
    return userinfomapper.insertselective(userinfo);
  }
  
  /**
   * 根据id更新用户信息
   * @param userinfo
   * @return
   */
  public integer updateuser(userinfo userinfo) {
    return userinfomapper.updatebyprimarykey(userinfo);
  }
  
  /**
   * 根据id删除用户
   * @param id
   * @return
   */
  public integer deleteuserbyid(integer id) {
    return userinfomapper.deletebyprimarykey(id);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网