Mybatis逆工程(下)

上一篇文章主要是讲了mybatis-generator-core-1.3.2.jar的使用,这一篇我要介绍的是,修改jar包代码,实现生成自定义模板。

1.我们从这里可以下载mybatis-generator-core-1.3.2.jar项目源码  http://maven.outofmemory.cn/org.mybatis.generator/mybatis-generator-core/1.3.2/

2.在eclipse下导入存在的maven项目,File->Import

选择项目源码位置,点finish完成导入。

项目目录结构大概这样子。

3.下面我逆工程要生成的mapping和xml格式。

4.开始修改,首先说明一下各目录

最底边的tse包是我自定义的包,里面是个主类,测试生成的代码是否达到预期标准。

由于这个架包是老外写的,生成的代码风格和我们不大一一样,如果你想修改代码格式,建议你看一下菠萝大象的文章,我这里就不讲代码格式了。

http://www.blogjava.net/bolo/archive/2015/03/20/423683.html

首先,我们先修改逆工程要生成的接口文件mapping的代码,默认情况下有增删改查,我们讲其中一个改方法update吧

比如 我要让生成的mapping中有这样的一个方法  void update(Map<String, Object> dataMap);

就修改org.mybatis.generator.codegen.mybatis3.javamapper.elements包下的UpdateByPrimaryKeyWithoutBLOBsMethodGenerator类,如下:

/*
 *  Copyright 2009 The Apache Software Foundation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.mybatis.generator.codegen.mybatis3.javamapper.elements;

import java.util.Set;
import java.util.TreeSet;

import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
import org.mybatis.generator.api.dom.java.Interface;
import org.mybatis.generator.api.dom.java.JavaVisibility;
import org.mybatis.generator.api.dom.java.Method;
import org.mybatis.generator.api.dom.java.Parameter;

/**
 *
 * @author Jeff Butler
 *
 */
public class UpdateByPrimaryKeyWithoutBLOBsMethodGenerator extends
        AbstractJavaMapperMethodGenerator {

    public UpdateByPrimaryKeyWithoutBLOBsMethodGenerator() {
        super();
    }

    @Override
    public void addInterfaceElements(Interface interfaze) {
        Set<FullyQualifiedJavaType> importedTypes = new TreeSet<FullyQualifiedJavaType>();
        FullyQualifiedJavaType parameterType = new FullyQualifiedJavaType(
                introspectedTable.getBaseRecordType());
        importedTypes.add(parameterType);
        //新增一个方法
        Method method = new Method();
        //添加方法修饰符PUBLIC
        method.setVisibility(JavaVisibility.PUBLIC);
        //设置返回值,这里我用的是自定义的void,无返回值方法 getVoidInstance()
        //FullyQualifiedJavaType类中可以自定义返回值方法,大家可以自己进去添加
        //不想那么麻烦的话,可以   new FullyQualifiedJavaType("void") , 构造函数写上返回类型就行了
        method.setReturnType(FullyQualifiedJavaType.getVoidInstance());
        //设置方法名,同样可以自己进去看
        method.setName(introspectedTable.getUpdateByPrimaryKeyStatementId());

        //method.addParameter(new Parameter(parameterType, "record")); //$NON-NLS-1$
        FullyQualifiedJavaType mapType=FullyQualifiedJavaType.getMyMapInstance();
        //方法的参数,这里是Map类型的dateMap参数
        Parameter parameter = new Parameter(mapType, "dataMap");
        method.addParameter(parameter);

        context.getCommentGenerator().addGeneralMethodComment(method,
                introspectedTable);

        addMapperAnnotations(interfaze, method);

        if (context.getPlugins()
                .clientUpdateByPrimaryKeyWithoutBLOBsMethodGenerated(method,
                        interfaze, introspectedTable)) {
            interfaze.addImportedTypes(importedTypes);
            interfaze.addMethod(method);
        }
    }

    public void addMapperAnnotations(Interface interfaze, Method method) {
        return;
    }
}

大家可以根据注释来修改。

接下来修改mapping对应的xml中的代码,同样的,这里我只介绍修改update方法,相信看完你就能自己修改其它方法。

就修改org.mybatis.generator.codegen.mybatis3.xmlmapper.elements包下的UpdateByPrimaryKeyWithoutBLOBsElementGenerator类,如下:

/*
 *  Copyright 2009 The Apache Software Foundation
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 */
package org.mybatis.generator.codegen.mybatis3.xmlmapper.elements;

import java.util.Iterator;
import java.util.List;

