init
This commit is contained in:
12
visual/code-gen/src/main/resources/bootstrap-dev.yml
Normal file
12
visual/code-gen/src/main/resources/bootstrap-dev.yml
Normal file
@@ -0,0 +1,12 @@
|
||||
# Spring
|
||||
spring:
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 10.7.127.189:38848
|
||||
namespace: clay
|
||||
dubbo:
|
||||
registry:
|
||||
parameters:
|
||||
namespace: dubbo-clay
|
||||
7
visual/code-gen/src/main/resources/bootstrap-pro.yml
Normal file
7
visual/code-gen/src/main/resources/bootstrap-pro.yml
Normal file
@@ -0,0 +1,7 @@
|
||||
# Spring
|
||||
spring:
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: nacos.fateverse.svc.cluster.local:8848
|
||||
42
visual/code-gen/src/main/resources/bootstrap.yml
Normal file
42
visual/code-gen/src/main/resources/bootstrap.yml
Normal file
@@ -0,0 +1,42 @@
|
||||
# Tomcat
|
||||
server:
|
||||
port: 15078
|
||||
|
||||
# Spring
|
||||
spring:
|
||||
application:
|
||||
# 应用名称
|
||||
name: code-gen
|
||||
profiles:
|
||||
# 环境配置
|
||||
active: dev
|
||||
cloud:
|
||||
nacos:
|
||||
discovery:
|
||||
# 服务注册地址
|
||||
server-addr: 192.168.101.108:8848
|
||||
username: nacos
|
||||
password: nacos
|
||||
namespace: ${spring.profiles.active}
|
||||
config:
|
||||
# 配置中心地址
|
||||
server-addr: ${spring.cloud.nacos.discovery.server-addr}
|
||||
file-extension: yaml
|
||||
namespace: ${spring.profiles.active}
|
||||
shared-configs:
|
||||
- data-id: application-${spring.profiles.active}.yaml
|
||||
refresh: true
|
||||
|
||||
|
||||
dubbo:
|
||||
application:
|
||||
name: dubbo-${spring.application.name}
|
||||
protocol:
|
||||
name: dubbo
|
||||
port: -1
|
||||
registry:
|
||||
address: nacos://${spring.cloud.nacos.discovery.server-addr}
|
||||
username: ${spring.cloud.nacos.discovery.username}
|
||||
password: ${spring.cloud.nacos.discovery.password}
|
||||
parameters:
|
||||
namespace: dubbo-${spring.profiles.active}
|
||||
103
visual/code-gen/src/main/resources/mapper/DataSourceMapper.xml
Normal file
103
visual/code-gen/src/main/resources/mapper/DataSourceMapper.xml
Normal file
@@ -0,0 +1,103 @@
|
||||
<?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.fateverse.code.mapper.DataSourceMapper">
|
||||
|
||||
<sql id="DataSource">
|
||||
select ds_id,
|
||||
ds_name,
|
||||
username,
|
||||
password,
|
||||
host,
|
||||
port,
|
||||
type,
|
||||
args,
|
||||
params,
|
||||
db_name,
|
||||
jdbc_url,
|
||||
conf_type,
|
||||
remark,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time
|
||||
from gen_data_source
|
||||
</sql>
|
||||
|
||||
<select id="selectList" resultType="cn.fateverse.code.entity.CodeDataSource">
|
||||
<include refid="DataSource"/>
|
||||
<where>
|
||||
<if test="dsName != null and dsName != ''">and ds_name like concat('%',#{dsName},'%')</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
|
||||
<select id="selectById" resultType="cn.fateverse.code.entity.CodeDataSource">
|
||||
<include refid="DataSource"/>
|
||||
where ds_id = #{dsId}
|
||||
</select>
|
||||
|
||||
|
||||
<insert id="insert">
|
||||
insert into gen_data_source
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="dsName != null and dsName != ''">ds_name,</if>
|
||||
<if test="username != null and username != ''">username,</if>
|
||||
<if test="password != null and password != ''">`password`,</if>
|
||||
<if test="host != null and host != ''">`host`,</if>
|
||||
<if test="port != null and port != ''">`port`,</if>
|
||||
<if test="type != null ">type,</if>
|
||||
<if test="args != null and args != ''">args,</if>
|
||||
<if test="params != null and params != ''">params,</if>
|
||||
<if test="dbName != null and dbName != ''">db_name,</if>
|
||||
<if test="jdbcUrl != null and jdbcUrl != ''">jdbc_url,</if>
|
||||
<if test="confType != null and confType != ''">conf_type,</if>
|
||||
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="dsName != null and dsName != ''">#{dsName},</if>
|
||||
<if test="username != null and username != ''">#{username},</if>
|
||||
<if test="password != null and password != ''">#{password},</if>
|
||||
<if test="host != null and host != ''">#{host},</if>
|
||||
<if test="port != null and port != ''">#{port},</if>
|
||||
<if test="type != null ">#{type},</if>
|
||||
<if test="args != null and args != ''">#{args},</if>
|
||||
<if test="params != null and params != ''">#{params},</if>
|
||||
<if test="dbName != null and dbName != ''">#{dbName},</if>
|
||||
<if test="jdbcUrl != null and jdbcUrl != ''">#{jdbcUrl},</if>
|
||||
<if test="confType != null and confType != ''">#{confType},</if>
|
||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="update">
|
||||
update gen_data_source
|
||||
<set>
|
||||
<if test="dsName != null and dsName != ''">ds_name = #{dsName},</if>
|
||||
<if test="username != null and username != ''">username = #{username},</if>
|
||||
<if test="password != null and password != ''">`password` = #{password},</if>
|
||||
<if test="host != null and host != ''">`host` = #{host},</if>
|
||||
<if test="port != null and port != ''">`port`=#{port},</if>
|
||||
<if test="type != null ">type=#{type},</if>
|
||||
<if test="args != null and args != ''">args=#{args},</if>
|
||||
<if test="params != null and params != ''">params=#{params},</if>
|
||||
<if test="dbName != null and dbName != ''">db_name=#{dbName},</if>
|
||||
<if test="jdbcUrl != null and jdbcUrl != ''">jdbc_url = #{jdbcUrl},</if>
|
||||
<if test="confType != null and confType != ''">conf_type= #{confType},</if>
|
||||
<if test="updateBy != null and updateBy != ''">update_by=#{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
</set>
|
||||
where ds_id = #{dsId}
|
||||
</update>
|
||||
|
||||
<delete id="delete">
|
||||
delete
|
||||
from gen_data_source
|
||||
where ds_id = #{id}
|
||||
</delete>
|
||||
|
||||
|
||||
</mapper>
|
||||
83
visual/code-gen/src/main/resources/mapper/RegularMapper.xml
Normal file
83
visual/code-gen/src/main/resources/mapper/RegularMapper.xml
Normal file
@@ -0,0 +1,83 @@
|
||||
<?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.fateverse.code.mapper.RegularMapper">
|
||||
|
||||
<resultMap id="RegulaResult" type="cn.fateverse.code.entity.Regular">
|
||||
<id column="id" property="id"/>
|
||||
<result column="name" property="name"/>
|
||||
<result column="regular" property="regular"/>
|
||||
<result column="validation" property="validation"/>
|
||||
<result column="enable" property="enable"/>
|
||||
<result column="create_by" property="createBy"/>
|
||||
<result column="create_time" property="createTime"/>
|
||||
<result column="update_by" property="updateBy"/>
|
||||
<result column="update_time" property="updateTime"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectRegulaVo">
|
||||
select id, name, regular, validation, enable, create_by, create_time, update_by, update_time from gen_regular
|
||||
</sql>
|
||||
|
||||
<select id="selectList" resultMap="RegulaResult">
|
||||
<include refid="selectRegulaVo"/>
|
||||
<where>
|
||||
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
|
||||
<if test="regular != null and regular != ''"> and regular like concat('%', #{regular}, '%')</if>
|
||||
<if test="enable != null "> and enable = #{enable}</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectById" resultMap="RegulaResult">
|
||||
<include refid="selectRegulaVo"/>
|
||||
where id = #{id}
|
||||
</select>
|
||||
|
||||
<insert id="insert" >
|
||||
insert into gen_regular
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null">name,</if>
|
||||
<if test="regular != null">regular,</if>
|
||||
<if test="validation != null">validation,</if>
|
||||
<if test="enable != null">enable,</if>
|
||||
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||
<if test="createTime != null ">create_time,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="name != null">#{name},</if>
|
||||
<if test="regular != null">#{regular},</if>
|
||||
<if test="validation != null">#{validation},</if>
|
||||
<if test="enable != null">#{enable},</if>
|
||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||
<if test="createTime != null ">#{createTime},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="update">
|
||||
update gen_regular
|
||||
<set>
|
||||
<if test="name != null">name = #{name},</if>
|
||||
<if test="regular != null">regular = #{regular},</if>
|
||||
<if test="validation != null">validation = #{validation},</if>
|
||||
<if test="enable != null">enable = #{enable},</if>
|
||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null ">update_time = #{updateTime},</if>
|
||||
</set>
|
||||
where id = #{id}
|
||||
</update>
|
||||
|
||||
<delete id="deleteById">
|
||||
delete from gen_regular
|
||||
where id = #{id}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteBatchByIdList" parameterType="Long">
|
||||
delete from gen_regular
|
||||
where id in
|
||||
<foreach collection="list" open="(" close=")" separator="," item="id">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
317
visual/code-gen/src/main/resources/mapper/TableColumnMapper.xml
Normal file
317
visual/code-gen/src/main/resources/mapper/TableColumnMapper.xml
Normal file
@@ -0,0 +1,317 @@
|
||||
<?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.fateverse.code.mapper.TableColumnMapper">
|
||||
|
||||
<select id="selectListByTableId" resultType="cn.fateverse.code.entity.TableColumn">
|
||||
select column_id,
|
||||
table_id,
|
||||
column_name,
|
||||
column_comment,
|
||||
column_type,
|
||||
column_length,
|
||||
column_scale,
|
||||
java_type,
|
||||
java_field,
|
||||
is_pk,
|
||||
is_increment,
|
||||
is_required,
|
||||
is_insert,
|
||||
is_edit,
|
||||
is_list,
|
||||
is_query,
|
||||
is_regular,
|
||||
query_type,
|
||||
html_type,
|
||||
dict_type,
|
||||
sort,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time from gen_table_column where table_id = #{tableId}
|
||||
</select>
|
||||
|
||||
<insert id="insert">
|
||||
insert into gen_table_column
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="tableId != null and tableId != ''">table_id,</if>
|
||||
<if test="columnName != null and columnName != ''">column_name,</if>
|
||||
<if test="columnComment != null and columnComment != ''">column_comment,</if>
|
||||
<if test="columnType != null and columnType != ''">column_type,</if>
|
||||
<if test="columnLength != null and columnLength != 0">column_length,</if>
|
||||
<if test="columnScale != null and columnScale != 0">column_scale,</if>
|
||||
<if test="javaType != null and javaType != ''">java_type,</if>
|
||||
<if test="javaField != null and javaField != ''">java_field,</if>
|
||||
<if test="isPk != null and isPk != ''">is_pk,</if>
|
||||
<if test="isIncrement != null and isIncrement != ''">is_increment,</if>
|
||||
<if test="isRequired != null and isRequired != ''">is_required,</if>
|
||||
<if test="isRegular != null and isRegular != ''">is_regular,</if>
|
||||
<if test="isInsert != null and isInsert != ''">is_insert,</if>
|
||||
<if test="isEdit != null and isEdit != ''">is_edit,</if>
|
||||
<if test="isList != null and isList != ''">is_list,</if>
|
||||
<if test="isQuery != null and isQuery != ''">is_query,</if>
|
||||
<if test="queryType != null and queryType != ''">query_type,</if>
|
||||
<if test="htmlType != null and htmlType != ''">html_type,</if>
|
||||
<if test="dictType != null">dict_type,</if>
|
||||
<if test="sort != null">sort,</if>
|
||||
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="tableId != null and tableId != ''">#{tableId},</if>
|
||||
<if test="columnName != null and columnName != ''">#{columnName},</if>
|
||||
<if test="columnComment != null and columnComment != ''">#{columnComment},</if>
|
||||
<if test="columnType != null and columnType != ''">#{columnType},</if>
|
||||
<if test="columnLength != null and columnLength != 0">#{columnLength},</if>
|
||||
<if test="columnScale != null and columnScale != 0">#{columnScale},</if>
|
||||
<if test="javaType != null and javaType != ''">#{javaType},</if>
|
||||
<if test="javaField != null and javaField != ''">#{javaField},</if>
|
||||
<if test="isPk != null and isPk != ''">#{isPk},</if>
|
||||
<if test="isIncrement != null and isIncrement != ''">#{isIncrement},</if>
|
||||
<if test="isRequired != null and isRequired != ''">#{isRequired},</if>
|
||||
<if test="isRegular != null and isRegular != ''">#{isRegular},</if>
|
||||
<if test="isInsert != null and isInsert != ''">#{isInsert},</if>
|
||||
<if test="isEdit != null and isEdit != ''">#{isEdit},</if>
|
||||
<if test="isList != null and isList != ''">#{isList},</if>
|
||||
<if test="isQuery != null and isQuery != ''">#{isQuery},</if>
|
||||
<if test="queryType != null and queryType != ''">#{queryType},</if>
|
||||
<if test="htmlType != null and htmlType != ''">#{htmlType},</if>
|
||||
<if test="dictType != null">#{dictType},</if>
|
||||
<if test="sort != null">#{sort},</if>
|
||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<insert id="batchInsert">
|
||||
insert into gen_table_column (
|
||||
table_id,
|
||||
column_name,
|
||||
column_comment,
|
||||
column_type,
|
||||
column_length,
|
||||
column_scale,
|
||||
java_type,
|
||||
java_field,
|
||||
is_pk,
|
||||
is_increment,
|
||||
is_required,
|
||||
is_insert,
|
||||
is_edit,
|
||||
is_list,
|
||||
is_query,
|
||||
is_regular,
|
||||
query_type,
|
||||
html_type,
|
||||
dict_type,
|
||||
sort,
|
||||
create_by,
|
||||
create_time) values
|
||||
<foreach collection="list" separator="," item="column">
|
||||
(#{column.tableId},
|
||||
#{column.columnName},
|
||||
#{column.columnComment},
|
||||
#{column.columnType},
|
||||
#{column.columnLength},
|
||||
#{column.columnScale},
|
||||
#{column.javaType},
|
||||
#{column.javaField},
|
||||
#{column.isPk},
|
||||
#{column.isIncrement},
|
||||
#{column.isRequired},
|
||||
#{column.isInsert},
|
||||
#{column.isEdit},
|
||||
#{column.isList},
|
||||
#{column.isQuery},
|
||||
#{column.isRegular},
|
||||
#{column.queryType},
|
||||
#{column.htmlType},
|
||||
#{column.dictType},
|
||||
#{column.sort},
|
||||
#{column.createBy},
|
||||
#{column.createTime})
|
||||
</foreach>
|
||||
</insert>
|
||||
|
||||
<update id="update">
|
||||
update gen_table_column
|
||||
<set>
|
||||
<if test="tableId != null and tableId != ''">table_id = #{tableId},</if>
|
||||
<if test="columnName != null and columnName != ''">`column_name` = #{columnName},</if>
|
||||
<if test="columnComment != null and columnComment != ''">column_comment=#{columnComment},</if>
|
||||
<if test="columnType != null and columnType != ''">column_type=#{columnType},</if>
|
||||
<if test="columnLength != null and columnLength != ''">column_length=#{columnLength},</if>
|
||||
<if test="columnScale != null and columnScale != ''">column_scale=#{columnScale},</if>
|
||||
<if test="javaType != null and javaType != ''">java_type=#{javaType},</if>
|
||||
<if test="javaField != null and javaField != ''">java_field=#{javaField},</if>
|
||||
<if test="isPk != null and isPk != ''">is_pk=#{isPk},</if>
|
||||
<if test="isIncrement != null and isIncrement != ''">is_increment=#{isIncrement},</if>
|
||||
<if test="isRequired != null and isRequired != ''">is_required=#{isRequired},</if>
|
||||
<if test="isRegular != null and isRegular != ''">is_regular=#{isRegular},</if>
|
||||
<if test="isInsert != null and isInsert != ''">is_insert=#{isInsert},</if>
|
||||
<if test="isEdit != null and isEdit != ''">is_edit=#{isEdit},</if>
|
||||
<if test="isList != null and isList != ''">is_list=#{isList},</if>
|
||||
<if test="isQuery != null and isQuery != ''">is_query=#{isQuery},</if>
|
||||
<if test="queryType != null and queryType != ''">query_type=#{queryType},</if>
|
||||
<if test="htmlType != null and htmlType != ''">html_type=#{htmlType},</if>
|
||||
<if test="dictType != null">dict_type=#{dictType},</if>
|
||||
<if test="sort != null">sort=#{sort},</if>
|
||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||
</set>
|
||||
where column_id = #{columnId}
|
||||
</update>
|
||||
|
||||
<update id="batchUpdate">
|
||||
update gen_table_column
|
||||
<set>
|
||||
<trim prefix="column_comment = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.columnComment != null">
|
||||
when column_id = #{item.columnId} then #{item.columnComment}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="column_type = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.columnType != null">
|
||||
when column_id = #{item.columnId} then #{item.columnType}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="java_type = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.javaType != null">
|
||||
when column_id = #{item.columnId} then #{item.javaType}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="java_field = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.javaField != null">
|
||||
when column_id = #{item.columnId} then #{item.javaField}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="is_pk = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.isPk != null and item.isPk != ''">
|
||||
when column_id = #{item.columnId} then #{item.isPk}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="is_increment = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.isIncrement != null and item.isIncrement != ''">
|
||||
when column_id = #{item.columnId} then #{item.isIncrement}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="is_required = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.isRequired != null and item.isRequired != ''">
|
||||
when column_id = #{item.columnId} then #{item.isRequired}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="is_regular = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.isRegular != null and item.isRegular != ''">
|
||||
when column_id = #{item.columnId} then #{item.isRegular}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="is_insert = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.isInsert != null and item.isInsert != ''">
|
||||
when column_id = #{item.columnId} then #{item.isInsert}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="is_edit = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.isEdit != null and item.isEdit != ''">
|
||||
when column_id = #{item.columnId} then #{item.isEdit}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="is_list = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.isList != null and item.isList != ''">
|
||||
when column_id = #{item.columnId} then #{item.isList}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="is_query = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.isQuery != null and item.isQuery != ''">
|
||||
when column_id = #{item.columnId} then #{item.isQuery}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="query_type = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.queryType != null and item.queryType != ''">
|
||||
when column_id = #{item.columnId} then #{item.queryType}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="html_type = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.htmlType != null and item.htmlType != ''">
|
||||
when column_id = #{item.columnId} then #{item.htmlType}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="dict_type = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.dictType != null and item.dictType != ''">
|
||||
when column_id = #{item.columnId} then #{item.dictType}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="update_by = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.updateBy != null and item.updateBy != ''">
|
||||
when column_id = #{item.columnId} then #{item.updateBy}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
<trim prefix="update_time = case" suffix="end,">
|
||||
<foreach collection="list" separator=" " item="item">
|
||||
<if test="item.updateTime != null">
|
||||
when column_id = #{item.columnId} then #{item.updateTime}
|
||||
</if>
|
||||
</foreach>
|
||||
</trim>
|
||||
</set>
|
||||
where column_id in
|
||||
<foreach collection="list" item="item" index="index"
|
||||
separator="," open="(" close=")">
|
||||
#{item.columnId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
|
||||
<delete id="deleteByTableIds" parameterType="Long">
|
||||
delete from gen_table_column where table_id in
|
||||
<foreach collection="list" item="tableId" open="(" separator="," close=")">
|
||||
#{tableId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<delete id="deleteByTableId" parameterType="Long">
|
||||
delete
|
||||
from gen_table_column
|
||||
where table_id = #{tableId}
|
||||
</delete>
|
||||
|
||||
<delete id="batchRemove">
|
||||
delete from gen_table_column where column_id in
|
||||
<foreach collection="ids" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
356
visual/code-gen/src/main/resources/mapper/TableMapper.xml
Normal file
356
visual/code-gen/src/main/resources/mapper/TableMapper.xml
Normal file
@@ -0,0 +1,356 @@
|
||||
<?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.fateverse.code.mapper.TableMapper">
|
||||
|
||||
<resultMap type="cn.fateverse.code.entity.Table" id="TableResult">
|
||||
<id property="tableId" column="table_id"/>
|
||||
<result property="dataSourceId" column="data_source_id"/>
|
||||
<result property="parentMenuId" column="parent_menu_id"/>
|
||||
<result property="dataSourceType" column="data_source_type"/>
|
||||
<result property="tableName" column="table_name"/>
|
||||
<result property="tableComment" column="table_comment"/>
|
||||
<result property="subTableName" column="sub_table_name"/>
|
||||
<result property="subTableFkName" column="sub_table_fk_name"/>
|
||||
<result property="className" column="class_name"/>
|
||||
<result property="tplCategory" column="tpl_category"/>
|
||||
<result property="packageName" column="package_name"/>
|
||||
<result property="serviceName" column="service_name"/>
|
||||
<result property="moduleName" column="module_name"/>
|
||||
<result property="businessName" column="business_name"/>
|
||||
<result property="functionName" column="function_name"/>
|
||||
<result property="functionAuthor" column="function_author"/>
|
||||
<result property="backTemplate" column="back_template"/>
|
||||
<result property="frontTemplate" column="front_template"/>
|
||||
<result property="options" column="options"/>
|
||||
<result property="optionApi" column="option_api"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="remark" column="remark"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="cn.fateverse.code.entity.TableColumn" id="TableColumnResult">
|
||||
<id property="columnId" column="column_id"/>
|
||||
<result property="tableId" column="table_id"/>
|
||||
<result property="columnName" column="column_name"/>
|
||||
<result property="columnComment" column="column_comment"/>
|
||||
<result property="columnType" column="column_type"/>
|
||||
<result property="javaType" column="java_type"/>
|
||||
<result property="javaField" column="java_field"/>
|
||||
<result property="isPk" column="is_pk"/>
|
||||
<result property="isIncrement" column="is_increment"/>
|
||||
<result property="isRequired" column="is_required"/>
|
||||
<result property="isInsert" column="is_insert"/>
|
||||
<result property="isEdit" column="is_edit"/>
|
||||
<result property="isList" column="is_list"/>
|
||||
<result property="isQuery" column="is_query"/>
|
||||
<result property="isRegular" column="is_regular"/>
|
||||
<result property="regular" column="regular"/>
|
||||
<result property="queryType" column="query_type"/>
|
||||
<result property="htmlType" column="html_type"/>
|
||||
<result property="dictType" column="dict_type"/>
|
||||
<result property="sort" column="sort"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap id="TableResultDto" type="cn.fateverse.code.entity.dto.TableDto" extends="TableResult">
|
||||
<collection property="columns" javaType="java.util.List" resultMap="TableColumnResult"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectGenTable">
|
||||
select table_id,
|
||||
data_source_id,
|
||||
data_source_type,
|
||||
table_name,
|
||||
table_comment,
|
||||
sub_table_name,
|
||||
sub_table_fk_name,
|
||||
class_name,
|
||||
tpl_category,
|
||||
package_name,
|
||||
service_name,
|
||||
module_name,
|
||||
business_name,
|
||||
function_name,
|
||||
function_author,
|
||||
back_template,
|
||||
front_template,
|
||||
options,
|
||||
option_api,
|
||||
create_by,
|
||||
create_time,
|
||||
update_by,
|
||||
update_time,
|
||||
remark
|
||||
from gen_table
|
||||
</sql>
|
||||
|
||||
<select id="selectTableList" resultMap="TableResult">
|
||||
<include refid="selectGenTable"/>
|
||||
<where>
|
||||
<if test="dataSourceId != null ">
|
||||
and data_source_id = #{dataSourceId}
|
||||
</if>
|
||||
<if test="tableName != null and tableName != ''">
|
||||
and lower(`table_name`) like lower(concat('%', #{tableName}, '%'))
|
||||
</if>
|
||||
<if test="tableComment != null and tableComment != ''">
|
||||
and lower(table_comment) like lower(concat('%', #{tableComment}, '%'))
|
||||
</if>
|
||||
<if test="dataSourceType != null ">
|
||||
and data_source_type like concat('%', #{dataSourceType}, '%')
|
||||
</if>
|
||||
<if test="startTime != null and startTime != ''"><!-- 开始时间检索 -->
|
||||
and create_time,'%y%m%d') >= #{startTime}
|
||||
</if>
|
||||
<if test="endTime != null and endTime != ''"><!-- 结束时间检索 -->
|
||||
and create_time <= #{endTime}
|
||||
</if>
|
||||
</where>
|
||||
order by create_time desc
|
||||
</select>
|
||||
|
||||
<!--todo 获取表信息 预览代码使用-->
|
||||
<select id="selectTableDtoByTableId" parameterType="Long" resultMap="TableResultDto">
|
||||
SELECT gt.table_id,
|
||||
gt.data_source_id,
|
||||
gt.parent_menu_id,
|
||||
gt.data_source_type,
|
||||
gt.table_name,
|
||||
gt.table_comment,
|
||||
gt.sub_table_name,
|
||||
gt.sub_table_fk_name,
|
||||
gt.class_name,
|
||||
gt.tpl_category,
|
||||
gt.package_name,
|
||||
gt.service_name,
|
||||
gt.module_name,
|
||||
gt.business_name,
|
||||
gt.function_name,
|
||||
gt.function_author,
|
||||
gt.options,
|
||||
gt.option_api,
|
||||
gt.remark,
|
||||
gt.back_template,
|
||||
gt.front_template,
|
||||
gtc.column_id,
|
||||
gtc.column_name,
|
||||
gtc.column_comment,
|
||||
gtc.column_type,
|
||||
gtc.java_type,
|
||||
gtc.java_field,
|
||||
gtc.is_pk,
|
||||
gtc.is_increment,
|
||||
gtc.is_required,
|
||||
gtc.is_insert,
|
||||
gtc.is_edit,
|
||||
gtc.is_list,
|
||||
gtc.is_query,
|
||||
gtc.query_type,
|
||||
gtc.html_type,
|
||||
gtc.dict_type,
|
||||
gtc.sort,
|
||||
gtc.is_regular,
|
||||
gr.regular
|
||||
FROM gen_table gt
|
||||
LEFT JOIN gen_table_column gtc ON gt.table_id = gtc.table_id
|
||||
LEFT JOIN gen_regular gr ON gtc.is_regular = gr.id
|
||||
where gt.table_id = #{tableId}
|
||||
order by gtc.sort
|
||||
</select>
|
||||
<!--todo 获取表信息 生成代码使用-->
|
||||
<select id="selectTableByName" parameterType="String" resultMap="TableResultDto">
|
||||
SELECT gt.table_id,
|
||||
gt.data_source_id,
|
||||
gt.parent_menu_id,
|
||||
gt.data_source_type,
|
||||
gt.table_name,
|
||||
gt.table_comment,
|
||||
gt.sub_table_name,
|
||||
gt.sub_table_fk_name,
|
||||
gt.class_name,
|
||||
gt.tpl_category,
|
||||
gt.package_name,
|
||||
gt.service_name,
|
||||
gt.module_name,
|
||||
gt.business_name,
|
||||
gt.function_name,
|
||||
gt.function_author,
|
||||
gt.back_template,
|
||||
gt.front_template,
|
||||
gt.options,
|
||||
gt.option_api,
|
||||
gt.remark,
|
||||
gtc.column_id,
|
||||
gtc.column_name,
|
||||
gtc.column_comment,
|
||||
gtc.column_type,
|
||||
gtc.java_type,
|
||||
gtc.java_field,
|
||||
gtc.is_pk,
|
||||
gtc.is_increment,
|
||||
gtc.is_required,
|
||||
gtc.is_insert,
|
||||
gtc.is_edit,
|
||||
gtc.is_list,
|
||||
gtc.is_query,
|
||||
gtc.query_type,
|
||||
gtc.html_type,
|
||||
gtc.dict_type,
|
||||
gtc.sort,
|
||||
gtc.is_regular,
|
||||
gr.regular
|
||||
FROM gen_table gt
|
||||
LEFT JOIN gen_table_column gtc ON gt.table_id = gtc.table_id
|
||||
LEFT JOIN gen_regular gr ON gtc.is_regular = gr.id
|
||||
where gt.table_name = #{tableName}
|
||||
order by gtc.sort
|
||||
</select>
|
||||
|
||||
<!-- todo 查询数据库行配置信息-->
|
||||
<select id="selectTableAll" parameterType="String" resultMap="TableResultDto">
|
||||
SELECT gt.table_id,
|
||||
gt.data_source_id,
|
||||
gt.parent_menu_id,
|
||||
gt.data_source_type,
|
||||
gt.table_name,
|
||||
gt.table_comment,
|
||||
gt.sub_table_name,
|
||||
gt.sub_table_fk_name,
|
||||
gt.class_name,
|
||||
gt.tpl_category,
|
||||
gt.package_name,
|
||||
gt.service_name,
|
||||
gt.module_name,
|
||||
gt.business_name,
|
||||
gt.function_name,
|
||||
gt.function_author,
|
||||
gt.options,
|
||||
gt.option_api,
|
||||
gt.remark,
|
||||
gt.back_template,
|
||||
gt.front_template,
|
||||
gtc.column_id,
|
||||
gtc.column_name,
|
||||
gtc.column_comment,
|
||||
gtc.column_type,
|
||||
gtc.java_type,
|
||||
gtc.java_field,
|
||||
gtc.is_pk,
|
||||
gtc.is_increment,
|
||||
gtc.is_required,
|
||||
gtc.is_insert,
|
||||
gtc.is_edit,
|
||||
gtc.is_list,
|
||||
gtc.is_query,
|
||||
gtc.query_type,
|
||||
gtc.html_type,
|
||||
gtc.dict_type,
|
||||
gtc.sort
|
||||
FROM gen_table gt
|
||||
LEFT JOIN gen_table_column gtc ON gt.table_id = gtc.table_id
|
||||
order by gtc.sort
|
||||
</select>
|
||||
<select id="selectTableNameByDataSourceId" resultType="java.lang.String">
|
||||
select table_name
|
||||
from gen_table
|
||||
where data_source_id = #{dataSourceId}
|
||||
</select>
|
||||
|
||||
<select id="selectCheckTableByDataSourceId" resultType="java.lang.Long">
|
||||
select count(*) from gen_table where data_source_id = #{dataSourceId} limit 1
|
||||
</select>
|
||||
|
||||
<insert id="insertTable" useGeneratedKeys="true" keyProperty="tableId">
|
||||
insert into gen_table
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
<if test="tableName != null">table_name,</if>
|
||||
<if test="dataSourceId != null">data_source_id,</if>
|
||||
<if test="parentMenuId != null">parent_menu_id,</if>
|
||||
<if test="dataSourceType != null ">data_source_type,</if>
|
||||
<if test="tableComment != null and tableComment != ''">table_comment,</if>
|
||||
<if test="className != null and className != ''">class_name,</if>
|
||||
<if test="tplCategory != null and tplCategory != ''">tpl_category,</if>
|
||||
<if test="packageName != null and packageName != ''">package_name,</if>
|
||||
<if test="moduleName != null and moduleName != ''">module_name,</if>
|
||||
<if test="serviceName != null and serviceName != ''">service_name,</if>
|
||||
<if test="businessName != null and businessName != ''">business_name,</if>
|
||||
<if test="functionName != null and functionName != ''">function_name,</if>
|
||||
<if test="functionAuthor != null and functionAuthor != ''">function_author,</if>
|
||||
<if test="backTemplate != null">back_template,</if>
|
||||
<if test="frontTemplate != null">front_template,</if>
|
||||
<if test="optionApi != null and optionApi != ''">option_api,</if>
|
||||
<if test="remark != null and remark != ''">remark,</if>
|
||||
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||
<if test="createTime != null">create_time,</if>
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
<if test="tableName != null">#{tableName},</if>
|
||||
<if test="dataSourceId != null">#{dataSourceId},</if>
|
||||
<if test="parentMenuId != null">#{parentMenuId},</if>
|
||||
<if test="dataSourceType != null ">#{dataSourceType},</if>
|
||||
<if test="tableComment != null and tableComment != ''">#{tableComment},</if>
|
||||
<if test="className != null and className != ''">#{className},</if>
|
||||
<if test="tplCategory != null and tplCategory != ''">#{tplCategory},</if>
|
||||
<if test="packageName != null and packageName != ''">#{packageName},</if>
|
||||
<if test="moduleName != null and moduleName != ''">#{moduleName},</if>
|
||||
<if test="serviceName != null and serviceName != ''">#{serviceName},</if>
|
||||
<if test="businessName != null and businessName != ''">#{businessName},</if>
|
||||
<if test="functionName != null and functionName != ''">#{functionName},</if>
|
||||
<if test="functionAuthor != null and functionAuthor != ''">#{functionAuthor},</if>
|
||||
<if test="backTemplate != null">#{backTemplate},</if>
|
||||
<if test="frontTemplate != null">#{frontTemplate},</if>
|
||||
<if test="optionApi != null and optionApi != ''">#{optionApi},</if>
|
||||
<if test="remark != null and remark != ''">#{remark},</if>
|
||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||
<if test="createTime != null">#{createTime},</if>
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
|
||||
<update id="updateTable">
|
||||
update gen_table
|
||||
<set>
|
||||
<if test="parentMenuId != null">parent_menu_id = #{parentMenuId},</if>
|
||||
<if test="tableName != null and tableName != ''">table_name = #{tableName},</if>
|
||||
<if test="tableComment != null and tableComment != ''">table_comment = #{tableComment},</if>
|
||||
<if test="subTableName != null">sub_table_name = #{subTableName},</if>
|
||||
<if test="subTableFkName != null">sub_table_fk_name = #{subTableFkName},</if>
|
||||
<if test="className != null and className != ''">class_name = #{className},</if>
|
||||
<if test="functionAuthor != null and functionAuthor != ''">function_author = #{functionAuthor},</if>
|
||||
<if test="tplCategory != null and tplCategory != ''">tpl_category = #{tplCategory},</if>
|
||||
<if test="packageName != null and packageName != ''">package_name = #{packageName},</if>
|
||||
<if test="moduleName != null and moduleName != ''">module_name = #{moduleName},</if>
|
||||
<if test="serviceName != null and serviceName != ''">service_name = #{serviceName},</if>
|
||||
<if test="businessName != null and businessName != ''">business_name = #{businessName},</if>
|
||||
<if test="functionName != null and functionName != ''">function_name = #{functionName},</if>
|
||||
<if test="optionApi != null and optionApi != ''">option_api = #{optionApi},</if>
|
||||
<if test="options != null and options != ''">`options` = #{options},</if>
|
||||
<if test="backTemplate != null">back_template = #{backTemplate},</if>
|
||||
<if test="frontTemplate != null">front_template = #{frontTemplate},</if>
|
||||
<if test="remark != null">remark = #{remark},</if>
|
||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null and updateTime != ''">update_time = #{updateTime},</if>
|
||||
</set>
|
||||
where table_id = #{tableId}
|
||||
</update>
|
||||
|
||||
<delete id="deleteTableByIds" parameterType="Long">
|
||||
delete from gen_table where table_id in
|
||||
<foreach collection="list" item="tableId" open="(" separator="," close=")">
|
||||
#{tableId}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
<delete id="deleteTableById">
|
||||
delete
|
||||
from gen_table
|
||||
where table_id = #{tableId}
|
||||
</delete>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,49 @@
|
||||
<?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.fateverse.code.mapper.dynamic.DynamicTableMapper">
|
||||
|
||||
<resultMap type="cn.fateverse.code.entity.Table" id="TableResult">
|
||||
<result property="tableName" column="table_name" />
|
||||
<result property="tableComment" column="table_comment" />
|
||||
<result property="dataSourceType" column="data_source_type" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="cn.fateverse.code.entity.query.DynamicTable" id="DynamicTableResult">
|
||||
<result property="tableName" column="table_name" />
|
||||
<result property="tableComment" column="table_comment" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="cn.fateverse.code.entity.TableColumn" id="TableColumnResult">
|
||||
<id property="columnId" column="column_id" />
|
||||
<result property="tableId" column="table_id" />
|
||||
<result property="columnName" column="column_name" />
|
||||
<result property="columnComment" column="column_comment" />
|
||||
<result property="columnType" column="column_type" />
|
||||
<result property="columnLength" column="column_length" />
|
||||
<result property="columnScale" column="column_scale" />
|
||||
<result property="javaType" column="java_type" />
|
||||
<result property="javaField" column="java_field" />
|
||||
<result property="isPk" column="is_pk" />
|
||||
<result property="isIncrement" column="is_increment" />
|
||||
<result property="isRequired" column="is_required" />
|
||||
<result property="isInsert" column="is_insert" />
|
||||
<result property="isEdit" column="is_edit" />
|
||||
<result property="isList" column="is_list" />
|
||||
<result property="isQuery" column="is_query" />
|
||||
<result property="queryType" column="query_type" />
|
||||
<result property="htmlType" column="html_type" />
|
||||
<result property="dictType" column="dict_type" />
|
||||
<result property="sort" column="sort" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
<result property="updateTime" column="update_time" />
|
||||
</resultMap>
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,79 @@
|
||||
<?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.fateverse.code.mapper.dynamic.MySqlDynamicTableMapper">
|
||||
|
||||
<select id="checkSource" resultType="java.lang.Integer">
|
||||
select 1 from dual
|
||||
</select>
|
||||
|
||||
<select id="selectList" resultMap="cn.fateverse.code.mapper.dynamic.DynamicTableMapper.DynamicTableResult">
|
||||
select table_name, table_comment, create_time, update_time
|
||||
from information_schema.tables
|
||||
where table_schema = (select database())
|
||||
and table_name NOT LIKE 'gen_%'
|
||||
<if test="table.tableName != null and table.tableName != ''">
|
||||
and table_name like concat('%', #{table.tableName}, '%')
|
||||
</if>
|
||||
<if test="table.tableComment != null and table.tableComment != ''">
|
||||
and table_comment like concat('%', #{table.tableComment}, '%')
|
||||
</if>
|
||||
<if test="table.startTime != null and table.endTime != null"><!-- 开始时间检索 -->
|
||||
and create_time between #{table.startTime} and #{table.endTime}
|
||||
</if>
|
||||
<if test="list !=null and list.size!=0">
|
||||
and table_name not in
|
||||
<foreach collection="list" item="name" separator="," open="(" close=")" >
|
||||
#{name}
|
||||
</foreach>
|
||||
</if>
|
||||
limit #{page.startNum},#{page.endNum}
|
||||
</select>
|
||||
|
||||
<select id="selectListCount" resultType="java.lang.Long">
|
||||
select count(1)
|
||||
from information_schema.tables
|
||||
where table_schema = (select database())
|
||||
and table_name NOT LIKE 'gen_%'
|
||||
<if test="table.tableName != null and table.tableName != ''">
|
||||
and table_name like concat('%', #{table.tableName}, '%')
|
||||
</if>
|
||||
<if test="table.tableComment != null and table.tableComment != ''">
|
||||
and table_comment like concat('%', #{table.tableComment}, '%')
|
||||
</if>
|
||||
<if test="table.startTime != null and table.endTime != null"><!-- 开始时间检索 -->
|
||||
and create_time between #{table.startTime} and #{table.endTime}
|
||||
</if>
|
||||
<if test="list !=null and list.size!=0">
|
||||
and table_name not in
|
||||
<foreach collection="list" item="name" separator="," open="(" close=")" >
|
||||
#{name}
|
||||
</foreach>
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<!-- and table_name NOT LIKE 'gen_%' -->
|
||||
<select id="selectListByNameList" resultMap="cn.fateverse.code.mapper.dynamic.DynamicTableMapper.TableResult">
|
||||
select table_name, table_comment, create_time, update_time, 'MYSQL' as data_source_type
|
||||
from information_schema.tables
|
||||
where table_name not like 'gen_%'
|
||||
and table_schema = (select database())
|
||||
and table_name in
|
||||
<foreach collection="list" item="name" open="(" separator="," close=")">
|
||||
#{name}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<select id="selectColumnsByNameList" resultMap="cn.fateverse.code.mapper.dynamic.DynamicTableMapper.TableColumnResult">
|
||||
select table_name as dict_type,column_name, (case when (is_nullable = 'no' <![CDATA[ && ]]> column_key != 'PRI') then '1' else null end) as is_required, (case when column_key = 'PRI' then '1' else '0' end) as is_pk, ordinal_position as sort, column_comment, (case when extra = 'auto_increment' then '1' else '0' end) as is_increment, column_type
|
||||
from information_schema.columns
|
||||
where table_schema = (select database()) and table_name in
|
||||
<foreach collection="list" item="name" open="(" separator="," close=")">
|
||||
#{name}
|
||||
</foreach>
|
||||
order by ordinal_position
|
||||
</select>
|
||||
|
||||
|
||||
</mapper>
|
||||
@@ -0,0 +1,89 @@
|
||||
<?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.fateverse.code.mapper.dynamic.OracleDynamicTableMapper">
|
||||
|
||||
<select id="checkSource" resultType="java.lang.Integer">
|
||||
select 1 from dual
|
||||
</select>
|
||||
|
||||
<select id="selectList" resultMap="cn.fateverse.code.mapper.dynamic.DynamicTableMapper.DynamicTableResult">
|
||||
select ut.table_name,utc.comments as table_comment,ut.last_analyzed as update_time
|
||||
from user_tables ut
|
||||
left join user_tab_comments utc on ut.table_name = utc.table_name
|
||||
where rownum between #{page.startNum} and #{page.endNum}
|
||||
<if test="table.tableName != null and table.tableName != ''">
|
||||
and ut.table_name like concat(concat('%', #{table.tableName}), '%')
|
||||
</if>
|
||||
<if test="table.tableComment != null and table.tableComment != ''">
|
||||
and utc.comments like concat(concat('%', #{table.tableComment}), '%')
|
||||
</if>
|
||||
<if test="table.startTime != null and table.endTime != null"><!-- 开始时间检索 -->
|
||||
and update_time between #{table.startTime} and #{table.endTime}
|
||||
</if>
|
||||
<if test="list !=null and list.size!=0">
|
||||
and ut.table_name not in
|
||||
<foreach collection="list" item="name" separator="," open="(" close=")" >
|
||||
#{name}
|
||||
</foreach>
|
||||
</if>
|
||||
|
||||
</select>
|
||||
|
||||
<select id="selectListCount" resultType="java.lang.Long">
|
||||
select count(1)
|
||||
from user_tables ut
|
||||
left join user_tab_comments utc on ut.table_name = utc.table_name
|
||||
<where>
|
||||
<if test="table.tableName != null and table.tableName != ''">
|
||||
and ut.table_name like concat(concat('%', #{table.tableName}), '%')
|
||||
</if>
|
||||
<if test="table.tableComment != null and table.tableComment != ''">
|
||||
and utc.comments like concat(concat('%', #{table.tableComment}), '%')
|
||||
</if>
|
||||
<if test="table.startTime != null and table.endTime != null"><!-- 开始时间检索 -->
|
||||
and ut.last_analyzed between #{table.startTime} and #{table.endTime}
|
||||
</if>
|
||||
<if test="list !=null and list.size!=0">
|
||||
and ut.table_name not in
|
||||
<foreach collection="list" item="name" separator="," open="(" close=")" >
|
||||
#{name}
|
||||
</foreach>
|
||||
</if>
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<!-- and table_name NOT LIKE 'gen_%' -->
|
||||
<select id="selectListByNameList" resultMap="cn.fateverse.code.mapper.dynamic.DynamicTableMapper.TableResult">
|
||||
select ut.table_name,utc.comments as table_comment,ut.last_analyzed as update_time,'ORACLE' as data_source_type
|
||||
from user_tables ut
|
||||
left join user_tab_comments utc on ut.table_name = utc.table_name
|
||||
where ut.table_name in
|
||||
<foreach collection="list" item="name" separator="," open="(" close=")" >
|
||||
#{name}
|
||||
</foreach>
|
||||
</select>
|
||||
|
||||
<select id="selectColumnsByNameList" resultMap="cn.fateverse.code.mapper.dynamic.DynamicTableMapper.TableColumnResult">
|
||||
select distinct utc.column_name,
|
||||
utc.table_name as dict_type,
|
||||
utc.data_type as column_type,
|
||||
utc.data_length as column_length,
|
||||
utc.data_scale as column_scale,
|
||||
(case when utc.nullable = 'N' then '1' else '0' end) as is_required ,
|
||||
utc.column_id as sort,
|
||||
(case when uc.constraint_type = 'P' then '1' else '0' end) as is_pk ,
|
||||
ucc.comments as column_comment
|
||||
from user_tab_columns utc
|
||||
inner join user_col_comments ucc on ucc.column_name = utc.column_name and ucc.table_name = utc.table_name
|
||||
left join user_cons_columns uccs on uccs.column_name = utc.column_name
|
||||
left join user_constraints uc on uc.constraint_name = uccs.constraint_name
|
||||
where uc.search_condition is null
|
||||
and utc.table_name in
|
||||
<foreach collection="list" item="name" open="(" separator="," close=")">
|
||||
#{name}
|
||||
</foreach>
|
||||
order by utc.column_id
|
||||
</select>
|
||||
</mapper>
|
||||
106
visual/code-gen/src/main/resources/vm/java/controller.java.vm
Normal file
106
visual/code-gen/src/main/resources/vm/java/controller.java.vm
Normal file
@@ -0,0 +1,106 @@
|
||||
package ${packageName}.controller;
|
||||
|
||||
import ${packageName}.entity.dto.${ClassName}Dto;
|
||||
import ${packageName}.entity.query.${ClassName}Query;
|
||||
import ${packageName}.entity.vo.${ClassName}Vo;
|
||||
import ${packageName}.service.${ClassName}Service;
|
||||
import cn.fateverse.common.core.result.Result;
|
||||
#if($table.hasOptionApi())
|
||||
import cn.fateverse.common.core.entity.Option;
|
||||
#end
|
||||
import cn.fateverse.common.core.result.page.TableDataInfo;
|
||||
import cn.fateverse.common.core.utils.ObjectUtils;
|
||||
import cn.fateverse.common.log.annotation.Log;
|
||||
import cn.fateverse.common.log.enums.BusinessType;
|
||||
import cn.fateverse.common.excel.utils.ExcelUtil;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ${functionName} Controller
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
@Api(value = "${functionName}管理",tags = "${functionName}管理")
|
||||
@RestController
|
||||
@RequestMapping("/${moduleName}/${businessName}")
|
||||
public class ${ClassName}Controller {
|
||||
|
||||
private final ${ClassName}Service ${className}Service;
|
||||
|
||||
public ${ClassName}Controller(${ClassName}Service ${className}Service) {
|
||||
this.${className}Service = ${className}Service;
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("获取${functionName}列表")
|
||||
@GetMapping
|
||||
@PreAuthorize("@ss.hasPermission('${permissionPrefix}:list')")
|
||||
public Result<TableDataInfo<${ClassName}Vo>> list(${ClassName}Query query) {
|
||||
TableDataInfo<${ClassName}Vo> dataInfo = ${className}Service.searchList(query);
|
||||
return Result.ok(dataInfo);
|
||||
}
|
||||
|
||||
#if($table.hasOptionApi())
|
||||
@ApiOperation("获取校验规则option")
|
||||
@GetMapping("/option")
|
||||
public Result<List<Option>> option(){
|
||||
List<Option> options = ${className}Service.searchOptionList();
|
||||
return Result.ok(options);
|
||||
}
|
||||
#end
|
||||
|
||||
@ApiOperation("导出excel数据")
|
||||
@GetMapping("/export")
|
||||
@PreAuthorize("@ss.hasPermission('${permissionPrefix}:export')")
|
||||
public void export(${ClassName}Query query){
|
||||
List<${ClassName}Vo> list = ${className}Service.exportList(query);
|
||||
ExcelUtil.exportExcel(list,${ClassName}Vo.class);
|
||||
}
|
||||
|
||||
@ApiOperation("获取${functionName}详细信息")
|
||||
@GetMapping("/{${pkColumn.javaField}}")
|
||||
@PreAuthorize("@ss.hasPermission('${permissionPrefix}:info')")
|
||||
public Result<${ClassName}Vo> info(@PathVariable ${pkColumn.javaType} ${pkColumn.javaField}) {
|
||||
ObjectUtils.checkPk(${pkColumn.javaField});
|
||||
${ClassName}Vo ${className} = ${className}Service.searchById(${pkColumn.javaField});
|
||||
return Result.ok(${className});
|
||||
}
|
||||
|
||||
|
||||
@ApiOperation("新增${functionName}")
|
||||
@PostMapping
|
||||
@Log(title = "新增${functionName}",businessType = BusinessType.INSERT)
|
||||
@PreAuthorize("@ss.hasPermission('${permissionPrefix}:add')")
|
||||
public Result<Void> add(@RequestBody @Validated ${ClassName}Dto ${className}){
|
||||
${className}Service.save(${className});
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
@ApiOperation("修改${functionName}")
|
||||
@PutMapping
|
||||
@Log(title = "修改${functionName}",businessType = BusinessType.UPDATE)
|
||||
@PreAuthorize("@ss.hasPermission('${permissionPrefix}:edit')")
|
||||
public Result<Void> edit(@RequestBody @Validated ${ClassName}Dto ${className}){
|
||||
ObjectUtils.checkPk(${className}.get${table.capitalize(${pkColumn.javaField})}());
|
||||
${className}Service.edit(${className});
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
@ApiOperation("删除${functionName}")
|
||||
@DeleteMapping("/{${pkColumn.javaField}List}")
|
||||
@Log(title = "删除${functionName}",businessType = BusinessType.DELETE)
|
||||
@PreAuthorize("@ss.hasPermission('${permissionPrefix}:del')")
|
||||
public Result<Void> batchDel(@PathVariable List<${pkColumn.javaType}> ${pkColumn.javaField}List){
|
||||
ObjectUtils.checkPkList(${pkColumn.javaField}List);
|
||||
${className}Service.removeBatch(${pkColumn.javaField}List);
|
||||
return Result.ok();
|
||||
}
|
||||
|
||||
}
|
||||
37
visual/code-gen/src/main/resources/vm/java/entity.java.vm
Normal file
37
visual/code-gen/src/main/resources/vm/java/entity.java.vm
Normal file
@@ -0,0 +1,37 @@
|
||||
package ${packageName}.entity;
|
||||
|
||||
import cn.fateverse.common.core.annotaion.EnableAutoField;
|
||||
import cn.fateverse.common.core.entity.BaseEntity;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
#if($table.hasDateDto())
|
||||
|
||||
import java.util.Date;
|
||||
#end
|
||||
|
||||
/**
|
||||
* ${functionName}对象 ${tableName}
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@EnableAutoField
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class ${ClassName} extends BaseEntity{
|
||||
#foreach ($column in $columns)
|
||||
#if(!$column.isSuperColumn($column.javaField))
|
||||
|
||||
/**
|
||||
* $column.columnComment
|
||||
*/
|
||||
private $column.javaType $column.javaField;
|
||||
#end
|
||||
#end
|
||||
|
||||
}
|
||||
77
visual/code-gen/src/main/resources/vm/java/entityDto.java.vm
Normal file
77
visual/code-gen/src/main/resources/vm/java/entityDto.java.vm
Normal file
@@ -0,0 +1,77 @@
|
||||
package ${packageName}.entity.dto;
|
||||
|
||||
import ${packageName}.entity.${ClassName};
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
#if($table.isRequired())
|
||||
import javax.validation.constraints.NotNull;
|
||||
#end
|
||||
#if($table.isRegular())
|
||||
import javax.validation.constraints.Pattern;
|
||||
#end
|
||||
#if($table.hasDateDto())
|
||||
|
||||
import java.util.Date;
|
||||
#end
|
||||
|
||||
/**
|
||||
* ${functionName}对象 ${tableName}
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
@Data
|
||||
@ApiModel("${functionName}Dto")
|
||||
public class ${ClassName}Dto {
|
||||
|
||||
/**
|
||||
* ${pkColumn.columnComment}
|
||||
*/
|
||||
@ApiModelProperty("${pkColumn.columnComment}")
|
||||
private $pkColumn.javaType $pkColumn.javaField;
|
||||
#foreach ($column in $columns)
|
||||
#if($column.from())
|
||||
|
||||
/**
|
||||
* $column.columnComment
|
||||
*/
|
||||
#if($column.required())
|
||||
@NotNull(message = "${column.columnComment}不能为空!")
|
||||
#end
|
||||
#if($column.isRegular())
|
||||
@Pattern(regexp = "${column.regular}",message = "${column.columnComment}格式错误!")
|
||||
#end
|
||||
@ApiModelProperty("${column.columnComment}")
|
||||
private $column.javaType $column.javaField;
|
||||
#end
|
||||
#end
|
||||
|
||||
public ${ClassName} to${ClassName}() {
|
||||
#if($table.hasDateDto())
|
||||
${ClassName} build = ${ClassName}.builder()
|
||||
.${pkColumn.javaField}(${pkColumn.javaField})
|
||||
#foreach ($column in $columns)
|
||||
#if((1 == $column.isEdit || 1 == $column.isInsert) && !($table.isEntityTime(${column.javaField})))
|
||||
.${column.javaField}(${column.javaField})
|
||||
#end
|
||||
#end
|
||||
.build();
|
||||
#foreach ($column in $columns)
|
||||
#if((1 == $column.isEdit || 1 == $column.isInsert) && $table.isEntityTime(${column.javaField}))
|
||||
build.set${table.capitalize(${column.javaField})}(${column.javaField});
|
||||
#end
|
||||
#end
|
||||
return build;
|
||||
#else
|
||||
return ${ClassName}.builder()
|
||||
.${pkColumn.javaField}(${pkColumn.javaField})
|
||||
#foreach ($column in $columns)
|
||||
#if(1 == $column.isEdit || 1 == $column.isInsert)
|
||||
.${column.javaField}(${column.javaField})
|
||||
#end
|
||||
#end
|
||||
.build();
|
||||
#end
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package ${packageName}.entity.query;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
#if($table.hasDateQuery())
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.util.Date;
|
||||
#end
|
||||
|
||||
/**
|
||||
* ${functionName}对象 ${tableName}
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ApiModel("${functionName}Query")
|
||||
public class ${ClassName}Query {
|
||||
#foreach ($column in $columns)
|
||||
#if($column.query())
|
||||
#if("BETWEEN" != $column.queryType)
|
||||
|
||||
/**
|
||||
* $column.columnComment
|
||||
*/
|
||||
@ApiModelProperty("${column.columnComment}")
|
||||
#if($column.javaType.equals("Date"))
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
#end
|
||||
private $column.javaType $column.javaField;
|
||||
#else
|
||||
|
||||
/**
|
||||
* $column.columnComment 开始
|
||||
*/
|
||||
@ApiModelProperty("${column.columnComment}开始")
|
||||
#if($column.javaType.equals("Date"))
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
#end
|
||||
private $column.javaType begin${table.capitalize($column.javaField)};
|
||||
|
||||
/**
|
||||
* $column.columnComment 结束
|
||||
*/
|
||||
@ApiModelProperty("${column.columnComment}结束")
|
||||
#if($column.javaType.equals("Date"))
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
#end
|
||||
private $column.javaType end${table.capitalize($column.javaField)};
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
}
|
||||
56
visual/code-gen/src/main/resources/vm/java/entityVo.java.vm
Normal file
56
visual/code-gen/src/main/resources/vm/java/entityVo.java.vm
Normal file
@@ -0,0 +1,56 @@
|
||||
package ${packageName}.entity.vo;
|
||||
|
||||
import ${packageName}.entity.${ClassName};
|
||||
import cn.fateverse.common.core.annotaion.Excel;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
#if($table.hasDateDto())
|
||||
#end
|
||||
|
||||
|
||||
/**
|
||||
* ${functionName}对象 ${tableName}
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
@Data
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ApiModel("${functionName}Vo")
|
||||
public class ${ClassName}Vo {
|
||||
|
||||
/**
|
||||
* ${pkColumn.columnComment}
|
||||
*/
|
||||
@ApiModelProperty("${pkColumn.columnComment}")
|
||||
private $pkColumn.javaType $pkColumn.javaField;
|
||||
#foreach ($column in $columns)
|
||||
#if($column.list())
|
||||
|
||||
/**
|
||||
* $column.columnComment
|
||||
*/
|
||||
@ApiModelProperty("${column.columnComment}")
|
||||
@Excel("${column.columnComment}")
|
||||
private $column.javaType $column.javaField;
|
||||
#end
|
||||
#end
|
||||
|
||||
public static ${ClassName}Vo to${ClassName}Vo(${ClassName} ${className}) {
|
||||
return ${ClassName}Vo.builder()
|
||||
.${pkColumn.javaField}(${className}.get${table.capitalize(${pkColumn.javaField})}())
|
||||
#foreach ($column in $columns)
|
||||
#if($column.list())
|
||||
.${column.javaField}(${className}.get${table.capitalize(${column.javaField})}())
|
||||
#end
|
||||
#end
|
||||
.build();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
package ${packageName}.mapper;
|
||||
|
||||
import ${packageName}.entity.${ClassName};
|
||||
import ${packageName}.entity.query.${ClassName}Query;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ${functionName} Mapper
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
public interface ${ClassName}Mapper {
|
||||
|
||||
/**
|
||||
* 查询${functionName}
|
||||
*
|
||||
* @param ${pkColumn.javaField} ${functionName}Id
|
||||
* @return ${functionName}
|
||||
*/
|
||||
${ClassName} selectById(${pkColumn.javaType} ${pkColumn.javaField});
|
||||
|
||||
/**
|
||||
* 查询${functionName}列表
|
||||
*
|
||||
* @param query ${functionName}查询
|
||||
* @return ${functionName}集合
|
||||
*/
|
||||
List<${ClassName}> selectList(${ClassName}Query query);
|
||||
|
||||
/**
|
||||
* 新增${functionName}
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
int insert(${ClassName} ${className});
|
||||
|
||||
/**
|
||||
* 修改${functionName}
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
int update(${ClassName} ${className});
|
||||
|
||||
/**
|
||||
* 删除${functionName}
|
||||
*
|
||||
* @param ${pkColumn.javaField} 需要删除的${functionName}Id
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteById(${pkColumn.javaType} ${pkColumn.javaField});
|
||||
|
||||
/**
|
||||
* 批量删除${functionName}
|
||||
*
|
||||
* @param ${pkColumn.javaField}List 需要删除的${functionName}Id 集合
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteBatchByIdList(List<${pkColumn.javaType}> ${pkColumn.javaField}List);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
package ${packageName}.service.impl;
|
||||
|
||||
import ${packageName}.entity.${ClassName};
|
||||
import ${packageName}.entity.dto.${ClassName}Dto;
|
||||
import ${packageName}.entity.vo.${ClassName}Vo;
|
||||
import ${packageName}.entity.query.${ClassName}Query;
|
||||
import ${packageName}.mapper.${ClassName}Mapper;
|
||||
import ${packageName}.service.${ClassName}Service;
|
||||
#if($table.hasOptionApi())
|
||||
import cn.fateverse.common.core.entity.Option;
|
||||
#end
|
||||
import cn.fateverse.common.core.result.page.TableDataInfo;
|
||||
import cn.fateverse.common.mybatis.utils.PageUtils;
|
||||
import cn.fateverse.common.security.utils.SecurityUtils;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* ${functionName} Controller
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ${ClassName}ServiceImpl implements ${ClassName}Service {
|
||||
|
||||
private final ${ClassName}Mapper ${className}Mapper;
|
||||
|
||||
public ${ClassName}ServiceImpl(${ClassName}Mapper ${className}Mapper) {
|
||||
this.${className}Mapper = ${className}Mapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ${ClassName}Vo searchById(${pkColumn.javaType} ${pkColumn.javaField}){
|
||||
${ClassName} ${className} = ${className}Mapper.selectById(${pkColumn.javaField});
|
||||
return ${ClassName}Vo.to${ClassName}Vo(${className});
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableDataInfo<${ClassName}Vo> searchList(${ClassName}Query query){
|
||||
PageUtils.startPage();
|
||||
List<${ClassName}> list = ${className}Mapper.selectList(query);
|
||||
return PageUtils.convertDataTable(list, ${ClassName}Vo::to${ClassName}Vo);
|
||||
}
|
||||
|
||||
#if($table.hasOptionApi())
|
||||
@Override
|
||||
public List<Option> searchOptionList(){
|
||||
${ClassName}Query query = new ${ClassName}Query();
|
||||
List<${ClassName}> list = ${className}Mapper.selectList(query);
|
||||
return list.stream().map(item-> Option.builder()
|
||||
.value(item.get${table.getOptionValueFiled()}())
|
||||
.label(item.get${table.getOptionLabelFiled()}())
|
||||
.build()).collect(Collectors.toList());
|
||||
}
|
||||
#end
|
||||
|
||||
@Override
|
||||
public List<${ClassName}Vo> exportList(${ClassName}Query query){
|
||||
List<${ClassName}> list = ${className}Mapper.selectList(query);
|
||||
return list.stream().map(${ClassName}Vo::to${ClassName}Vo)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int save(${ClassName}Dto ${className}){
|
||||
${ClassName} info = ${className}.to${ClassName}();
|
||||
info.setCreateBy(SecurityUtils.getUsername());
|
||||
return ${className}Mapper.insert(info);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int edit(${ClassName}Dto ${className}){
|
||||
${ClassName} info = ${className}.to${ClassName}();
|
||||
info.setUpdateBy(SecurityUtils.getUsername());
|
||||
return ${className}Mapper.update(info);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int removeById(${pkColumn.javaType} ${pkColumn.javaField}){
|
||||
return ${className}Mapper.deleteById(${pkColumn.javaField});
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int removeBatch(List<${pkColumn.javaType}> ${pkColumn.javaField}List){
|
||||
return ${className}Mapper.deleteBatchByIdList(${pkColumn.javaField}List);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package ${packageName}.mapper;
|
||||
|
||||
import ${packageName}.entity.${ClassName};
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ${functionName} Mapper
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
public interface ${ClassName}Mapper extends BaseMapper<${ClassName}>{
|
||||
}
|
||||
@@ -0,0 +1,125 @@
|
||||
package ${packageName}.service.impl;
|
||||
|
||||
import ${packageName}.entity.${ClassName};
|
||||
import ${packageName}.entity.dto.${ClassName}Dto;
|
||||
import ${packageName}.entity.vo.${ClassName}Vo;
|
||||
import ${packageName}.entity.query.${ClassName}Query;
|
||||
import ${packageName}.mapper.${ClassName}Mapper;
|
||||
import ${packageName}.service.${ClassName}Service;
|
||||
#if($table.hasOptionApi())
|
||||
import cn.fateverse.common.core.entity.Option;
|
||||
#end
|
||||
import cn.fateverse.common.core.result.page.TableDataInfo;
|
||||
import cn.fateverse.common.mybatisplus.utils.PageUtils;
|
||||
import cn.fateverse.common.security.utils.SecurityUtils;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* ${functionName} Controller
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
@Slf4j
|
||||
@Service
|
||||
public class ${ClassName}ServiceImpl implements ${ClassName}Service {
|
||||
|
||||
private final ${ClassName}Mapper ${className}Mapper;
|
||||
|
||||
private final List<String> columnNames = Arrays.asList(${table.getFieldList()});
|
||||
|
||||
public ${ClassName}ServiceImpl(${ClassName}Mapper ${className}Mapper) {
|
||||
this.${className}Mapper = ${className}Mapper;
|
||||
}
|
||||
|
||||
@Override
|
||||
public ${ClassName}Vo searchById(${pkColumn.javaType} ${pkColumn.javaField}){
|
||||
${ClassName} ${className} = ${className}Mapper.selectById(${pkColumn.javaField});
|
||||
return ${ClassName}Vo.to${ClassName}Vo(${className});
|
||||
}
|
||||
|
||||
@Override
|
||||
public TableDataInfo<${ClassName}Vo> searchList(${ClassName}Query query){
|
||||
Page<${ClassName}> page = ${className}Mapper.selectPage(PageUtils.getPage(), buildQueryWrapper(query));
|
||||
return PageUtils.convertDataTable(page, ${ClassName}Vo::to${ClassName}Vo);
|
||||
}
|
||||
|
||||
#if($table.hasOptionApi())
|
||||
@Override
|
||||
public List<Option> searchOptionList(){
|
||||
LambdaQueryWrapper<Carousel> lqw = new LambdaQueryWrapper<>();
|
||||
List<${ClassName}> list = ${className}Mapper.selectList(lqw);
|
||||
return list.stream().map(item-> Option.builder()
|
||||
.value(item.get${table.getOptionValueFiled()})
|
||||
.label(item.get${table.getOptionLabelFiled()})
|
||||
.build()).collect(Collectors.toList())
|
||||
}
|
||||
#end
|
||||
|
||||
|
||||
@Override
|
||||
public List<${ClassName}Vo> exportList(${ClassName}Query query){
|
||||
List<${ClassName}> list = ${className}Mapper.selectList(buildQueryWrapper(query));
|
||||
return list.stream().map(${ClassName}Vo::to${ClassName}Vo)
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public LambdaQueryWrapper<Carousel> buildQueryWrapper(${ClassName}Query query) {
|
||||
LambdaQueryWrapper<Carousel> lqw = new LambdaQueryWrapper<>();
|
||||
lqw.select(Carousel.class,e->columnNames.contains(e.getColumn()))
|
||||
#foreach($column in $columns)
|
||||
#if($column.query())
|
||||
#set($mpMethod=$column.queryType.toLowerCase())
|
||||
#set($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
|
||||
#if($queryType != 'BETWEEN')
|
||||
#if($column.javaType == 'String')
|
||||
#set($condition='!StrUtil.isBlank(query.get'+$AttrName+'())')
|
||||
#else
|
||||
#set($condition='query.get'+$AttrName+'() != null')
|
||||
#end
|
||||
.$mpMethod($condition, ${ClassName}::get$AttrName, query.get$AttrName())
|
||||
#else
|
||||
.between('query.getBegin$AttrName' != null && 'query.getEnd$AttrName' != null,
|
||||
${ClassName}::get$AttrName ,'query.getBegin$AttrName', 'query.getBegin$AttrName')
|
||||
#end#end#end;
|
||||
return lqw;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int save(${ClassName}Dto ${className}){
|
||||
${ClassName} info = ${className}.to${ClassName}();
|
||||
info.setCreateBy(SecurityUtils.getUsername());
|
||||
return ${className}Mapper.insert(info);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int edit(${ClassName}Dto ${className}){
|
||||
${ClassName} info = ${className}.to${ClassName}();
|
||||
info.setUpdateBy(SecurityUtils.getUsername());
|
||||
return ${className}Mapper.updateById(info);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int removeById(${pkColumn.javaType} ${pkColumn.javaField}){
|
||||
return ${className}Mapper.deleteById(${pkColumn.javaField});
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public int removeBatch(List<${pkColumn.javaType}> ${pkColumn.javaField}List){
|
||||
return ${className}Mapper.deleteBatchIds(${pkColumn.javaField}List);
|
||||
}
|
||||
|
||||
}
|
||||
86
visual/code-gen/src/main/resources/vm/java/service.java.vm
Normal file
86
visual/code-gen/src/main/resources/vm/java/service.java.vm
Normal file
@@ -0,0 +1,86 @@
|
||||
package ${packageName}.service;
|
||||
|
||||
import ${packageName}.entity.dto.${ClassName}Dto;
|
||||
import ${packageName}.entity.vo.${ClassName}Vo;
|
||||
import ${packageName}.entity.query.${ClassName}Query;
|
||||
#if($table.hasOptionApi())
|
||||
import cn.fateverse.common.core.entity.Option;
|
||||
#end
|
||||
import cn.fateverse.common.core.result.page.TableDataInfo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* ${functionName} Service
|
||||
*
|
||||
* @author ${author}
|
||||
* @date ${dateTime}
|
||||
*/
|
||||
public interface ${ClassName}Service {
|
||||
|
||||
/**
|
||||
* 查询${functionName}
|
||||
*
|
||||
* @param ${pkColumn.javaField} ${functionName}Id
|
||||
* @return ${functionName}
|
||||
*/
|
||||
${ClassName}Vo searchById(${pkColumn.javaType} ${pkColumn.javaField});
|
||||
|
||||
/**
|
||||
* 查询${functionName}列表
|
||||
*
|
||||
* @param query ${functionName}
|
||||
* @return ${functionName}集合
|
||||
*/
|
||||
TableDataInfo<${ClassName}Vo> searchList(${ClassName}Query query);
|
||||
|
||||
/**
|
||||
* 查询${functionName}option
|
||||
*
|
||||
* @return 选项集合
|
||||
*/
|
||||
#if($table.hasOptionApi())
|
||||
List<Option> searchOptionList();
|
||||
#end
|
||||
|
||||
/**
|
||||
* 导出${functionName}列表
|
||||
*
|
||||
* @param query query ${functionName}
|
||||
* @return ${functionName}集合
|
||||
*/
|
||||
List<${ClassName}Vo> exportList(${ClassName}Query query);
|
||||
|
||||
/**
|
||||
* 新增${functionName}
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
int save(${ClassName}Dto ${className});
|
||||
|
||||
/**
|
||||
* 修改${functionName}
|
||||
*
|
||||
* @param ${className} ${functionName}
|
||||
* @return 结果
|
||||
*/
|
||||
int edit(${ClassName}Dto ${className});
|
||||
|
||||
/**
|
||||
* 删除${functionName}
|
||||
*
|
||||
* @param ${pkColumn.javaField} 需要删除的${functionName}Id
|
||||
* @return 结果
|
||||
*/
|
||||
int removeById(${pkColumn.javaType} ${pkColumn.javaField});
|
||||
|
||||
/**
|
||||
* 批量删除${functionName}
|
||||
*
|
||||
* @param ${pkColumn.javaField}List 需要删除的${functionName}Id 集合
|
||||
* @return 结果
|
||||
*/
|
||||
int removeBatch(List<${pkColumn.javaType}> ${pkColumn.javaField}List);
|
||||
|
||||
}
|
||||
54
visual/code-gen/src/main/resources/vm/react/api.ts.vm
Normal file
54
visual/code-gen/src/main/resources/vm/react/api.ts.vm
Normal file
@@ -0,0 +1,54 @@
|
||||
import request from "../../utils/http";
|
||||
|
||||
// 请求${functionName}list
|
||||
export const get${ClassName}List = (params:object|undefined) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
//获取到option列表
|
||||
#if($table.hasOptionApi())
|
||||
export const get${ClassName}Opt = () => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}/option',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
#end
|
||||
|
||||
// 获取${functionName}详情
|
||||
export const get${ClassName}Details = (${className}Id: number) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}/' + ${className}Id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增${functionName}
|
||||
export const add${ClassName} = (data:object) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改${functionName}
|
||||
export const edit${ClassName} = (data: object) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除${functionName}
|
||||
export const del${ClassName} =(${className}Id: number) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}/' + ${className}Id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
10
visual/code-gen/src/main/resources/vm/react/type.ts.vm
Normal file
10
visual/code-gen/src/main/resources/vm/react/type.ts.vm
Normal file
@@ -0,0 +1,10 @@
|
||||
import { IBaseDataType } from "..";
|
||||
|
||||
// 表格${functionName}数据类型规范
|
||||
export interface ${ClassName}Type extends IBaseDataType {
|
||||
#foreach ($column in $columns)
|
||||
#if(!$column.isSuperColumn($column.javaField))
|
||||
${column.javaField}:#if("String" == $column.javaType) string#else number#end,
|
||||
#end
|
||||
#end
|
||||
}
|
||||
323
visual/code-gen/src/main/resources/vm/react/view.tsx.vm
Normal file
323
visual/code-gen/src/main/resources/vm/react/view.tsx.vm
Normal file
@@ -0,0 +1,323 @@
|
||||
import { Button, Col, Form, Input, message, Modal, Radio, Row, Space } from "antd";
|
||||
import { PlusCircleTwoTone, EditTwoTone, DeleteTwoTone, ExclamationCircleOutlined } from '@ant-design/icons'
|
||||
import Table, { ColumnsType } from "antd/lib/table";
|
||||
import { TableRowSelection } from "antd/lib/table/interface";
|
||||
import React, { Fragment, useEffect, useReducer, useState } from "react";
|
||||
import { get${ClassName}List, get${ClassName}Details, add${ClassName}, edit${ClassName}, del${ClassName} } from "../../api/${businessName}";
|
||||
#if($table.hasDictSelect())
|
||||
import { DTag } from "../../components/DTag";
|
||||
import { getCacheType } from "../../utils/cache";
|
||||
#end
|
||||
import SearchForm from "../../components/SearchForm";
|
||||
import { IModalConfig, IResponse } from "../../type";
|
||||
import { DataType } from "../../type/${businessName}";
|
||||
import confirm from "antd/lib/modal/confirm";
|
||||
import { parseDateTime, queryReducer, reducerPagination } from "../../utils/tool";
|
||||
|
||||
|
||||
// 初始化搜索条件
|
||||
const initQueryParams = {
|
||||
#foreach ($column in $columns)
|
||||
#if("1" == $column.isQuery)
|
||||
$column.javaField:#if("String" == $column.javaType) ''#else undefined#end,
|
||||
#end
|
||||
#end
|
||||
pageSize: 10,
|
||||
pageNum: 1
|
||||
}
|
||||
|
||||
const reducerSearch = (state: any, newState: any) =>{
|
||||
return {
|
||||
#foreach ($column in $columns)
|
||||
#if("1" == $column.isQuery)
|
||||
$column.javaField: state.$column.javaField = newState.$column.javaField,
|
||||
#end
|
||||
#end
|
||||
pageSize: state.pageSize = newState.pageSize,
|
||||
pageNum: state.pageNum = newState.pageNum,
|
||||
}
|
||||
}
|
||||
function ${ClassName}() {
|
||||
//搜索条件
|
||||
const [queryParams, setQueryParams] = useReducer( queryReducer ,initQueryParams)
|
||||
#foreach ($column in $columns)
|
||||
#if("select" == $column.htmlType && ${table.strNotEmpty($column.dictType)})
|
||||
//todo字典 下拉框options 动态判断
|
||||
const [${column.javaField}OptionList, set${table.capitalize($column.javaField)}OptionList] = useState<any>([])
|
||||
//单选options
|
||||
const [${column.javaField}RadioOption, set${table.capitalize($column.javaField)}RadioOption] = useState<any>()
|
||||
#end
|
||||
#end
|
||||
//数据总数
|
||||
const [total, setTotal] = useState<number>()
|
||||
//表格list
|
||||
const [list, setList] = useState<Array<DataType>>()
|
||||
//表格数据加载中
|
||||
const [loading, setLoading] = useState<boolean>(false)
|
||||
//表格多选是否勾选
|
||||
const [checkStrictly, setCheckStrictly] = useState(false);
|
||||
//弹窗config
|
||||
const [modalConfig, setModalConfig] = useState<IModalConfig>();
|
||||
//formHooks
|
||||
const [form] = Form.useForm()
|
||||
//所选数据id
|
||||
const [${pkColumn.javaField}, set${table.capitalize($pkColumn.javaField)}] = useState<number>()
|
||||
//所选数据ids
|
||||
const [${pkColumn.javaField}s, set${table.capitalize($pkColumn.javaField)}s] = useState<Array<any>>([])
|
||||
//筛选表单配置
|
||||
const searchConfig = {
|
||||
name: 'searchForm',
|
||||
formItem: [
|
||||
#foreach ($column in $columns)
|
||||
#if("1" == $column.isQuery)
|
||||
{
|
||||
name: '${column.columnComment}',
|
||||
type: '${column.htmlType}',
|
||||
key: '${column.javaField}',
|
||||
#if("select"==$column.htmlType)
|
||||
options: ${column.javaField}OptionList
|
||||
#end
|
||||
},
|
||||
#end
|
||||
#end
|
||||
]
|
||||
} as object
|
||||
// 表格列数据
|
||||
const colums: ColumnsType<DataType> = [
|
||||
#foreach ($column in $columns)
|
||||
#if("1" == $column.isList)
|
||||
{
|
||||
title: '${column.columnComment}',
|
||||
key: '${column.javaField}',
|
||||
dataIndex: '${column.javaField}',
|
||||
#if("select" == $column.htmlType && ${table.strNotEmpty($column.dictType)})
|
||||
render: ((_, { ${column.javaField} }) => {
|
||||
return (
|
||||
<DTag options={${column.javaField}OptionList} state={${column.javaField}} />
|
||||
)
|
||||
})
|
||||
#end
|
||||
},
|
||||
#end
|
||||
#end
|
||||
{
|
||||
title: '操作',
|
||||
key: 'action',
|
||||
align: 'center',
|
||||
render: ((_, record) => (
|
||||
<Space size="middle">
|
||||
<Button type="link" onClick={() => handleEdit(record)}>修改</Button>
|
||||
<Button type="text" onClick={() => handleDel(record)} danger>删除</Button>
|
||||
</Space>
|
||||
))
|
||||
}
|
||||
]
|
||||
//获取${functionName}list
|
||||
const getList = () => {
|
||||
setLoading(true)
|
||||
get${ClassName}List(queryParams).then((res: IResponse) => {
|
||||
setList(res.data.rows)
|
||||
setTotal(res.data.total)
|
||||
setLoading(false)
|
||||
})
|
||||
}
|
||||
// 点击添加
|
||||
const handleAdd = () => {
|
||||
#foreach ($column in $columns)
|
||||
#if("1" == $column.isInsert && "select" == $column.htmlType && ${table.strNotEmpty($column.dictType)})
|
||||
set${table.capitalize($column.javaField)}RadioOption(${column.javaField}OptionList)
|
||||
#end
|
||||
#end
|
||||
setModalConfig({ title: '添加', open: true, confirmLoading: false })
|
||||
}
|
||||
// 点击修改
|
||||
const handleEdit = (row:any) => {
|
||||
const ${pkColumn.javaField} = row.${pkColumn.javaField}|| ${pkColumn.javaField}s[0];
|
||||
set${table.capitalize($pkColumn.javaField)}(${pkColumn.javaField});
|
||||
#foreach ($column in $columns)
|
||||
#if("1" == $column.isInsert && "select" == $column.htmlType && ${table.strNotEmpty($column.dictType)})
|
||||
set${table.capitalize($column.javaField)}RadioOption(${column.javaField}OptionList)
|
||||
#end
|
||||
#end
|
||||
get${ClassName}Details(${pkColumn.javaField}).then((res: IResponse) => {
|
||||
form.setFieldsValue({...res.data})
|
||||
setModalConfig({ title: '修改', open: true, confirmLoading: false })
|
||||
})
|
||||
}
|
||||
// 点击删除
|
||||
const handleDel = (row:any) => {
|
||||
const ${pkColumn.javaField} = row.${pkColumn.javaField} || ${pkColumn.javaField}s[0];
|
||||
confirm({
|
||||
title: '确定删除这一项吗?',
|
||||
icon: <ExclamationCircleOutlined />,
|
||||
content: `详情主键为: `+ row.${pkColumn.javaField},
|
||||
onOk() {
|
||||
del${ClassName}(${pkColumn.javaField}).then((res: IResponse) => {
|
||||
if (res.code === 1000) {
|
||||
message.success(res.msg)
|
||||
getList()
|
||||
} else {
|
||||
message.error(res.msg)
|
||||
}
|
||||
})
|
||||
},
|
||||
onCancel() {
|
||||
},
|
||||
});
|
||||
}
|
||||
// 点击提交
|
||||
const handleSubmit = () => {
|
||||
const obj = form.getFieldsValue();
|
||||
if(modalConfig?.title === '添加') {
|
||||
add${ClassName}(obj).then((res: IResponse) => {
|
||||
setModalConfig({ title: '添加', open: true, confirmLoading: true })
|
||||
if(res.code === 1000) {
|
||||
message.success('添加成功');
|
||||
setModalConfig({ title: '添加', open: true, confirmLoading: false })
|
||||
handleCancel()
|
||||
getList()
|
||||
}else {
|
||||
message.error(res.msg);
|
||||
setModalConfig({ title: '添加', open: true, confirmLoading: false })
|
||||
}
|
||||
})
|
||||
}else {
|
||||
const objE = {${pkColumn.javaField}, ...obj}
|
||||
edit${ClassName}(objE).then((res: IResponse) => {
|
||||
setModalConfig({ title: '修改', open: true, confirmLoading: true })
|
||||
if (res.code === 1000) {
|
||||
message.success('修改成功')
|
||||
setModalConfig({ title: '修改', open: true, confirmLoading: false })
|
||||
handleCancel()
|
||||
getList()
|
||||
} else {
|
||||
message.error(res.msg)
|
||||
setModalConfig({ title: '修改', open: true, confirmLoading: false })
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
// 点击取消
|
||||
const handleCancel = () => {
|
||||
form.resetFields();
|
||||
setModalConfig({ title: '', open: false, confirmLoading: false })
|
||||
}
|
||||
// 分页
|
||||
const pagination = (pageNum: any,pageSize: any) => {
|
||||
new Promise((resolve,reject) => {
|
||||
setQueryParams({type: 'pagination', data: {pageNum,pageSize }})
|
||||
resolve(true)
|
||||
}).then((res: any) => {
|
||||
getList()
|
||||
})
|
||||
}
|
||||
// 行数据选择
|
||||
const rowSelection: TableRowSelection<DataType> = {
|
||||
onChange: (selectedRowKeys, selectedRows) => {
|
||||
console.log(`selectedRowKeys: ${selectedRowKeys}`, 'selectedRows: ', selectedRows);
|
||||
set${table.capitalize($pkColumn.javaField)}s(Array.from(selectedRowKeys))
|
||||
},
|
||||
onSelect: (record, selected, selectedRows) => {
|
||||
console.log(record, selected, selectedRows);
|
||||
},
|
||||
onSelectAll: (selected, selectedRows, changeRows) => {
|
||||
console.log(selected, selectedRows, changeRows);
|
||||
},
|
||||
};
|
||||
|
||||
// 筛选表单提交事件
|
||||
const submit = (v: any) => {
|
||||
const {#foreach ($column in $columns)#if("1" == $column.isQuery)${column.javaField}, #end#end} = v
|
||||
const query = {
|
||||
#foreach ($column in $columns)
|
||||
#if("1" == $column.isQuery)
|
||||
${column.javaField},
|
||||
#end
|
||||
#end
|
||||
pageSize: 10,
|
||||
pageNum: 1
|
||||
}
|
||||
new Promise( (resolve, reject) => {
|
||||
setQueryParams({ type: 'search', data: query, void: reducerSearch})
|
||||
resolve(true)
|
||||
}).then((res)=>{
|
||||
getList()
|
||||
})
|
||||
}
|
||||
|
||||
#if($table.hasDictSelect())
|
||||
//获取筛选表单下拉框缓存数据
|
||||
const getSelectOptions = async () => {
|
||||
#foreach ($column in $columns)
|
||||
#if("1" == $column.isInsert && "select" == $column.htmlType && ${table.strNotEmpty($column.dictType)})
|
||||
const ${column.javaField}Options = await getCacheType('${column.dictType}').then((options: any) => {
|
||||
return options
|
||||
})
|
||||
set${table.capitalize($column.javaField)}OptionList(${column.javaField}Options)
|
||||
#end
|
||||
#end
|
||||
}
|
||||
#end
|
||||
useEffect(() => {
|
||||
getSelectOptions();
|
||||
getList()
|
||||
}, [])
|
||||
return (
|
||||
<Fragment>
|
||||
<SearchForm config={searchConfig} submit={submit}/>
|
||||
<div className="table-headbtn-box">
|
||||
<Button icon={<PlusCircleTwoTone />} type="primary" size="middle" className="table-headbtn" onClick={handleAdd}>添加</Button>
|
||||
<Button icon={<EditTwoTone />} type="primary" ghost className="table-headbtn" onClick={handleEdit} disabled={${pkColumn.javaField}s.length != 1} >修改</Button>
|
||||
<Button icon={<DeleteTwoTone />} type="primary" danger className="table-headbtn" disabled={${pkColumn.javaField}s.length != 1} >删除</Button>
|
||||
</div>
|
||||
<Table
|
||||
columns={colums}
|
||||
dataSource={list}
|
||||
loading={loading}
|
||||
rowSelection={{ ...rowSelection, checkStrictly }}
|
||||
pagination={{ total, onChange: pagination }}
|
||||
rowKey='${pkColumn.javaField}'
|
||||
/>
|
||||
<Modal
|
||||
open={modalConfig?.open}
|
||||
title={modalConfig?.title}
|
||||
onOk={handleSubmit}
|
||||
onCancel={handleCancel}
|
||||
confirmLoading={modalConfig?.confirmLoading}
|
||||
width={700}
|
||||
>
|
||||
<Form
|
||||
name="form"
|
||||
form={form}
|
||||
labelAlign='right'
|
||||
labelCol={{
|
||||
span: 6,
|
||||
offset: 0
|
||||
}}
|
||||
>
|
||||
<Row>
|
||||
#foreach ($column in $columns)
|
||||
#if("1" == $column.isInsert || "1" == $column.isEdit)
|
||||
<Col span={12}>
|
||||
<Form.Item
|
||||
label="${column.columnComment}"
|
||||
name="${column.javaField}"
|
||||
required
|
||||
>
|
||||
#if("select" == $column.htmlType && ${table.strNotEmpty($column.dictType)})
|
||||
<Radio.Group options={${column.javaField}RadioOption} />
|
||||
#else
|
||||
<Input placeholder="请输入${column.columnComment}" />
|
||||
#end
|
||||
</Form.Item>
|
||||
</Col>
|
||||
#end
|
||||
#end
|
||||
</Row>
|
||||
</Form>
|
||||
</Modal>
|
||||
</Fragment>
|
||||
)
|
||||
}
|
||||
|
||||
export default ${ClassName};
|
||||
55
visual/code-gen/src/main/resources/vm/vue/api.js.vm
Normal file
55
visual/code-gen/src/main/resources/vm/vue/api.js.vm
Normal file
@@ -0,0 +1,55 @@
|
||||
import request from '@/utils/request.js'
|
||||
|
||||
// 请求${functionName}list
|
||||
export const get${ClassName}List = (params) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}',
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
//获取到option列表
|
||||
#if($table.hasOptionApi())
|
||||
export const get${ClassName}Opt = () => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}/option',
|
||||
method: 'get',
|
||||
})
|
||||
}
|
||||
#end
|
||||
|
||||
// 获取${functionName}详情
|
||||
export const get${ClassName}Details = (${className}Id) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}/' + ${className}Id,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
// 新增${functionName}
|
||||
export const add${ClassName} = (data) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改${functionName}
|
||||
export const edit${ClassName} = (data) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}',
|
||||
method: 'put',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 删除${functionName}
|
||||
export const del${ClassName} =(${className}Id) => {
|
||||
return request({
|
||||
url: '/${serviceName}/${moduleName}/${businessName}/' + ${className}Id,
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
353
visual/code-gen/src/main/resources/vm/vue/index.vue.vm
Normal file
353
visual/code-gen/src/main/resources/vm/vue/index.vue.vm
Normal file
@@ -0,0 +1,353 @@
|
||||
<template>
|
||||
<el-form :model="queryParams" inline class="query-form" ref="queryForm">
|
||||
#foreach($column in $columns)
|
||||
#if($column.query())
|
||||
#set($comment=$column.comment())
|
||||
#if($column.isInput())
|
||||
<el-form-item label="${comment}" prop="${column.javaField}">
|
||||
<el-input v-model="queryParams.${column.javaField}" placeholder="请输${comment}"></el-input>
|
||||
</el-form-item>
|
||||
#elseif(($column.isSelect() || $column.isRadio()) && $column.isDict())
|
||||
<el-form-item label="${comment}" prop="${column.javaField}">
|
||||
<el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable >
|
||||
<el-option
|
||||
v-for="dict in cacheStore.getDict('${column.dictType}')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
#elseif(($column.isSelect() || $column.isRadio()) && !$column.isDict())
|
||||
<el-form-item label="${comment}" prop="${column.javaField}">
|
||||
<el-select v-model="queryParams.${column.javaField}" placeholder="请选择${comment}" clearable >
|
||||
<el-option label="请选择字典生成" value="" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
#elseif($column.isDatetime() && !$column.isBetween())
|
||||
<el-form-item label="${comment}" prop="${column.javaField}">
|
||||
<el-date-picker clearable size="small"
|
||||
v-model="queryParams.${column.javaField}"
|
||||
type="date"
|
||||
value-format="yyyy-MM-dd"
|
||||
placeholder="选择${comment}">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
#elseif($column.isDatetime() && $column.isBetween())
|
||||
<el-form-item label="${comment}">
|
||||
<el-date-picker
|
||||
v-model="daterange${column.getAttrName()}"
|
||||
size="small"
|
||||
style="width: 240px"
|
||||
value-format="yyyy-MM-dd"
|
||||
type="daterange"
|
||||
range-separator="-"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期"
|
||||
></el-date-picker>
|
||||
</el-form-item>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
<el-form-item>
|
||||
<el-button type="primary" @click="handleSearch()" :icon="Search">搜索</el-button>
|
||||
<el-button @click="handleReset" :icon="Refresh">重置</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<div class="query-btn">
|
||||
<el-button type="primary" v-perm="['${permissionPrefix}:add']" @click="handleAdd" :icon="Plus" plain>新增</el-button>
|
||||
<el-button type="danger" v-perm="['${permissionPrefix}:del']" @click="handleDelete" :icon="Delete" plain :disabled="disabled">删除</el-button>
|
||||
<el-button type="warning" v-perm="['${permissionPrefix}:export']" @click="handleExport" :icon="Download" plain>导出</el-button>
|
||||
</div>
|
||||
<div class="table">
|
||||
<el-table
|
||||
:data="list"
|
||||
row-key="${pkColumn.javaField}"
|
||||
:lazy="true"
|
||||
ref="singleTable"
|
||||
v-loading="loading"
|
||||
@select="handleSelect"
|
||||
>
|
||||
<el-table-column type="selection" width="55"/>
|
||||
<el-table-column label="序号" type="index" class-name="allowDrag"/>
|
||||
#foreach($column in $columns)
|
||||
#if($column.list())
|
||||
#set($comment=$column.comment())
|
||||
#if($column.listAndDict())
|
||||
<el-table-column prop="${column.javaField}" label="${comment}" align="center">
|
||||
<template #default="scope">
|
||||
<tag dict-type="${column.dictType}" :value="scope.row.${column.javaField}"/>
|
||||
</template>
|
||||
</el-table-column>
|
||||
#else
|
||||
<el-table-column prop="${column.javaField}" label="${comment}" align="center"/>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
<el-table-column label="操作">
|
||||
<template #default="scope">
|
||||
<el-button type="text" size="mini" v-perm="['${permissionPrefix}:edit']"
|
||||
@click="handleEdit(scope.row.${pkColumn.javaField})" :icon="Edit">编辑
|
||||
</el-button>
|
||||
<el-button type="text" size="mini" v-perm="['${permissionPrefix}:del']" @click="handleDelete(scope.row)"
|
||||
:icon="Delete">删除
|
||||
</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
<el-config-provider>
|
||||
<el-pagination
|
||||
v-model:current-page="pageInfo.pageNum"
|
||||
v-model:page-size="pageInfo.pageSize"
|
||||
:page-sizes="[10, 20, 30, 40,50]"
|
||||
:background="true"
|
||||
layout="->,total, sizes, prev, pager, next, jumper"
|
||||
:total="total"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
/>
|
||||
</el-config-provider>
|
||||
|
||||
<el-dialog v-model="isVisited" :title="title" width="900px">
|
||||
<el-form :model="form" ref="formInstance" :rules="formRules" label-width="100px" class="dialog-form">
|
||||
<el-row>
|
||||
#foreach($column in $columns)
|
||||
#if($column.from())
|
||||
#set($comment=$column.comment())
|
||||
#if($velocityCount % 2 == 1)
|
||||
<el-col :span="11" :offset="2">
|
||||
#else
|
||||
<el-col :span="11">
|
||||
#end
|
||||
#if($column.isInput())
|
||||
<el-form-item label="${comment}" prop="${column.javaField}">
|
||||
<el-input v-model="form.${column.javaField}" placeholder="请输入${comment}"></el-input>
|
||||
</el-form-item>
|
||||
#elseif($column.isSelect() && $column.isDict())
|
||||
<el-form-item label="${comment}" prop="${column.javaField}">
|
||||
<el-select v-model="form.${column.javaField}" placeholder="请选择${comment}" clearable >
|
||||
<el-option
|
||||
v-for="dict in cacheStore.getDict('${column.dictType}')"
|
||||
:key="dict.value"
|
||||
:label="dict.label"
|
||||
:value="dict.value"
|
||||
/>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
#elseif($column.isSelect() && !$column.isDict())
|
||||
<el-form-item label="${comment}" prop="${column.javaField}">
|
||||
<el-select v-model="form.${column.javaField}" placeholder="请选择${comment}">
|
||||
<el-option label="请选择字典生成" value="" />
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
#end
|
||||
</el-col>
|
||||
#end
|
||||
#end
|
||||
</el-row>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<span>
|
||||
<el-button @click="handleCancel">取消</el-button>
|
||||
<el-button type="primary" @click="handleSubmit(formInstance)">确定</el-button>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { get${ClassName}List, get${ClassName}Details, add${ClassName}, edit${ClassName}, del${ClassName} } from "@/api/${moduleName}/${businessName}";
|
||||
import {Search, Refresh, Delete, Plus, Edit, Download} from '@element-plus/icons-vue'
|
||||
import {ElMessage, ElMessageBox} from "element-plus";
|
||||
#if($table.hasDictSelect())
|
||||
import { useCacheStore } from '@/stores/cache.js'
|
||||
const cacheStore = useCacheStore()
|
||||
cacheStore.setCacheKey([${table.getDictType()}])
|
||||
#end
|
||||
#if($table.hasListAndDict())
|
||||
import Tag from '@/components/Tag.vue'
|
||||
#end
|
||||
import {downLoadExcel} from "@/utils/downloadZip";
|
||||
//查询参数
|
||||
const queryParams = reactive({
|
||||
#foreach ($column in $columns)
|
||||
#if($column.query())
|
||||
$column.javaField:#if("String" == $column.javaType) ''#else undefined#end,
|
||||
#end
|
||||
#end
|
||||
})
|
||||
//页面信息
|
||||
const pageInfo = reactive({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
})
|
||||
const disabled = ref(true)
|
||||
const list = ref([])
|
||||
const queryForm = ref([])
|
||||
const loading = ref(true)
|
||||
const total = ref()
|
||||
const title = ref('')
|
||||
const isVisited = ref(false)
|
||||
const form = ref()
|
||||
const formInstance = ref()
|
||||
const formRules = ref({
|
||||
#foreach ($column in $columns)
|
||||
#if($column.required())
|
||||
#set($comment=$column.comment())
|
||||
$column.javaField: [
|
||||
{ required: true, message: "${comment}不能为空", trigger: #if($column.htmlType == "select")"change"#else"blur"#end },
|
||||
#if($column.isRegular != 1)
|
||||
{ pattern: /${column.regular}/, message: '${column.columnComment}格式有误', trigger:"blur"},
|
||||
#end
|
||||
]#if($velocityCount != $columns.size()),#end
|
||||
|
||||
#end
|
||||
#end
|
||||
})
|
||||
//搜索功能
|
||||
const handleSearch = () => {
|
||||
getList()
|
||||
}
|
||||
//重置搜索
|
||||
const handleReset = () => {
|
||||
queryForm.value.resetFields()
|
||||
getList()
|
||||
}
|
||||
//获取数据
|
||||
const getList = async () => {
|
||||
let params = {
|
||||
...queryParams,
|
||||
...pageInfo
|
||||
}
|
||||
get${ClassName}List(params).then(res => {
|
||||
if (res.code === 1000) {
|
||||
list.value = res.data.rows
|
||||
total.value = res.data.total
|
||||
loading.value = false
|
||||
} else {
|
||||
ElMessage.error(res.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
//重置from表单
|
||||
const restFrom = () => {
|
||||
form.value = {
|
||||
#foreach ($column in $columns)
|
||||
#if($column.from())
|
||||
#if($column.fromValue())
|
||||
#if($column.isRadio())
|
||||
$column.javaField: ${column.getDefaultRadio()}#if($velocityCount != $columns.size()),#end
|
||||
#elseif($column.isCheckbox())
|
||||
$column.javaField: []#if($velocityCount != $columns.size()),#end
|
||||
#else
|
||||
$column.javaField: null#if($velocityCount != $columns.size()),#end
|
||||
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
}
|
||||
}
|
||||
//取消
|
||||
const handleCancel = () => {
|
||||
restFrom()
|
||||
isVisited.value = false
|
||||
}
|
||||
//提交
|
||||
const handleSubmit = async (instance) => {
|
||||
if (!instance) return
|
||||
instance.validate(async (valid) => {
|
||||
if (!valid) return
|
||||
if (title.value === '新增${functionName}') {
|
||||
add${ClassName}(form.value).then(res => {
|
||||
if (res.code === 1000) {
|
||||
ElMessage.success(res.msg)
|
||||
getList()
|
||||
isVisited.value = false
|
||||
} else {
|
||||
ElMessage.error(res.msg)
|
||||
}
|
||||
})
|
||||
} else {
|
||||
edit${ClassName}(form.value).then(res => {
|
||||
if (res.code === 1000) {
|
||||
ElMessage.success(res.msg)
|
||||
getList()
|
||||
isVisited.value = false
|
||||
} else {
|
||||
ElMessage.error(res.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
//添加
|
||||
const handleAdd = async () => {
|
||||
restFrom()
|
||||
title.value = "新增${functionName}"
|
||||
isVisited.value = true
|
||||
}
|
||||
//修改
|
||||
const handleEdit = async (${pkColumn.javaField}) => {
|
||||
restFrom()
|
||||
get${ClassName}Details(${pkColumn.javaField}).then(res => {
|
||||
if (res.code === 1000) {
|
||||
form.value = res.data
|
||||
title.value = "编辑${functionName}"
|
||||
isVisited.value = true
|
||||
} else {
|
||||
ElMessage.error(res.msg)
|
||||
}
|
||||
})
|
||||
}
|
||||
//导出excel
|
||||
const handleExport = () => {
|
||||
downLoadExcel('/${serviceName}/${moduleName}/${businessName}/export',{...queryParams})
|
||||
}
|
||||
|
||||
//勾选table数据行的 Checkbox
|
||||
const handleSelect = async (selection, row) => {
|
||||
if (selection.length !== 0) {
|
||||
disabled.value = false
|
||||
${pkColumn.javaField}.value = row.${pkColumn.javaField}
|
||||
if (selection.length > 1) {
|
||||
const del_row = selection.shift();
|
||||
singleTable.value.toggleRowSelection(del_row, false);
|
||||
}
|
||||
} else {
|
||||
disabled.value = true
|
||||
}
|
||||
}
|
||||
|
||||
//切换每页显示条数
|
||||
const handleSizeChange = async (val) => {
|
||||
pageInfo.value.pageSize = val
|
||||
await getList()
|
||||
}
|
||||
|
||||
//点击页码进行分页功能
|
||||
const handleCurrentChange = async (val) => {
|
||||
pageInfo.value.pageNum = val
|
||||
await getList()
|
||||
}
|
||||
//删除
|
||||
const handleDelete = async ({dsName, ${pkColumn.javaField}}) => {
|
||||
ElMessageBox.confirm(`确认删除名称为${dsName}的${functionName}吗?`, '系统提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
del${ClassName}(${pkColumn.javaField}).then(res => {
|
||||
if (res.code === 1000) {
|
||||
ElMessage.success(res.msg)
|
||||
getList()
|
||||
} else {
|
||||
ElMessage.error(res.msg)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
getList()
|
||||
</script>
|
||||
121
visual/code-gen/src/main/resources/vm/xml/mapperMySql.xml.vm
Normal file
121
visual/code-gen/src/main/resources/vm/xml/mapperMySql.xml.vm
Normal file
@@ -0,0 +1,121 @@
|
||||
<?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="${packageName}.mapper.${ClassName}Mapper">
|
||||
|
||||
<resultMap id="${className}Result" type="${packageName}.entity.${ClassName}">
|
||||
<id column="${pkColumn.columnName}" property="${pkColumn.javaField}"/>
|
||||
#foreach($column in $columns)
|
||||
#if("1" != $column.isPk)
|
||||
<result column="${column.columnName}" property="${column.javaField}"/>
|
||||
#end
|
||||
#end
|
||||
</resultMap>
|
||||
<sql id="selectVo">
|
||||
select #foreach($column in $columns)${column.columnName}#if($velocityCount != $columns.size()), #end
|
||||
#end
|
||||
from ${tableName}
|
||||
</sql>
|
||||
|
||||
|
||||
|
||||
<select id="selectList" resultMap="${className}Result">
|
||||
<include refid="selectVo"/>
|
||||
<where>
|
||||
#foreach($column in $columns)
|
||||
#set($queryType=$column.queryType)
|
||||
#set($javaField=$column.javaField)
|
||||
#set($javaType=$column.javaType)
|
||||
#set($columnName=$column.columnName)
|
||||
#if("1" == $column.isQuery)
|
||||
#if($column.queryType == "EQ")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if>
|
||||
#elseif($queryType == "NE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if>
|
||||
#elseif($queryType == "GT")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName > #{$javaField}</if>
|
||||
#elseif($queryType == "GTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName >= #{$javaField}</if>
|
||||
#elseif($queryType == "LT")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName < #{$javaField}</if>
|
||||
#elseif($queryType == "LTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName <= #{$javaField}</if>
|
||||
#elseif($queryType == "LIKE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat('%', #{$javaField}, '%')</if>
|
||||
#elseif($queryType == "BETWEEN")
|
||||
#set($AttrName=${table.capitalize($javaField)})
|
||||
<if test="begin${AttrName} != null and end${AttrName} != null"> and $columnName between #{begin${AttrName}} and #{end${AttrName}}</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectById" resultMap="${className}Result">
|
||||
<include refid="selectVo"/>
|
||||
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||
</select>
|
||||
|
||||
<insert id="insert" #if($pkColumn.increment)useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
|
||||
insert into ${tableName}
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
#foreach($column in $columns)
|
||||
#if(!$column.isSuperColumn($column.javaField))
|
||||
#if(($column.columnName != $pkColumn.columnName || !$pkColumn.increment) && $column.isInsert == 1)
|
||||
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#if($table.hasCreateXMLColumns())
|
||||
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||
<if test="createTime != null ">create_time,</if>
|
||||
#end
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
#foreach($column in $columns)
|
||||
#if(!$column.isSuperColumn($column.javaField))
|
||||
#if(($column.columnName != $pkColumn.columnName || !$pkColumn.increment) && $column.isInsert == 1)
|
||||
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#if($table.hasCreateXMLColumns())
|
||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||
<if test="createTime != null ">#{createTime},</if>
|
||||
#end
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="update">
|
||||
update ${tableName}
|
||||
<set>
|
||||
#foreach($column in $columns)
|
||||
#if(!$column.isSuperColumn($column.javaField))
|
||||
#if(($column.columnName != $pkColumn.columnName || !$pkColumn.increment) && $column.isInsert == 1)
|
||||
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#if($table.hasUpdateXMLColumns())
|
||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null ">update_time = #{updateTime},</if>
|
||||
#end
|
||||
</set>
|
||||
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||
</update>
|
||||
|
||||
<delete id="deleteById">
|
||||
delete from ${tableName}
|
||||
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteBatchByIdList" parameterType="${pkColumn.javaType}">
|
||||
delete from ${tableName}
|
||||
where ${pkColumn.columnName} in
|
||||
<foreach collection="list" open="(" close=")" separator="," item="${pkColumn.javaField}">
|
||||
#{${pkColumn.javaField}}
|
||||
</foreach>
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
121
visual/code-gen/src/main/resources/vm/xml/mapperOracle.xml.vm
Normal file
121
visual/code-gen/src/main/resources/vm/xml/mapperOracle.xml.vm
Normal file
@@ -0,0 +1,121 @@
|
||||
<?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="${packageName}.mapper.${ClassName}Mapper">
|
||||
|
||||
<resultMap id="${className}Result" type="${packageName}.entity.${ClassName}">
|
||||
<id column="${pkColumn.columnName}" property="${pkColumn.javaField}"/>
|
||||
#foreach($column in $columns)
|
||||
#if("1" != $column.isPk)
|
||||
<result column="${column.columnName}" property="${column.javaField}"/>
|
||||
#end
|
||||
#end
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectVo">
|
||||
select #foreach($column in $columns)${column.columnName}#if($velocityCount != $columns.size()), #end
|
||||
#end
|
||||
from ${tableName}
|
||||
</sql>
|
||||
|
||||
|
||||
|
||||
<select id="selectList" resultMap="${className}Result">
|
||||
<include refid="selectVo"/>
|
||||
<where>
|
||||
#foreach($column in $columns)
|
||||
#set($queryType=$column.queryType)
|
||||
#set($javaField=$column.javaField)
|
||||
#set($javaType=$column.javaType)
|
||||
#set($columnName=$column.columnName)
|
||||
#if("1" == $column.isQuery)
|
||||
#if($column.queryType == "EQ")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName = #{$javaField}</if>
|
||||
#elseif($queryType == "NE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName != #{$javaField}</if>
|
||||
#elseif($queryType == "GT")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName > #{$javaField}</if>
|
||||
#elseif($queryType == "GTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName >= #{$javaField}</if>
|
||||
#elseif($queryType == "LT")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName < #{$javaField}</if>
|
||||
#elseif($queryType == "LTE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName <= #{$javaField}</if>
|
||||
#elseif($queryType == "LIKE")
|
||||
<if test="$javaField != null #if($javaType == 'String' ) and $javaField.trim() != ''#end"> and $columnName like concat(concat('%', #{$javaField}),'%')</if>
|
||||
#elseif($queryType == "BETWEEN")
|
||||
#set($AttrName=${table.capitalize($javaField)})
|
||||
<if test="begin${AttrName} != null and end${AttrName} != null"> and $columnName between #{begin${AttrName}} and #{end${AttrName}}</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
</where>
|
||||
</select>
|
||||
|
||||
<select id="selectById" resultMap="${className}Result">
|
||||
<include refid="selectVo"/>
|
||||
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||
</select>
|
||||
|
||||
<insert id="insert${ClassName}" #if($pkColumn.increment)useGeneratedKeys="true" keyProperty="$pkColumn.javaField"#end>
|
||||
insert into ${tableName}
|
||||
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||
#foreach($column in $columns)
|
||||
#if(!$column.isSuperColumn($column.javaField))
|
||||
#if(($column.columnName != $pkColumn.columnName || !$pkColumn.increment) && $column.isInsert == 1)
|
||||
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName,</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#if($table.hasCreateXMLColumns())
|
||||
<if test="createBy != null and createBy != ''">create_by,</if>
|
||||
<if test="createTime != null ">create_time,</if>
|
||||
#end
|
||||
</trim>
|
||||
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||
#foreach($column in $columns)
|
||||
#if(!$column.isSuperColumn($column.javaField))
|
||||
#if(($column.columnName != $pkColumn.columnName || !$pkColumn.increment) && $column.isInsert == 1)
|
||||
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">#{$column.javaField},</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#if($table.hasCreateXMLColumns())
|
||||
<if test="createBy != null and createBy != ''">#{createBy},</if>
|
||||
<if test="createTime != null ">#{createTime},</if>
|
||||
#end
|
||||
</trim>
|
||||
</insert>
|
||||
|
||||
<update id="update">
|
||||
update ${tableName}
|
||||
<set>
|
||||
#foreach($column in $columns)
|
||||
#if(!$column.isSuperColumn($column.javaField))
|
||||
#if(($column.columnName != $pkColumn.columnName || !$pkColumn.increment) && $column.isInsert == 1)
|
||||
<if test="$column.javaField != null#if($column.javaType == 'String' && $column.required) and $column.javaField != ''#end">$column.columnName = #{$column.javaField},</if>
|
||||
#end
|
||||
#end
|
||||
#end
|
||||
#if($table.hasUpdateXMLColumns())
|
||||
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
|
||||
<if test="updateTime != null ">update_time = #{updateTime},</if>
|
||||
#end
|
||||
</set>
|
||||
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||
</update>
|
||||
|
||||
<delete id="deleteById">
|
||||
delete from ${tableName}
|
||||
where ${pkColumn.columnName} = #{${pkColumn.javaField}}
|
||||
</delete>
|
||||
|
||||
<delete id="deleteBatchByIdList" parameterType="${pkColumn.javaType}">
|
||||
delete from ${tableName}
|
||||
where ${pkColumn.columnName} in
|
||||
<foreach collection="list" open="(" close=")" separator="," item="${pkColumn.javaField}">
|
||||
#{${pkColumn.javaField}}
|
||||
</foreach>
|
||||
</delete>
|
||||
</mapper>
|
||||
Reference in New Issue
Block a user