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

    逆向工程

    1.1 什么是逆向工程

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


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

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

     

    1.2 下载逆向工程

     

     下载地址:http://download.csdn.net/detail/molashaonian/9650421

     

    1.3 使用方法(会用)

    1.3.1 运行逆向工程 

     

     

    建议使用java程序方式,不依赖开发工具。

    1.3.2 生成代码配置文件

    <span style="font-size:14px;">
    <?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="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>
    
    <property name="forceBigDecimals" value="false" />
    
    </javaTypeResolver>
    
     
    
    <!-- targetProject:生成PO类的位置-->
    
    <javaModelGenerator targetPackage="cn.itcast.ssm.po"
    
    targetProject=".src">
    
    <!-- enableSubPackages:是否让schema作为包的后缀-->
    
    <property name="enableSubPackages" value="false" />
    
    <!-- 从数据库返回的值被清理前后的空格 -->
    
    <property name="trimStrings" value="true" />
    
    </javaModelGenerator>
    
            <!-- targetProject:mapper映射文件生成的位置-->
    
    <sqlMapGenerator targetPackage="cn.itcast.ssm.mapper" 
    
    targetProject=".src">
    
    <!-- enableSubPackages:是否让schema作为包的后缀-->
    
    <property name="enableSubPackages" value="false" />
    
    </sqlMapGenerator>
    
    <!-- targetPackage:mapper接口生成的位置-->
    
    <javaClientGenerator type="XMLMAPPER"
    
    targetPackage="cn.itcast.ssm.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>
    
    </context>
    
    </generatorConfiguration>
    
    
    </span>


    1.3.3 执行生成程序

     

     

    生成后的代码:

     

     

    1.3.4 使用生成的代码

     

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

     

    测试ItemsMapper中的方法

     

    <span style="font-size:14px;">
    //自定义条件查询
    
    @Test
    
    public void testSelectByExample() {
    
    ItemsExample itemsExample = new ItemsExample();
    
    //通过criteria构造查询条件
    
    ItemsExample.Criteria criteria = itemsExample.createCriteria();
    
    criteria.andNameEqualTo("笔记本3");
    
    //可能返回多条记录
    
    List<Items> list = itemsMapper.selectByExample(itemsExample);
    
    System.out.println(list);
    
    }
    
     
    
    //根据主键查询
    
    @Test
    
    public void testSelectByPrimaryKey() {
    
    Items items = itemsMapper.selectByPrimaryKey(1);
    
    System.out.println(items);
    
    }
    
     
    
     
    
    //插入
    
    @Test
    
    public void testInsert() {
    
    //构造 items对象
    
    Items items = new Items();
    
    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);
    
    }
    </span>
    


    mybatis generator自动生成的代码里老是有一堆example,虽然说他封装的东西比较多,但是大部分时候并不会用到。如果需要改的时候,在接口和mapper里修改便是了。

    配置的方法如下:

    <table schema="general" tableName="tb_table_name" domainObjectName="EntityName"
        enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
        enableSelectByExample="false" selectByExampleQueryId="false" >
        <property name="useActualColumnNames" value="true"/>
    </table>

    设置这几个属性

    enableCountByExample="false" 
    enableUpdateByExample="false" 
    enableDeleteByExample="false"    
    enableSelectByExample="false" 
    selectByExampleQueryId="false"



  • 相关阅读:
    通过ajax前端后台交互/登录页和注册页前端后台交互详解/前端后台交互基础应用/几个后台函数的基础应用/php文件函数基础应用/php字符传函数基础应用/php数组函数基础应用
    >>>---PHP中的OOP-->面对过程与面对对象基础概念与内容--(封装、继承、多态)
    基于HBuilder开发手机APP-主页/跳转页面/切换选项卡
    PHP基础学习
    JavaScript学习-js中的数组/Boolean类/字符串String类
    关于gulp中顺序执行任务
    AugularJS从入门到实践(三)
    AugularJS从入门到实践(二)
    用CSS实现响应式布局
    React+ANTD项目使用后的一些关于生命周期比较实用的心得
  • 原文地址:https://www.cnblogs.com/molashaonian/p/7242062.html
Copyright © 2011-2022 走看看