import org.mybatis.generator.api.IntrospectedColumn;
import org.mybatis.generator.api.dom.OutputUtilities;
import org.mybatis.generator.api.dom.xml.Attribute;
import org.mybatis.generator.api.dom.xml.TextElement;
import org.mybatis.generator.api.dom.xml.XmlElement;
import org.mybatis.generator.codegen.mybatis3.MyBatis3FormattingUtilities;

/**
 *
 * @author Jeff Butler
 *
 */
public class UpdateByPrimaryKeyWithoutBLOBsElementGenerator extends
        AbstractXmlElementGenerator {

    //private boolean isSimple;

    public UpdateByPrimaryKeyWithoutBLOBsElementGenerator(boolean isSimple) {
        super();
        //this.isSimple = isSimple;
    }

    @Override
    public void addElements(XmlElement parentElement) {
        //update标签(方法最外层)
        XmlElement answer = new XmlElement("update"); //$NON-NLS-1$
        //update标签的属性
        answer.addAttribute(new Attribute(
                "id", introspectedTable.getUpdateByPrimaryKeyStatementId())); //$NON-NLS-1$
        answer.addAttribute(new Attribute("parameterType", //$NON-NLS-1$
                "Map"));
        //把标签加进去
        context.getCommentGenerator().addComment(answer);

        StringBuilder sb = new StringBuilder();
        sb.append("update "); //$NON-NLS-1$
        sb.append(introspectedTable.getFullyQualifiedTableNameAtRuntime());

        //标签内容,即文本元素
        answer.addElement(new TextElement(sb.toString()));
        sb.setLength(0);

        //set标签
        XmlElement setElement = new XmlElement("set"); //$NON-NLS-1$
        //获取数据库表中的所有字段
        List <IntrospectedColumn> cols=introspectedTable.getAllColumns();
        //迭代
        java.util.Iterator<IntrospectedColumn> iter =cols.iterator();
        while (iter.hasNext()) {//迭代
            //迭代到某一字段
            IntrospectedColumn introspectedColumn = iter.next();
            //if标签
            XmlElement ifElement = new XmlElement("if"); //$NON-NLS-1$
            //字段名
            String str=MyBatis3FormattingUtilities
            .getEscapedColumnName(introspectedColumn);
            //if标签添加属性test,值为           字段 !=null and 字段!=‘‘
            ifElement.addAttribute(new Attribute("test",str+" != null and "+str+"!=‘‘ "));

            //if标签内容 ,文本元素,给字段赋予即将修改的值
            sb.append(MyBatis3FormattingUtilities
                    .getEscapedColumnName(introspectedColumn));
            sb.append(" = "); //$NON-NLS-1$
            sb.append(MyBatis3FormattingUtilities
                    .getParameterClause(introspectedColumn));
            if (iter.hasNext()) {
                sb.append(‘,‘);
            }

            //if标签添加上面的文本元素
            ifElement.addElement(new TextElement(sb.toString()));
            if (iter.hasNext()) {
                sb.setLength(0);
                OutputUtilities.xmlIndent(sb, 1);
            }
            setElement.addElement(ifElement);
        }

        //where元素(修改的字段前提条件)
        XmlElement whereElement =new XmlElement("where");

        for (IntrospectedColumn introspectedColumn : introspectedTable
                .getPrimaryKeyColumns()) {//遍历表中字段进行判断
            sb.setLength(0);
            sb.append(MyBatis3FormattingUtilities
                    .getEscapedColumnName(introspectedColumn));
            sb.append(" = "); //$NON-NLS-1$
            sb.append(MyBatis3FormattingUtilities
                    .getParameterClause(introspectedColumn));
            whereElement.addElement(new TextElement(sb.toString()));
        }

        //方法中最外层xml元素 update元素添加set元素和where元素
        answer.addElement(setElement);
        answer.addElement(whereElement);

        if (context.getPlugins()
                .sqlMapUpdateByPrimaryKeyWithoutBLOBsElementGenerated(answer,
                        introspectedTable)) {
            parentElement.addElement(answer);
        }
    }
}

其它方法大家可以根据这个update方法改。

如果要添加新方法的话参考下面这个帖子

http://m.blog.csdn.net/article/details?id=35985705

下面我来验证修改成果

generatorConfig.xml //先配置xml    放在src/main/resources/   目录下

