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

    • mybatis官方提供逆向工程可以针对单表自动生成mybatis执行所需要的代码
      • 创建一个generateConfig.xml
        <?xml version="1.0" encoding="UTF-8" ?>
        <!--
            配置文件内容
            (1)如何连接数据库
            (2)要生成哪些对象以及如何生成它们
            (3)应该使用那些表生成对象
        -->
        <!DOCTYPE generatorConfiguration
                PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
                "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
        
        <generatorConfiguration>
            <!-- 引入配置文件 -->
            <properties resource="db.properties"/>
          <!--  <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip"/>-->
        
        
            <context id="DB2Tables" targetRuntime="MyBatis3">
                <commentGenerator>
                    <!-- 是否去除自动生成的注释:true(是),false(否) -->
                    <property name="suppressDate" value="true"/>
                </commentGenerator>
                <!-- 数据库的连接信息:驱动类、连接地址、用户名、密码 -->
                <jdbcConnection driverClass="${jdbc.driver}"
                                connectionURL="${jdbc.url}"
                                userId="${jdbc.username}"
                                password="${jdbc.password}">
                </jdbcConnection>
        
                <!-- 默认false,把JDBC DECIMAL 和 NUMERIC类型解析为Integer,为true时,则解析为java.math.BigDecimal -->
                <javaTypeResolver>
                    <property name="forceBigDecimals" value="false"/>
                </javaTypeResolver>
        
                <!--
                    targetProject:生成Pojo类的位置,路径
                    targetPackage:生成Pojo类的位置,包
                -->
                <javaModelGenerator targetPackage="cn.muriel.auto.pojo" targetProject="src">
                    <!-- enableSubPackages:是否让schema作为包的后缀 -->
                    <property name="enableSubPackages" value="true"/>
                    <!-- 从数据库返回的值被清理前后的空格 -->
                    <property name="trimStrings" value="true"/>
                </javaModelGenerator>
        
                <!-- targetProject:mapper映射文件生成的位置 -->
                <sqlMapGenerator targetPackage="cn.muriel.auto.mapper" targetProject="src">
                    <!-- enableSubPackages:是否让schema作为包的后缀 -->
                    <property name="enableSubPackages" value="true"/>
                </sqlMapGenerator>
        
                <!-- targetPackage:mapper接口生成的位置 -->
                <javaClientGenerator type="XMLMAPPER" targetPackage="cn.muriel.auto.mapper" targetProject="src">
                    <!-- enableSubPackages:是否让schma作为包的后缀 -->
                    <property name="enableSubPackages" value="true"/>
                </javaClientGenerator>
        
                <!-- 指定数据表 -->
                <table tableName="user"/>
                <table tableName="food"/>
                <!-- 有些表的字段需要指定java类型
                <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer">
                    <property name="useActualColumnNames" value="true"/>
                    <generatedKey column="ID" sqlStatement="DB2" identity="true"/>
                    <columnOverride column="DATE_FIELD" property="startDate"/>
                    <ignoreColumn column="FRED"/>
                    <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR"/>
                </table> -->
        
            </context>
        </generatorConfiguration>
      • 创建一个GenerateorSqlMapUtils工具类
        public class GeneratorSqlMapUtils {
        
            /**
             * 基于XML的配置从Java调用MBG
             * (1)配置文件属性可以作为ConfigurationParser构造函数的参数传递给解析器。如果未显式传递,将搜索JVM系统属性以获取配置文件属性的值。
             * 例如,可以使用转义序列$ {generated.source.dir}在配置文件中防伪属性generated.source.dir
             * (2)如果在配置文件中指定了属性但为解析,则转义的属性字符串将"按原样"传递到生成的代码中
             *
             * @throws Exception
             */
            public void generator() throws Exception {
                List<String> warnings = new ArrayList<String>();
                boolean overwrite = true;
                //获取当前类的所在工程路径,必须要在项目根目录
                String path = "generatorConfig.xml";
                //指定逆向工程配置文件
                File configFile = new File(path);
                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);
            }
        
        
        }
      • 测试类,自动生成mapper.java、mapper.xml、pojo.java
         public static void main(String[] args) {
        
                 GeneratorSqlMapUtils generatorSqlMapUtils = new GeneratorSqlMapUtils();
        
                try {
                    generatorSqlMapUtils.generator();
                } catch (Exception e) {
                    e.printStackTrace();
                }
        
                
        
         }
        
            
      • 测试类,执行sql语句(全部查询)
        public class TestUtil {
        
            private static ApplicationContext applicationContext;
        
            public static void main(String[] args) {
        
        
                applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
        
                UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");
                JSONArray sendJson = JSONArray.fromObject(userMapper.selectByExample(null));
                System.out.println(sendJson + "");
        
            }
        
        }
      • 测试类,执行sql语句(指定条件查询)
        public class TestUtil {
        
            private static ApplicationContext applicationContext;
        
            public static void main(String[] args) {
        
        
                applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
        
                UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");
                //
                UserExample userExample = new UserExample();
                //
                UserExample.Criteria criteria = userExample.createCriteria();
                //
                criteria.andUsernameEqualTo("aa");
                JSONArray sendJson = JSONArray.fromObject(userMapper.selectByExample(userExample));
                System.out.println(sendJson + "");
        
            }
        }  
      • 测试类,执行sql语句(更新)
        public class TestUtil {
        
            private static ApplicationContext applicationContext;
        
            public static void main(String[] args) {
        
        
                applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
        
                UserMapper userMapper = (UserMapper) applicationContext.getBean("userMapper");
                User user = new User();
                //对所有字段进行更新
                userMapper.updateByPrimaryKey(user);
                //如果传入字段不为空才更新
                userMapper.updateByPrimaryKeySelective(user);
        
            }
        
        }
  • 相关阅读:
    学习笔记:@RequestMapping
    学习笔记:serializable接口实现Java对象序列化
    学习笔记:JWT在spring中的时间
    学习笔记:JWT学习
    《OpenGL编程指南》学习进度备忘
    【练习7.4】使用直方图陆地移动距离EMD区分不同光线条件下的图片cvCalcEMD2
    【练习7.3】从直方图创建signature、计算两个直方图的EMD距离
    自动变量和开辟内存的生存期和作用域探讨
    【练习7.2】直方图归一化cvNormalizeHist、匹配cvCompareHist及各种匹配方法
    【练习7.1】cvCreateHist创建直方图、cvCalcHist计算直方图、cvQueryHistValue_1D访问直方图及右左法则
  • 原文地址:https://www.cnblogs.com/fatRabbit-/p/10547758.html
Copyright © 2011-2022 走看看