在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:sql2java开源软件地址:https://gitee.com/l0km/sql2java开源软件介绍:sql2javasql2java是一个轻量级数据库(SQL)访问代码(java)生成器,是在国外一款同名开源项目(https://sourceforge.net/projects/sql2java)的基础上重写的ORM工具,以maven 插件方式运行,目前在mysql下测试通过已经应用于实际项目开发中
生成的java代码结构生成的数据记录类示例编译项目编译要求 JDK 1.7,Maven 3.5 以上版本 # 下载源码git clone https://gitee.com/l0km/sql2java.gitcd sql2java # 编译全部mvn install
快速使用说明创建配置文件如下创建一个最简的参数配置文件(mysql2java.properties),用于告诉sql2java如何生成java代码, "#"起始的行为注释 # 指定 JDBC driver,告诉sql2java如何连接数据jdbc.driver=com.mysql.jdbc.Driver# 对于 mysql 数据库,如果 useInformationSchema=false 或没指定,则无法获取表中的注释信息jdbc.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useInformationSchema=truejdbc.username=rootjdbc.password=jdbc.schema=test# 定义生成代码的包名codewriter.package=sql2java.test 生成代码执行如下maven插件,即开始从数据库中读取表结构信息并生成对应的java代码到当前文件夹下(src/main) $ mvn com.gitee.l0km:sql2java-maven-plugin:generate \ -Dsql2java.classpath=lib/mysql-connector-java-5.1.43-bin.jar \ -Dsql2java.propfile=mysql2java.properties[INFO] Scanning for projects...[INFO] [INFO] ------------------------------------------------------------------------[INFO] Building sql2java test 0.0.0-SNAPSHOT[INFO] ------------------------------------------------------------------------[INFO] [INFO] --- sql2java-maven-plugin:1.0.6-SNAPSHOT:generate (default-cli) @ sql2java-test --- database properties initialization[INFO] classpath: [file:/D:/j/sql2java.test/lib/mysql-connector-java-5.1.43-bin.jar]Connecting to root on jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useInformationSchema=true ... Connected. Database server :MySQL.Loading table list according to pattern t_% ... table t_book found table t_user foundsamePrefix = [t_]Loading columns ... t_book.id INT default value: null t_book.name VARCHAR default value: null t_book.borrower INT default value: null t_book found 3 columns t_user.id INT AUTOINCREMENT default value: null t_user.name VARCHAR default value: null t_user.birthdate DATE default value: null t_user.phone VARCHAR default value: null t_user.address VARCHAR default value: null t_user found 5 columnsDatabase::loadPrimaryKeysFound primary key (seq,name) (1,id) for table 't_book'Found primary key (seq,name) (1,id) for table 't_user'Loading imported keys ... t_book.id -> t_user.id found seq:1 foreign key name:fk_id UPDATE_RULE:NO_ACTION DELETE_RULE:RESTRICTLoading indexes ... Found interesting index phone_UNIQUE on phone for table t_userLoading procedures ...Generating template /templates/velocity/java5g/perschema/constant.java.vm .... writing to src/main\java\sql2java\test\Constant.java java\sql2java\test\Constant.java done.Generating template /templates/velocity/java5g/perschema/database.properties.vm .... writing to src/main\resources/conf\database.properties resources/conf\database.properties done.Generating template /templates/velocity/java5g/perschema/gu.sql2java.irowmetadata.vm .... writing to src/main\resources/META-INF/services\gu.sql2java.IRowMetaData resources/META-INF/services\gu.sql2java.IRowMetaData done.Generating template /templates/velocity/java5g/pertable/bean.java.vm .... writing to src/main\java\sql2java\test\BookBean.java java\sql2java\test\BookBean.java done.Generating template /templates/velocity/java5g/pertable/manager.interface.java.vm .... writing to src/main\java\sql2java\test\IBookManager.java java\sql2java\test\IBookManager.java done.Generating template /templates/velocity/java5g/pertable/metadata.java.vm .... writing to src/main\java\sql2java\test\BookMetaData.java java\sql2java\test\BookMetaData.java done.Generating template /templates/velocity/java5g/pertable/bean.java.vm .... writing to src/main\java\sql2java\test\UserBean.java java\sql2java\test\UserBean.java done.Generating template /templates/velocity/java5g/pertable/manager.interface.java.vm .... writing to src/main\java\sql2java\test\IUserManager.java java\sql2java\test\IUserManager.java done.Generating template /templates/velocity/java5g/pertable/metadata.java.vm .... writing to src/main\java\sql2java\test\UserMetaData.java java\sql2java\test\UserMetaData.java done.[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 1.248 s[INFO] Finished at: 2019-12-16T13:51:20+08:00[INFO] Final Memory: 13M/308M[INFO] ------------------------------------------------------------------------
参数说明:
完整示例参见sql2java演示项目: https://gitee.com/l0km/sqljava-test 用户可以在此演示项目的基础上修改完成自己的ORM代码项目结构 实际应用示例参见开源项目 facelog: https://gitee.com/l0km/facelog/tree/master/db2 获取所有参数说明为了控制java代码的生成方式,sql2java有几十个控制参数,默认情况下大部分可以不用修改,如果需要需要修改,就需要获取这些参数名字及说明,如下执行 maven 插件,显示所有配置说明以及插件本身的参数说明: mvn com.gitee.l0km:sql2java-maven-plugin:help 如下执行 maven 插件,则在当前文件夹下生成一份名为my.properties的默认参数配置文件,你可以在此文件的基础上修改自己的代码生成配置: $ mvn com.gitee.l0km:sql2java-maven-plugin:help -Dsql2java.output=my.properties[INFO] Scanning for projects...[INFO][INFO] ------------------------------------------------------------------------[INFO] Building sql2java test 1.0.2[INFO] ------------------------------------------------------------------------[INFO][INFO] --- sql2java-maven-plugin:1.0.2:help (default-cli) @ sql2java-test ---[INFO] OUTPUT PROPRETIES TO J:\sql2java.test\my.properties[INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 0.495 s[INFO] Finished at: 2019-11-20T15:25:27+08:00[INFO] Final Memory: 10M/308M[INFO] ------------------------------------------------------------------------ 参数说明SQL2JAVA的参数配置及说明如下
#______________________________________________## (1/8) 数据库访问配置(必填)#______________________________________________# JDBC驱动类名#jdbc.driver=org.hsqldb.jdbcDriver# 数据库访问的URL#jdbc.url=jdbc:hsqldb:hsql://localhost# 访问数据库的用户名#jdbc.username=sa# 访问数据库的密码#jdbc.password=# 访问的数据库名#jdbc.schema=null#______________________________________________## (2/8) 配置自增长键的检索方式(可选)#______________________________________________# 此部分配置用于在插入记录时获取自增长键的值# 对于JDBC 3.0以上支持PreparedStatement.getGeneratedKeys方法# (DatabaseMetaData.supportsGetGeneratedKeys()返回true)的JDBC 驱动不需要配置此部分## generatedkey.retrieve 可选值:## auto - [默认值]getGeneratedKeys方法自动获取,当使用JDBC 3.0 driver时适用.## before - 在插入(insert)记录之前获取自增长键值## after - 在插入(insert)记录之后获取自增长键值## generatedkey.statement用于定义获取自增长键值的SQL语句# If you set it to before or after you also need to configure the# autogeneratedkey.statement properties.# <TABLE> 占位符用于取代当前表名# <KEY> 占位符用于取代当前自增长键字段名##generatedkey.retrieve=auto#generatedkey.statement=#______________________________________________## (3/8) 生成代码配置(可选)#______________________________________________# 生成java代码的包名codewriter.package=gu.sql2java.demo# 生成java代码的文件夹codewriter.destdir=src/main# 生成扩展java代码的文件夹#codewriter.destdir.extension=# 生成扩展java代码的包名#codewriter.package.extension=# 定义被bean.converter.utils.java.vm 模板忽略的字段名#general.beanconverter.tonative.ignore=create_time,update_time# 生成的java bean是否支持facebook/swift 注释(annotation)#swift.annotation.bean = true # 生成的java bean是否支持swagger 注释(annotation)#swagger.annotation.bean = true # 对于有primitive 类型(Integer,Long,Double...)的字段是否生成primitive类型的setter方法 codewriter.bean.primitiveSetter = true# generate Long setter for Date type# 对于 java.util.Date 类型的字段是否生成 Long类型的setter方法codewriter.bean.dateLongSetter = true# Date 类型的JSON 序列化类型 :# Long 系统时间(毫秒)# String ISO8601 时间日期格式的字符串# 当指定了 swift或jackon注解时有效codewriter.bean.dateSerializeType = Long# 当 dateSerializeType 为 String 的日期格式,默认为IS8601 格式codewriter.bean.dateStringFormat=yyyy-MM-dd'T'HH:mm:ss.SSSZ# modified,initialized 字段的类型(不要修改)bitstate.type = int# 字节数对应的java类型:# byte[]# java.nio.ByteBuffer# default byte[] if not specialized#binary.type = byte[]#set properties file name for database database.properties.env=config_folderdatabase.properties.isdebug=falsedatabase.properties.dir=resources/confdatabase.properties=database.properties#flag for compatible with axis2#bean.compatible_axis2=true# Property file to use when initializing Velocity#codewriter.velocityprops=somefile# 默认加载模板的路径(不要修改)velocity.templates.loadingpath=/templates/velocity/includes# 为每张表(pertable)和每个方案(perschema)加载子模板的加载起始路径(不要修改)velocity.templates=/templates/velocity/############ 扩展模板 ################ 用户可以通过下面的扩展模板参数,指定自己定义的模板(.vm)文件的位置# sql2java generator会根据指定的参数执行扩展模板生成代码 # 扩展模板的加载路径#velocity.templates.loadingpath.extension=# 为每张表(pertable)和每个方案(perschema)加载扩展模板的加载起始路径 #velocity.templates.extension =# sets a prefix to prepend to all generated classes# useful if you are worried about namespace collision with reserved words# or java.lang classescodewriter.classprefix=# 是否为字段生成默认值codewriter.generate.defaultvalue=true#______________________________________________## (4/8) 表和模板过滤配置(可选)#______________________________________________## 通过表类型过滤# 用于指定需要生成代码的表类型(用逗号分隔的表类型列表)# 表类型定义为:TABLE, VIEW, SYSTEM TABLE, SYNONYMjdbc.tabletypes=TABLE, VIEW# 通过表名过滤# 使用通配%来过滤需要生成代码的表名# 你可以指定一个逗号分割的通配符过滤列表# 比如 %_name,ul_% 只对后缀为_name,或前缀为ul_的表名生成代码# 默认对schema中所有的表生成代码jdbc.tablenamepattern=%# 表名白名单/名单过滤(此特性暂未启用)# 白名单# 空格分隔的表名列表,只在此名单中的表才会被生成代码# 黑名单# 空格分隔的表名列表,在此名单中的表不会被生成代码# 白名单和黑名单只能定义一个,如果同时指定了白名单和黑名单则忽略黑名单 # 白名单过滤tables.include=# 黑名单过滤tables.exclude=# 模板文件夹名白名单/名单过滤# 白名单# 空格分隔的表名列表,只在此名单中的模板文件夹中的模板才会被生成代码# 黑名单# 空格分隔的表名列表,在此名单中的模板文件夹中的模板不会被生成代码# 白名单和黑名单只能定义一个,如果同时指定了白名单和黑名单则忽略黑名单 template.folder.exclude=template.folder.include=java5g # java5g : general bean & manager templates for java5#______________________________________________## (7/8) JDBC 类型映射(可选)#______________________________________________## jdbc DATE类型映射的java类型,可选值:# java.sql.Date# java.util.Datejdbc2java.date=java.util.Date# jdbc TIME类型映射的java类型,可选值:# java.sql.Time# java.util.Datejdbc2java.time=java.util.Date# jdbc TIMESTAMP类型映射的java类型,可选值:# java.sql.Timestamp# java.util.Datejdbc2java.timestamp=java.util.Date#______________________________________________## (8/8) 乐观锁配置(可选)#______________________________________________# optimisticlock.type 有两个可选项值:# none - 乐观锁机制未启用(default).# timestamp - 乐观锁字段包含 System.currentTimeMillis() 值.## optimisticlock.column 定义乐观锁的字段名,如果字段名不存在则乐观锁机制不会启用# 乐观锁的字段类型可以是java.lang.Long or java.lang.String.optimisticlock.type=timestampoptimisticlock.column=version_time |
请发表评论