码云推荐 | 代码自动生成工具 PgBatis3AutoCode

栏目: Java · 发布时间: 7年前

内容简介:码云推荐 | 代码自动生成工具 PgBatis3AutoCode

PgBatis3AutoCode

MyBatis3的代码自动生成工具,简单实用,java,for PostgreSQL。优点:

  • 配置使用简单
  • 根据数据库脚本批量生成model、dao、dao.xml、service、service.impl以及基础的增删改查分页的业务代码模板
  • 将数据脚本中的注释完美地嵌入代码中。
  • 本项目还有 For MySQL 的版本,详见:MyBatis3AutoCode

使用方法

1、生成数据库脚本

  • 数据库脚本文件以 .sql 结尾;
  • 所有数据库脚本文件请放在同一个文件夹下,不要放在子目录中;
  • 程序自动遍历所有脚本文件,根据建表脚本生成代码,建表脚本格式:
CREATE TABLE "TB_Users"(
	"ID" integer NOT NULL,
	"UserName" character varying(50) COLLATE "default" NOT NULL,
	"UserLevel" smallint NOT NULL,
	"UserNotes" character varying(200) COLLATE "default" DEFAULT NULL::character varying,
	CONSTRAINT TB_Users_pkey PRIMARY KEY ("ID")
)
WITH (
    OIDS = FALSE
)
;

COMMENT ON TABLE "TB_Users" IS '用户表';

COMMENT ON COLUMN "TB_Users"."ID" IS '用户ID';
COMMENT ON COLUMN "TB_Users"."UserName" IS '用户姓名';
COMMENT ON COLUMN "TB_Users"."UserLevel" IS '用户级别';
COMMENT ON COLUMN "TB_Users"."UserNotes" IS '用户注释';

注意:必须有字段注释和表注释!

2、生成配置文件

配置文件格式如下:

<?xml version="1.0" encoding="UTF-8" ?>
<Config>
	<!-- 包名 -->
	<PackageName>com.bookool.demo</PackageName>
	<!-- 数据表前缀(可以为空) -->
	<TableNamePrefixion>TB_</TableNamePrefixion>
	<!-- 数据表脚本文件所在目录 -->
	<TableScriptDir ConType="dir">/root/demo/table</TableScriptDir>
	<!-- model目录 -->
	<ModelDir ConType="dir">/root/demo/demo/src/main/java/com/bookool/demo/model</ModelDir>
	<!-- dao目录 -->
	<DaoDir ConType="dir">/root/demo/demo/src/main/java/com/bookool/demo/dao</DaoDir>
	<!-- service目录 -->
	<ServiceDir ConType="dir">/root/demo/demo/src/main/java/com/bookool/demo/service</ServiceDir>
	<!-- service.impl目录 -->
	<ServiceImplDir ConType="dir">/root/demo/demo/src/main/java/com/bookool/demo/service/impl</ServiceImplDir>
</Config>

注意:目录必须存在!

3、执行

1.生成jar包;

2.使用方法1:行执行下列命令,生成所有代码:

java -jar PgBatis3AutoCode.jar config.xml

其中:PgBatis3AutoCode.jar 为生成的 jar 包, config.xml 为配置文件路径。

3.使用方法2:行执行下列命令,生成某一张表的代码:

java -jar PgBatis3AutoCode.jar config.xml TableName

其中:TableName为表名(不加前缀)。

注意

  • 表脚本必须要有字段注释和表注释。
  • 程序会生成 autocode.log 日志文件。
  • 仅支持 UTF-8 。

生成的dao下的xml文件示例:

<?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" >

