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

详解MyBatis逆向工程

程序员文章站 2023-12-09 14:47:09
1.什么是mybatis逆向工程 在使用mybatis时需要程序员自己编写sql语句,针对单表的sql语句量是很大的,mybatis官方提供了一种根据数据库表生成myba...

1.什么是mybatis逆向工程

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

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

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

详解MyBatis逆向工程

配置文件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.执行逆向工程生成代码

详解MyBatis逆向工程

执行java类方法:

详解MyBatis逆向工程

生成的代码如下:

详解MyBatis逆向工程

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() {
  }
}

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