当前位置: 移动技术网 > IT编程>开发语言>Java > 详解MyBatis逆向工程

详解MyBatis逆向工程

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

1.什么是mybatis逆向工程

在使用mybatis时需要程序员自己编写sql语句,针对单表的sql语句量是很大的,mybatis官方提供了一种根据数据库表生成mybatis执行代码的工具,这个工具就是一个逆向工程。
逆向工程:针对数据库单表—->生成代码(mapper.xml、mapper.java、pojo。。)

mybatis-generator-core-1.3.2.jar—逆向工程运行所需要的jar核心 包

2.配置逆向工程的配置文件

配置文件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>
  <context id="testtables" targetruntime="mybatis3">
    <commentgenerator>
      <!-- 是否去除自动生成的注释 true:是 : false:否 -->
      <property name="suppressallcomments" value="true" />
    </commentgenerator>
    <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
    <jdbcconnection driverclass="com.mysql.jdbc.driver"
      connectionurl="jdbc:mysql://localhost:3306/mybatis" userid="root"
      password="123">
    </jdbcconnection>
    <!-- <jdbcconnection driverclass="oracle.jdbc.oracledriver"
      connectionurl="jdbc:oracle:thin:@127.0.0.1:1521:yycg" 
      userid="yycg"
      password="yycg">
    </jdbcconnection> -->

    <!-- 默认false,把jdbc decimal 和 numeric 类型解析为 integer,为 true时把jdbc decimal 和 
      numeric 类型解析为java.math.bigdecimal -->
    <javatyperesolver>
      <property name="forcebigdecimals" value="false" />
    </javatyperesolver>

    <!-- targetproject:生成po类的位置 -->
    <javamodelgenerator targetpackage="cn.zm.mybatis.po"
      targetproject=".\src">
      <!-- enablesubpackages:是否让schema作为包的后缀 -->
      <property name="enablesubpackages" value="false" />
      <!-- 从数据库返回的值被清理前后的空格 -->
      <property name="trimstrings" value="true" />
    </javamodelgenerator>
    <!-- targetproject:mapper映射文件生成的位置 -->
    <sqlmapgenerator targetpackage="cn.zm.mybatis.mapper"
      targetproject=".\src">
      <!-- enablesubpackages:是否让schema作为包的后缀 -->
      <property name="enablesubpackages" value="false" />
    </sqlmapgenerator>
    <!-- targetpackage:mapper接口生成的位置 -->
    <javaclientgenerator type="xmlmapper"
      targetpackage="cn.zm.mybatis.mapper"
      targetproject=".\src">
      <!-- enablesubpackages:是否让schema作为包的后缀 -->
      <property name="enablesubpackages" value="false" />
    </javaclientgenerator>
    <!-- 指定数据库表 -->
    <table tablename="items"></table>
    <!-- <table tablename="orders"></table>
    <table tablename="orderdetail"></table>
    <table tablename="user"></table>-->
    <!-- <table schema="" tablename="sys_user"></table>
    <table schema="" tablename="sys_role"></table>
    <table schema="" tablename="sys_permission"></table>
    <table schema="" tablename="sys_user_role"></table>
    <table schema="" tablename="sys_role_permission"></table> -->

    <!-- 有些表的字段需要指定java类型
     <table schema="" tablename="">
      <columnoverride column="" javatype="" />
    </table> -->
  </context>
</generatorconfiguration>

3.执行逆向工程生成代码

执行java类方法:

生成的代码如下:

4.将生成的代码拷贝到业务系统工程中测试

public class itemsmappertest {
  private applicationcontext applicationcontext;
  private itemsmapper itemsmapper;

  @before
  public void setup() throws exception {
    applicationcontext = new classpathxmlapplicationcontext("classpath:applicationcontext.xml");
    itemsmapper = (itemsmapper) applicationcontext.getbean("itemsmapper");
  }

  //根本主键删除
  @test
  public void deletebyprimarykey() {
    itemsmapper.deletebyprimarykey(4);
  }

  @test
  public void insert() {
  }

  @test
  public void selectbyexample() {
    itemsexample itemsexample = new itemsexample();
    itemsexample.criteria criteria = itemsexample.createcriteria();
    //使用criteria自定义查询条件
    criteria.andnameequalto("水杯");
    criteria.andidequalto(1);

    list<items> list = itemsmapper.selectbyexample(itemsexample);
    system.out.println(list);
  }

  @test
  public void selectbyprimarykey() {
    items items = itemsmapper.selectbyprimarykey(1);
    system.out.println(items);
  }

  @test
  public void updatebyprimarykey() {
  }
}

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

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

相关文章:

验证码:
移动技术网