http://download.csdn.net/download/dwangc/9895462 最近需求中,根据数据库表的信息生成PO,DAO,还有sql语句,如果手写很是重复繁琐。然后又要用到mybaties,所以给我的任务就是自动生成PO类,DAO类和sql的xml文件。 首先分析了给我的最简单的需求样例, 1. 一个实体类对应数据库表的字段。 2. 一个DAO类,包括简单的有null insert,无null insert,update,getById,分页查询find,count。 3. 一个对应DAOsql语句的xml文件。 开始google,最后决定用freemarker模板参考mybaties generator(http://www.mybatis.org/generator/)的过程,开搞。
本来想成功之后好好整理一下类之间的关系,怎么着也用些设计模式之类的,好支持扩展(意淫ing…),发现ok之后不知道有没有多大意义,算了吧。事情那么多,不管它了,继续当菜鸟。
用Properties类load()配置文件,将其存储在自定义的Config类中,方便使用。
设计一个类,将信息存储在类中并用过JavaTypeResolver类完成数据库字段类型和java类型之间的转换。
因为之前没写过freemarker类,一边写一边google,既崩溃又实在,PO和DAO模板是比较好写的,sql模板真的让我敲桌子。 ftl示例:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" > <#macro mapperEl value val>${r"#{"}${value},jdbcType=${val}}</#macro> <#macro mapperE2 value >${r"#{"}${value}}</#macro> <#macro mapperE3 value>${r"${"}${value}}</#macro> <mapper namespace="${tableInfo.mapperPackage}.${tableInfo.tableclassName}DAO" > <insert id="insert" parameterType="${tableInfo.modelPackage}.${tableInfo.tableclassName}" > insert into ${tableInfo.tableName} <trim prefix="(" suffix=")" suffixOverrides="," > <#list columns as column> <if test="${column.javaProperty} != null" > ${column.actualColumnName}, </if> </#list> </trim> <trim prefix="values (" suffix=")" suffixOverrides="," > <#list columns as column> <if test="${column.javaProperty} != null" > <@mapperEl column.javaProperty column.jdbcTypeName/>, </if> </#list> </trim>获取freemarker的configuration,传入写好的ftl文件,配置好生成地址。 将项目打成jar包,和配置文件放在一起 然后编写运行命令批处理文件run.bat。
java -jar mygenerate.jar -configfile config.properties -overwrite点击run.bat运行。 本来想放上动态图装一下的,上传多次好像都没用,那就放图片吧! 生成的DAO类
生成的PO类和sql语句
OVER
最后附上代码的下载:http://download.csdn.net/download/dwangc/9895462
哦哦,另外好像涉及到jar定位资源文件的问题,随带总结了一下各种路径的问题。另外freemarker的语法讲解网上很多。恩。