<?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>
    <!-- 引入配置文件 -->  

    <!-- 指定数据连接驱动jar地址 -->
    <classPathEntry location="E:\eclipse_workspace\testMybatis\mysql-connector-java-5.1.13-bin.jar" />  

    <!-- 一个数据库一个context -->
    <context id="infoGuardian" targetRuntime="MyBatis3">
        <!-- 注释 -->
        <commentGenerator >
            <property name="suppressAllComments" value="true"/><!-- 是否取消注释 -->
            <property name="suppressDate" value="true" /> <!-- 是否生成注释代时间戳-->
        </commentGenerator>  

        <!-- jdbc连接 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
            connectionURL="jdbc:mysql://localhost:3306/login?characterEncoding=UTF-8" userId="root"
            password="root" />  

        <!-- 类型转换 -->
        <javaTypeResolver>
            <!-- 是否使用bigDecimal, false可自动转化以下类型(Long, Integer, Short, etc.) -->
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>  

        <!-- 生成实体类地址 -->
        <javaModelGenerator targetPackage="pojo"
            targetProject="mybatis3" >
            <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->
            <property name="enableSubPackages" value="true"/>
            <!-- 是否针对string类型的字段在set的时候进行trim调用 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>  

        <!-- 生成mapxml文件 -->
        <sqlMapGenerator targetPackage="mapper"
            targetProject="mybatis3" >
            <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>  

        <!-- 生成mapxml对应client,也就是接口dao -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="mapper"
            targetProject="mybatis3">
            <!-- 是否在当前路径下新加一层schema,eg:fase路径cn.ffcs.test.domain", true:cn.ffcs.test.domain".[schemaName] -->
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>  

        <!-- 配置表信息,这里没生成一张表,这里需要改变一次对应表名 -->
         <table tableName="login"
            domainObjectName="Login" enableCountByExample="false"
            enableDeleteByExample="false" enableSelectByExample="false"
            enableUpdateByExample="false">
          </table> 

    </context>
</generatorConfiguration> 

StartUp.java//验证的主程序

package tse;

import static org.junit.Assert.assertEquals;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import org.mybatis.generator.api.MyBatisGenerator;
import org.mybatis.generator.config.Configuration;
import org.mybatis.generator.config.xml.ConfigurationParser;
import org.mybatis.generator.internal.DefaultShellCallback;

public class StartUp {

    public static void main(String []args)throws Exception{
        List<String> warnings = new ArrayList<String>();
        File configFile=new File(StartUp.class.getResource("/generatorConfig.xml").toURI());
        ConfigurationParser cp = new ConfigurationParser(warnings);

        Configuration config = cp.parseConfiguration(configFile);

        DefaultShellCallback shellCallback = new DefaultShellCallback(true);

            MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config, shellCallback, warnings);
            myBatisGenerator.generate(null);
            System.out.println(warnings);
    }
}

好了,运行StartUp.java

就根据generatorConfig.xml的配置在目标目录生成对应文件。

OK,和我预期结果一样。

5.上面修改完了,我们开始打包。

由于是个maven项目,我用的是maven3.3.9,大家也可以用eclipse内置的maven,反正我是不喜欢。

下面是我maven项目的pom.xml文件代码