<!-- 用户表 -->
<mapper namespace="cn.run2.TG.HelloWorld.dao.UsersMapper" >
	<resultMap id="BaseResultMap" type="com.bookool.demo.model.Users" >
		<!-- 用户ID -->
		<id column="ID" property="id" jdbcType="INTEGER" />
		<!-- 用户姓名 -->
		<result column="UserName" property="username" jdbcType="VARCHAR" />
		<!-- 用户级别 -->
		<result column="UserLevel" property="userlevel" jdbcType="TINYINT" />
		<!-- 用户注释 -->
		<result column="UserNotes" property="usernotes" jdbcType="VARCHAR" />
	</resultMap>

	<sql id="Base_Column_List" >
		ID, UserName, UserLevel, UserNotes
	</sql>

	<!-- 分页 -->
	<sql id="Page">
		<if test="Offset!=null and Rows!=null">
			LIMIT #{Offset,jdbcType=INTEGER}, #{Rows,jdbcType=INTEGER}
		</if>
	</sql>

	<!-- 基础模板 取得 Users 分页列表 -->
	<select id="baseselectListPage" resultMap="BaseResultMap" parameterType="java.util.Map" >
		SELECT
		<include refid="Base_Column_List" />
		FROM TB_Users
		<trim prefix="WHERE" prefixOverrides="AND|OR">
			<if test="id!=null">
				AND ID = #{id, jdbcType=INTEGER}
			</if>
			<if test="username!=null and username!=''">
				AND UserName LIKE CONCAT('%', #{username, jdbcType=VARCHAR}, '%')
			</if>
			<if test="userlevel!=null">
				AND UserLevel = #{userlevel, jdbcType=TINYINT}
			</if>
			<if test="usernotes!=null and usernotes!=''">
				AND UserNotes LIKE CONCAT('%', #{usernotes, jdbcType=VARCHAR}, '%')
			</if>
		</trim>
		<include refid="Page"></include>
	</select>

	<!-- 基础模板 取得一个 Users 对象 -->
	<select id="baseselectTopOneByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
		SELECT
		<include refid="Base_Column_List" />
		FROM TB_Users
		WHERE ID = #{id,jdbcType=INTEGER}
		LIMIT 0,1
	</select>

	<!-- 基础模板 删除 Users 中的数据 -->
	<delete id="basesdeleteByPrimaryKey" parameterType="java.lang.Integer" >
		DELETE FROM TB_Users
		WHERE ID = #{id,jdbcType=INTEGER}
	</delete>

	<!-- 基础模板 添加一条完整的 Users 记录 -->
	<insert id="baseinsert" parameterType="com.bookool.demo.model.Users" >
		INSERT INTO TB_Users (
			ID, UserName, UserLevel, UserNotes)
		VALUES (
			#{id, jdbcType=INTEGER}, #{username, jdbcType=VARCHAR}, 
			#{userlevel, jdbcType=TINYINT}, #{usernotes, jdbcType=VARCHAR})
	</insert>

	<!-- 基础模板 添加一条 Users 记录 -->
	<insert id="baseinsertSelective" parameterType="com.bookool.demo.model.Users" >
		INSERT INTO TB_Users
		<trim prefix="(" suffix=")" suffixOverrides="," >
			<if test="id!=null" >
				id,
			</if>
			<if test="username!=null" >
				username,
			</if>
			<if test="userlevel!=null" >
				userlevel,
			</if>
			<if test="usernotes!=null" >
				usernotes,
			</if>
		</trim>
		<trim prefix="VALUES (" suffix=")" suffixOverrides="," >
			<if test="id!=null" >
				#{id, jdbcType=INTEGER},
			</if>
			<if test="username!=null" >
				#{username, jdbcType=VARCHAR},
			</if>
			<if test="userlevel!=null" >
				#{userlevel, jdbcType=TINYINT},
			</if>
			<if test="usernotes!=null" >
				#{usernotes, jdbcType=VARCHAR},
			</if>
		</trim>
	</insert>

	<!-- 基础模板 更新完整的 Users 记录 -->
	<update id="baseupdate" parameterType="com.bookool.demo.model.Users" >
		UPDATE TB_Users
		<set>
			UserName = #{username,jdbcType=VARCHAR},
			UserLevel = #{userlevel,jdbcType=TINYINT},
			UserNotes = #{usernotes,jdbcType=VARCHAR},
		</set>
		WHERE
			ID = #{id,jdbcType=INTEGER}
	</update>

	<!-- 基础模板 更新 Users 记录 -->
	<update id="baseupdateSelective" parameterType="com.bookool.demo.model.Users" >
		UPDATE TB_Users
		<set>
			<if test="username!=null" >
				UserName = #{username,jdbcType=VARCHAR},
			</if>
			<if test="userlevel!=null" >
				UserLevel = #{userlevel,jdbcType=TINYINT},
			</if>
			<if test="usernotes!=null" >
				UserNotes = #{usernotes,jdbcType=VARCHAR},
			</if>
		</set>
		WHERE
			ID = #{id,jdbcType=INTEGER}
	</update>

</mapper>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Python网络编程(第3版)

Python网络编程(第3版)

[美] Brandon Rhodes、[美] John Goerzen / 诸豪文 / 人民邮电出版社 / 2016-9 / 79.00元

本书针对想要深入理解使用Python来解决网络相关问题或是构建网络应用程序的技术人员,结合实例讲解了网络协议、网络数据及错误、电子邮件、服务器架构和HTTP及Web应用程序等经典话题。具体内容包括:全面介绍Python3中最新提供的SSL支持,异步I/O循环的编写,用Flask框架在Python代码中配置URL,跨站脚本以及跨站请求伪造攻击网站的原理及保护方法,等等。一起来看看 《Python网络编程(第3版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

html转js在线工具
html转js在线工具

html转js在线工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具