zoukankan      html  css  js  c++  java
  • mybatis 的逆向工程

    1      逆向工程

    1.1  什么是逆向工程

    mybaits需要程序员自己编写sql语句,mybatis官方提供逆向工程 可以针对单表自动生成mybatis执行所需要的代码(mapper.Java,mapper.xml、po..)

    该工程源码已上传我的资源页   http://download.csdn.NET/detail/u012373815/8941137

    数据库到java 代码 

    企业实际开发中,常用的逆向工程方式:

    由于数据库的表生成java代码。

    1.2  逆向工程

    目录


    1.3  使用方法(会用)

    1.3.1    运行逆向工程

    建议使用java程序方式,不依赖开发工具有java环境即可。

    1.3.2    生成代码配置文件

    1、  添加要生成的数据库表

    2、  po文件所在包路径

    3、  mapper文件所在包路径

    配置文件如下:注意标红处

    <?xmlversion="1.0"encoding="UTF-8"?>

    <!DOCTYPEgeneratorConfiguration

     PUBLIC "-//mybatis.org//DTDMyBatis Generator Configuration 1.0//EN"

     "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

     

    <generatorConfiguration>

        <contextid="testTables"targetRuntime="MyBatis3">

           <commentGenerator>

               <!-- 是否去除自动生成的注释 true:是 false: -->

               <propertyname="suppressAllComments"value="true"/>

           </commentGenerator>

           <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->

           <jdbcConnectiondriverClass="com.MySQL.jdbc.Driver"

               connectionURL="jdbc:mysql://localhost:3306/mybatis"userId="root"

               password="mysql">

           </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>

               <propertyname="forceBigDecimals"value="false"/>

           </javaTypeResolver>

     

           <!-- targetProject:生成PO类的位置 -->

           <javaModelGeneratortargetPackage="cn.hpu.ssm.po"

               targetProject=".src">

               <!--enableSubPackages:是否让schema作为包的后缀 -->

               <propertyname="enableSubPackages"value="false"/>

               <!-- 从数据库返回的值被清理前后的空格 -->

               <propertyname="trimStrings"value="true"/>

           </javaModelGenerator>

            <!-- targetProject:mapper映射文件生成的位置 -->

           <sqlMapGeneratortargetPackage="cn.hpu.ssm.mapper"

               targetProject=".src">

               <!--enableSubPackages:是否让schema作为包的后缀 -->

               <propertyname="enableSubPackages"value="false"/>

           </sqlMapGenerator>

           <!-- targetPackagemapper接口生成的位置 -->

           <javaClientGeneratortype="XMLMAPPER"

               targetPackage="cn.hpu.ssm.mapper"

               targetProject=".src">

               <!--enableSubPackages:是否让schema作为包的后缀 -->

               <propertyname="enableSubPackages"value="false"/>

           </javaClientGenerator>

           <!-- 指定数据库表 -->

            <table tableName="items"></table>

           <table tableName="orders"></table>

           <table tableName="orderdetail"></table>

           <table tableName="user"></table>

        </context>

    </generatorConfiguration>

    1.3.3    执行生成程序

    Public void generator()throws Exception{

          List<String>warnings = newArrayList<String>();

          boolean overwrite =true;

          FileconfigFile = newFile("generatorConfig.xml");

          ConfigurationParsercp = newConfigurationParser(warnings);

          Configurationconfig = cp.parseConfiguration(configFile);

          DefaultShellCallbackcallback = new DefaultShellCallback(overwrite);

          MyBatisGeneratormyBatisGenerator = new MyBatisGenerator(config,

                callback,warnings);

          myBatisGenerator.generate(null);

       }

       Public static voidmain(String[] args)throws Exception {

          try {

             GeneratorSqlmapgeneratorSqlmap = new GeneratorSqlmap();

             generatorSqlmap.generator();

          }catch(Exception e) {

             e.printStackTrace();

          }

    }

    刷新程序目录结构生成后的代码:

    1.3.4    使用生成的代码

    需要将生成工程中所生成的代码拷贝到自己的工程中。

    测试ItemsMapper中的方法

    //自定义条件查询

       @Test

       public void testSelectByExample() {

          ItemsExampleitemsExample = newItemsExample();

          //通过criteria构造查询条件

          ItemsExample.Criteriacriteria = itemsExample.createCriteria();

          criteria.andNameEqualTo("笔记本3");

          //可能返回多条记录

          List<Items>list = itemsMapper.selectByExample(itemsExample);

         

          System.out.println(list);

         

       }

     

       //根据主键查询

       @Test

       public voidtestSelectByPrimaryKey() {

          Itemsitems = itemsMapper.selectByPrimaryKey(1);

          System.out.println(items);

       }

    //插入

       @Test

       public void testInsert() {

          //构造 items对象

          Itemsitems = newItems();

          items.setName("手机");

          items.setPrice(999f);

          itemsMapper.insert(items);

       }

    //更新数据

       @Test

        public void testUpdateByPrimaryKey() {

           //对所有字段进行更新,需要先查询出来再更新

           Items items = itemsMapper.selectByPrimaryKey(1);

           items.setName("水杯");

           itemsMapper.updateByPrimaryKey(items);

           //如果传入字段不空为才更新,在批量更新中使用此方法,不需要先查询再更新

           //itemsMapper.updateByPrimaryKeySelective(record);

        }


    源码传资源了在我的资源页

  • 相关阅读:
    PHP温故知新(一)
    DNS 与 CoreDNS
    如何实现服务端Moc
    nginx用logrotate工具对日志进行分割备份
    postman 关联参数值
    python3.7 allure-commandline-2.13.1.zip 下载地址
    jmeter JDBC Request
    JMeterQuestions english
    python 接口自动化 依赖包源 可以选豆瓣源
    python 3 升级pip不成功 解决方法
  • 原文地址:https://www.cnblogs.com/jpfss/p/6777681.html
Copyright © 2011-2022 走看看