<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2009-2011 The MyBatis Team

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<!--
  version: $Id: pom.xml 4114 2011-11-27 19:03:32Z simone.tripodi $
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator</artifactId>
    <version>1.3.2</version>
  </parent>

  <artifactId>mybatis-generator-core</artifactId>
  <packaging>jar</packaging>
  <name>MyBatis Generator Core</name>

  <build>
    <!-- this build creates and installs an instrumented JAR file
         for use by the systests projects - so we can gather
         consolidated coverage information
    -->
    <plugins>
     <!--  <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <executions>
            <execution>
              <phase>prepare-package</phase>
              <goals>
                <goal>site</goal>
              </goals>
            </execution>
          </executions>
      </plugin> -->
      <!-- <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <executions>
            <execution>
              <phase>prepare-package</phase>
              <goals>
                <goal>jar-no-fork</goal>
              </goals>
            </execution>
          </executions>
      </plugin> -->
      <!-- <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
          <version>2.2.1</version>
          <executions>
            <execution>
              <id>attach-sources</id>
              <goals>
                <goal>jar</goal>
              </goals>
              <configuration>
              <includes>
              <include>**/org/**</include>
              </includes>
              </configuration>
            </execution>
          </executions>
      </plugin> -->
     <!-- <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <executions>
            <execution>
              <phase>prepare-package</phase>
              <goals>
                <goal>jar</goal>
              </goals>
            </execution>
          </executions>
      </plugin> -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>cobertura-instrument</id>
            <phase>pre-integration-test</phase>
            <goals>
              <goal>instrument</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <!-- <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <mainClass>org.mybatis.generator.api.ShellRunner</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>cobertura-jar</id>
            <phase>integration-test</phase>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>cobertura</classifier>
              <classesDirectory>${basedir}/target/generated-classes/cobertura</classesDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin> -->

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
        <executions>
          <execution>
            <id>attach-jar</id>
            <phase>integration-test</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <archive>
            <manifest>
            <addClasspath>true</addClasspath>
            <classpathPrefix></classpathPrefix>
              <mainClass>org.mybatis.generator.api.ShellRunner</mainClass>
            </manifest>
          </archive>
          <includes>
              <include>**/org/**</include>
              </includes>
        </configuration>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <executions>
          <execution>
            <id>cobertura-install</id>
            <phase>integration-test</phase>
            <goals>
              <goal>install</goal>
            </goals>
            <configuration>
              <classifier>cobertura</classifier>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <!-- <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>${basedir}/src/main/assembly/src.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>bundle</id>
            <goals>
              <goal>single</goal>
            </goals>
            <phase>package</phase>
          </execution>
        </executions>
      </plugin> -->

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <appendAssemblyId>false</appendAssemblyId>
          <descriptors>
          <descriptor>${basedir}/src/main/assembly/src.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>com.googlecode.maven-gcu-plugin</groupId>
        <artifactId>maven-gcu-plugin</artifactId>
        <executions>
          <execution>
            <phase>deploy</phase>
            <goals>
              <goal>upload</goal>
            </goals>
            <configuration>
              <uploads>
                <upload>
                  <file>${project.build.directory}/${project.artifactId}-${project.version}-bundle.zip</file>
                  <summary>MyBatis Generator ${project.version}</summary>
                  <labels>
                    <label>Featured</label>
                    <label>Type-Archive</label>
                    <label>Product-Generator</label>
                    <label>Version-${project.version}</label>
                  </labels>
                </upload>
              </uploads>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
          <arguments>-Prelease,gupload</arguments>
        </configuration>
      </plugin>
    </plugins>
  </build>

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>jdepend-maven-plugin</artifactId>
        <version>2.0-beta-2</version>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>cobertura-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </reporting>

  <dependencies>
   <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.ant</groupId>
      <artifactId>ant</artifactId>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.hsqldb</groupId>
      <artifactId>hsqldb</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
        </dependency>
  </dependencies>

  <scm>
    <url>https://mybatis.googlecode.com/svn/sub-projects/generator/tags/mybatis-generator-1.3.2/mybatis-generator-core</url>
    <connection>scm:svn:https://mybatis.googlecode.com/svn/sub-projects/generator/tags/mybatis-generator-1.3.2/mybatis-generator-core</connection>
    <developerConnection>scm:svn:https://mybatis.googlecode.com/svn/sub-projects/generator/tags/mybatis-generator-1.3.2/mybatis-generator-core</developerConnection>
  </scm>
</project>

然后是修改src/main/assembly/src.xml代码

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">
  <id>bundle</id>
  <formats>
    <format>zip</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>src/main/resources</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>generatorConfig.xml</include>
      </includes>
      <excludes>
      <exclude>log4j.properties</exclude>
      <exclude>src.xml</exclude>
      </excludes>
    </fileSet>

    <fileSet>
      <directory>src/main/scripts</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>run.bat</include>
      </includes>
    </fileSet>

    <fileSet>
      <directory>${project.build.directory}</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>${project.artifactId}-${project.version}.jar</include>
      </includes>
    </fileSet>
    <fileSet>
      <directory>${project.build.directory}</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>${project.artifactId}-${project.version}-sources.jar</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>

接下来,在src/main/   下面新建scripts文件夹,在scripts文件夹新建txt文本文档,输入以下代码

java -jar mybatis-generator-1.3.2.jar -configfile generatorConfig.xml –overwrite
pause

改文件名为run.bat

至此,打包配置完毕。

大家可以在项目下右键Run as->maven build   在goal里输入package。或者命令行cmd中 进入项目的目录,运行mvn package,这里第一次运行会等待很久,因为maven会下载依赖的jar包,请耐心等待。

打包完毕,就会在项目根目录下的target目录生成如下结构

从上图中我们可以看到mybatis-generator-core-1.3.2.jar包已经生成。接下来我们可以用它加上generatorConfig.xml来生成自己想要的代码。

如果修改代码过程中有什么不懂的,请多看源代码。

OK,晒下成果图

 

本文就讲到这里!

时间: 2024-08-30 17:38:47

Mybatis逆工程(下)的相关文章

Mybatis逆工程(上)

最近在学Mybatis,类似Hibernate,Mybatis也有逆工程可以直接生成代码(mapping,xml,pojo),方便快速开发.用的是mybatis-generator-core-1.3.2.jar这个架包.这里我用的是mysql数据库. 1.下载mybatis-generator-core-1.3.2.jar和mysql-connector-java-5.1.13-bin.jar,大家可以在这里下载http://maven.outofmemory.cn/org.mybatis.ge

Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用

Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单单实现这两个需求的话,那么基本足够,但是很多时候一个网站除了仅仅能够访问数据库是不够的,它还需要对性能以及更简化的步骤有着更多的要求,这一篇重点就是帮助我们如何去实现数据连接池管理与更简化便利的开发步骤. 如果你觉得自己能写出更高效率的连接池,那你可以不需要这篇文章了,我更建议你可以去开源组织毛遂自

解决javaassist 出现的类没找到异常ClassNotFoundException,获取工程下任意class对象

项目中要对工程下任意class文件进行解析,但是使用javaassist中经常出现类没找到异常.当然最主要的还是ClassPool()没找到这东西,而搜索范围是整个项目的class, 所以就做了一个处理,通过,项目下的classpath这个文件,获取所有jar路径在,再通过文件递归搜索获取所有java编译后的class文件路径,将所有路径都添加到对象池中.当然这一步是很费时的,所以最好只初始化一次. /*** * * 静态存储 */ private static ClassPool pool;

SpringMvc+Mybatis(maven工程)整理出来了,纯自己手工整理!!!!!!!!!!!!有图有真相!!!!!!!!!!!!!!!!求高分!!!!

原文:SpringMvc+Mybatis(maven工程)整理出来了,纯自己手工整理!!!!!!!!!!!!有图有真相!!!!!!!!!!!!!!!!求高分!!!! 源代码下载地址:http://www.zuidaima.com/share/1550463690738688.htm 部署直接可用. 开发工具:Eclipse jdk:1.6 部署工具:tomcat7 db driver:mysql,其中可以自己随意改了,这里不多说了.... 数据库就不给了,没什么用处,主要分享框架.  

OpenGL学习笔记:Console工程下如何不显示控制台黑窗口只显示Windows窗口

刚学习OpenGL,绘制图形的时候,如果不进行设置,运行的时候会先出现黑窗口再出现Windows窗口. 其实要去除控制台窗口非常简单,只需要修改工程设置,把子系统改成Windows,程序的入口点改成mainCRTStartup. 下面我先把几中解决办法列举出来,再解释下我的理解. 方法一:在程序中加入一句#pragma comment(linker, “/subsystem:\”windows\” /entry:\”mainCRTStartup\””),建议加在include的后面. 方法二:修

ffmpeg2.2在ubuntu下使用NDK编译——并在android工程下测试使用

作者:wainiwann 出处:http://www.cnblogs.com/wainiwann/ 本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利. 摘要:本文主要介绍将FFmpeg音视频编解码库移植到Android平台上的编译和基本测试过程. 环境准备: Ubuntu12.04 TLS android-ndk-r9d-linux-x86_64.tar.bz2 ffmpeg2.2 --------------------

vs工程下的各个文件夹的意义

上图是一个工程下的工程目录,当建立一个MFC工程时,vs2010会在指定的目录下创建一个工程文件夹,该文件夹下有如上图所示一系列的文件夹 文件夹含义: Debug: 就是win32-debug模式下生成exe所包含的文件夹 Release:win32-release模式下生成的exe所包含的文件夹 x64:  x64模式下生成的exe目录  其中有Debug和Release目录,相对应的是 X64-Debug 和X64-Release exe所包含的目录 t: 工程目录(系统工作目录) 原文地址

vue工程下播放视频

vue工程下播放视频 安装插件 npm install --save video.js npm install --save videojs-contrib-hls 导入css import 'video.js/dist/video-js.css' 导入js import videojs from 'video.js' import 'videojs-contrib-hls 指定播放容器 <video id="my-video" class="video-js vjs-

基于dubbo的SSM(Spring,SpringMvc,Mybatis)整合的Maven多工程(下)

上篇是SSM的maven单工程(http://www.cnblogs.com/yuanjava/p/6748956.html).中篇是 SSM的maven多工程(http://www.cnblogs.com/yuanjava/p/6886099.html). 此下篇是把 中篇的 service 单独拿出来当做一个服务当做服务提供者,供contoller 的 消费端调用.然后把  service端的服务用dubbo把服务注册到注册中心(zookeeper),消费端订阅取到注册中心的服务地址,根据地