基于mybatis的java代码生成存储过程

database

 问题:

  项目中目前使用mybatis操作数据库,使用插件(mybatis-generator)自动生成代码,对于增改查,使用存储过程实现了一版本,方便使用。

       

insert代码生成器用法:
insert_code_generator( in_var_tbl_name   [要插入的表名] )

  1DROPPROCEDUREIFEXISTS insert_code_generator;

2 DELIMITER %%

3CREATEPROCEDURE insert_code_generator(in_var_tbl_name VARCHAR(200))

4 label:BEGIN

5-- ################################################################################################################

6-- #################### 支持批量插入:mapper-dao-service生成 select 代码 #########################

7-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

8-- ################################################################################################################

9SET group_concat_max_len =4294967295;

10

11-- #----------#配置项#-----------------------#

12-- 表名映射为驼峰形式,tbl_cdk_user_info -> userInfo,默认去除表名的tbl前缀

13-- SET @noStrInTbl="tbl_cbm";

14SET@noStrInTbl="tbl";

15

16-- #----------------------------------------#

17

18

19SET@in_tbl_name=in_var_tbl_name;

20SET@in_db_name=DATABASE();

21if (in_var_tbl_name ISNULLOR in_var_tbl_name=""OR in_var_tbl_name="") then

22SELECT"入参in_var_tbl_name表名不能为空"AS"error";

23 leave label;

24ENDif;

25

26

27

28

29-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

30-- ########### 生成引用

31-- 生成service层实体类以备加Dao:CdkmallGoodsApply

32SET@objName=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@in_tbl_name, @noStrInTbl, ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","") ;

33-- 生成service层实体类以备接Dao: cdkmallGoodsApply

34SET@objRefName=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@in_tbl_name, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","") ;

35

36SELECT CONCAT_WS("","/* 新建对象*/

",@objName,"",@objRefName,"= new ",@objName,"();

/*设置属性*/

",

37 group_concat(

38/* cdkmallGoodsApply.setUserUuid(userUuid); */

39 CONCAT_WS( ""

40 ,CONCAT_WS("","/*",c.column_comment," | ",c.column_type," | ",if(c.is_nullable="YES","可空","非空"),if(c.extra="","",CONCAT_WS(""," | ",c.extra))," | ","默认=",ifnull(c.COLUMN_DEFAULT,"null")," */

")

41 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TABLE_NAME, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

42 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(CONCAT_WS("",".set","_",c.column_name), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

43 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(CONCAT_WS("","(",c.column_name,");"), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

44 ) SEPARATOR "

"

45 )

46 ) INTO@insert_code

47FROM

48 information_schema.COLUMNS c

49WHERE

50 c.table_schema=DATABASE() AND

51 c.TABLE_NAME =@in_tbl_name;

52

53SET@insert_domain_code="

54public void insert@objName(@objName @objRefName){

55 int insertResult = 0;

56 try {

57 insertResult = @objRefNameDao.insert(@objRefName);

58 } catch (DuplicateKeyException e) {

59 bizLogger.error(" insert @in_tbl_name duplicateKeyException ,@objRefName : "

60 + @objRefName.toString());

61 throw new BusinessException(ResultInfo.SYS_INNER_ERROR.getCode(),

62 ResultInfo.SYS_INNER_ERROR.getDesc() + " duplicate error,bizId=" + BizLogUtils.getValueOfBizId());

63 }

64 if (insertResult != 1) {

65 bizLogger.error("insertResult=" + insertResult + ", insert result != 1 ,@objRefName : "

66 + @objRefName.toString());

67 throw new BusinessException(ResultInfo.SYS_INNER_ERROR.getCode(),

68 ResultInfo.SYS_INNER_ERROR.getDesc() + " insert fail [insertResult,bizId]="+insertResult+ BizLogUtils.getValueOfBizId());

69 }

70}

71";

72

73SELECTREPLACE(@insert_domain_code,"@objName",@objName) INTO@insert_domain_code;

74SELECTREPLACE(@insert_domain_code,"@objRefName",@objRefName) INTO@insert_domain_code;

75SELECTREPLACE(@insert_domain_code,"@in_tbl_name",@in_tbl_name) INTO@insert_domain_code;

76

77

78-- 引入所有的domain 和dao -- 开始 --

79SELECT

80 GROUP_CONCAT(

81 CONCAT_WS("","@Autowired

","private "

82 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, @noStrInTbl, ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Domain "

83 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Domain;

")

84 SEPARATOR "

"

85 ) INTO@autowired_all_domain

86

87FROM information_schema.`TABLES` t

88WHERE TABLE_SCHEMA=DATABASE()and TABLE_NAME NOTIN("fixed_col_table");

89

90SELECT

91 GROUP_CONCAT(

92 CONCAT_WS("","@Autowired

","private "

93 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, @noStrInTbl, ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Dao "

94 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Dao;

")

95 SEPARATOR "

"

96 ) INTO@autowired_all_dao

97

98FROM information_schema.`TABLES` t

99WHERE TABLE_SCHEMA=DATABASE() and TABLE_NAME NOTIN("fixed_col_table") ;

100

101

102

103-- #############################################################

104-- 以下为动态批量insert需要使用

105-- #############################################################

106

107DROPTABLEifEXISTS fixed_col_table;

108

109CREATEtableifnotexists fixed_col_table(

110 col VARCHAR(256) NOTNULL COMMENT "字段名",

111 col_type VARCHAR(256) COMMENT "字段类型,static,dynamic,list",

112 data_type VARCHAR(256) COMMENT "数据类型;如:int",

113 jdbc_type VARCHAR(256) COMMENT "jdbc类型:int->INTEGER,VARCHAR",

114 java_type VARCHAR(256) COMMENT "java类型:datetime - > date,tinyint -> Byte",

115 col_for_query VARCHAR(256) COMMENT "idForQuery",

116 col_for_query_jdbc VARCHAR(256) COMMENT "#{idForQueryjdbcType=INTEGER} ",

117 col_comment VARCHAR(512) COMMENT "字段注释"

118);

119

120INSERTINTO fixed_col_table (col,data_type)

121SELECT

122 t1.column_name,t1.data_type

123FROM

124 information_schema.COLUMNS t1

125WHERE

126 t1.table_schema=@in_db_nameAND

127 t1.TABLE_NAME =@in_tbl_name

128;

129

130-- 转驼峰

131UPDATE fixed_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

132 ,"");

133

134

135

136-- 转换成jdbc类型

137UPDATE fixed_col_table SET jdbc_type=

138case data_type

139when"datetime"then"TIMESTAMP"

140when"tinyint"then"TINYINT"

141when"bigint"then"BIGINT"

142when"int"then"INTEGER"

143when"float"then"REAL"

144when"varchar"then"VARCHAR"

145END;

146

147-- java类型转换

148UPDATE fixed_col_table SET java_type=

149case data_type

150when"datetime"then"Date"

151when"tinyint"then"Byte"

152when"bigint"then"Long"

153when"int"then"Integer"

154when"float"then"REAL"

155when"varchar"then"String"

156END;

157

158

159-- 组成jdbc字符串:id --> #{idForQueryjdbcType=INTEGER}

160UPDATE fixed_col_table SET col_for_query_jdbc=CONCAT_WS("","#{item.",col_for_query,",jdbcType=",jdbc_type,"} ");

161

162/*

163col col_type data_type jdbc_type java_type col_for_query col_for_query_jdbc col_comment

164name static varchar VARCHAR String nameForQuery #{nameForQuery,jdbcType=VARCHAR} 卡面ip名称 | 非空 | | 索引 | idx_face_ip_name(name,status)

165name dynamic varchar VARCHAR String nameForDynamicQuery #{nameForDynamicQuery,jdbcType=VARCHAR} 卡面ip名称 | 非空 | | 索引 | idx_face_ip_name(name,status)

166create_time list datetime TIMESTAMP List<Date> createTimeForQueryList #{createTimeForQueryList,jdbcType=TIMESTAMP} 创建时间 | 非空 | 无索引

167

168*/

169

170

171-- select * from fixed_col_table;

172

173SELECT

174 GROUP_CONCAT(t1.column_name SEPARATOR ", ") INTO@allColumnList

175FROM

176 information_schema.COLUMNS t1

177WHERE

178 t1.table_schema=@in_db_nameAND

179 t1.TABLE_NAME =@in_tbl_name

180;

181

182-- #{id,jdbcType=INTEGER} ,#{name,jdbcType=VARCHAR} ,#{status,jdbcType=TINYINT} ,#{validStartTime,jdbcType=TIMESTAMP}

183SELECT GROUP_CONCAT(col_for_query_jdbc) INTO@jdbcColumnList

184FROM fixed_col_table;

185

186-- select @jdbcColumnList;

187

188-- id,name,status,valid_start_time,valid_end_time,create_time,last_update_time

189SELECT GROUP_CONCAT(col) INTO@allColumnList

190FROM fixed_col_table;

191

192-- select @allColumnList;

193

194SET@mapper_code="

195@Insert({

196 "<script> ",

197 "insert into @in_tbl_name ( @allColumnList ) values",

198 "<foreach collection="@objRefNameList" item="item" index="index" open="(" separator="),(" close=")">",

199 "@jdbcColumnList ",

200 "</foreach>",

201 "</script>"

202})

203int batchInsert(@Param("@objRefNameList") List<@objName> @objRefNameList);

204";

205

206SELECTREPLACE(@mapper_code,"@in_tbl_name",@in_tbl_name) INTO@mapper_code;

207SELECTREPLACE(@mapper_code,"@allColumnList",@allColumnList) INTO@mapper_code;

208SELECTREPLACE(@mapper_code,"@objRefName",@objRefName) INTO@mapper_code;

209SELECTREPLACE(@mapper_code,"@jdbcColumnList",@jdbcColumnList) INTO@mapper_code;

210SELECTREPLACE(@mapper_code,"@objName",@objName) INTO@mapper_code;

211

212-- SELECT @mapper_code;

213

214

215SET@dao_code="

216public int batchInsert(List<@objName> @objRefNameList){

217 if(@objRefNameList == null || @objRefNameList.size()==0){

218 throw new BusinessException(ResultInfo.SYS_INNER_ERROR.getCode(),ResultInfo.SYS_INNER_ERROR.getDesc() + ",batch insert empty ,bizId="+BizLogUtils.getValueOfBizId());

219 }

220 return mapper.batchInsert(@objRefNameList);

221}

222";

223

224SELECTREPLACE(@dao_code,"@objName",@objName) INTO@dao_code;

225SELECTREPLACE(@dao_code,"@objRefName",@objRefName) INTO@dao_code;

226

227-- SELECT @dao_code;

228

229SET@domain_code="

230public void batchInsert@objName(){

231 int insertResult = 0;

232 List<@objName> @objRefNameList = new ArrayList<>();

233

234 for(int i=0;i<1;i++){

235 @insert_code

236 @objRefNameList.add( @objRefName);

237 }

238

239 try {

240 insertResult = @objRefNameDao.batchInsert(@objRefNameList);

241 } catch (DuplicateKeyException e) {

242 bizLogger.error(" batchInsert @in_tbl_name duplicateKeyException ");

243 throw new BusinessException(ResultInfo.SYS_INNER_ERROR.getCode(),

244 ResultInfo.SYS_INNER_ERROR.getDesc() + " duplicate error,bizId=" + BizLogUtils.getValueOfBizId(),e);

245 }

246 if (insertResult != @objRefNameList.size()) {

247 bizLogger.error("insertResult=" + insertResult + ", insert result != 1 ");

248 throw new BusinessException(ResultInfo.SYS_INNER_ERROR.getCode(),

249 ResultInfo.SYS_INNER_ERROR.getDesc() + " insert fail [insertResult,bizId]="+insertResult+ BizLogUtils.getValueOfBizId());

250 }

251}

252";

253SELECTREPLACE(@domain_code,"@insert_code",@insert_code) INTO@domain_code;

254SELECTREPLACE(@domain_code,"@objName",@objName) INTO@domain_code;

255SELECTREPLACE(@domain_code,"@objRefName",@objRefName) INTO@domain_code;

256SELECTREPLACE(@domain_code,"@in_tbl_name",@in_tbl_name) INTO@domain_code;

257

258-- SELECT @domain_code;

259

260

261

262-- #########################################################################################

263-- 打印真正的语句

264-- #########################################################################################

265

266SET@insert_sql_help="

267高级insert示例:

268 -- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

2691:replace into tbl_name(col_name, ...) values(...)

270如果存在primary or unique相同的记录,则先删除掉。再插入新记录。REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和

271

2722:insert ignore into tbl_name (...) values(...)

273当插入数据时,如出现错误时,如重复数据(PrimaryKey,或者unique索引),将不返回错误,只以警告形式返回。

274会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过当前插入的这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的

275

2763:INSERT INTO tablename(...) VALUES(...) ON DUPLICATE KEY UPDATE field1=value1,field2=value2, field3=value3, ...;

277INSERT INTO books (...) VALUES (...) ON duplicate KEY UPDATE id = id 等效于 ignore

278没有重复的执行插入,重复了执行后面更新语句

279解决问题:以前是找到某条记录,找到就是更新,找不到就是插入,要写两条语句,现在一条语句就搞定了

280

2814:INSERT INTO books (...) values (...) WHERE NOT EXISTS (SELECT id FROM books WHERE id = 1)

282如果没有id=1的记录就插入,否则什么都不做

283";

284

285

286SELECT"代码","用途" LIMIT 0

287UNIONALL

288SELECT@insert_code , "实体类set方法"

289UNIONALL

290SELECT@insert_domain_code , "单条插入domain层方法"

291UNIONALL

292SELECT@mapper_code ,"批量插入mapper层"

293UNIONALL

294SELECT@dao_code ,"批量插入dao层"

295UNIONALL

296SELECT@domain_code ,"批量插入domain层"

297UNIONALL

298SELECT CONCAT_WS("","@Autowired

","private ",@objName,"Dao ",@objRefName,"Dao;

") ,"引入dao"

299UNIONALL

300SELECT CONCAT_WS(""," int insertResult"," = ",@objRefName,"Dao.insert","(",@objRefName,");") , "调用dao"

301UNIONALL

302SELECT CONCAT_WS("","@Autowired

","private ",@objName,"Domain ",@objRefName,"Domain;

") , "引入domain"

303UNIONALL

304SELECT CONCAT_WS("",@objRefName,"Domain.insert","(",@objRefName,");") , "调用domain"

305UNIONALL

306SELECT@autowired_all_domain , "引用所有domain"

307UNIONall

308SELECT@autowired_all_dao , "引入所有dao"

309UNIONALL

310SELECT" @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")

int insert(@objName @objRefName);" , "返回自增键刚插入的新值,放在mapper层insert方法上"

311UNIONALL

312SELECT@insert_sql_help ,"高级insert示例"

313

314;

315

316droptable fixed_col_table;

317

318END%%

319 DELIMITER ;

insert_code_generator

 

 

 

 

select代码生成器用法:
select_code_generator
( in_var_tbl_name      [要查询的表]
,in_var_return_type    [返回类型,list|obj]
,in_static_col_list        [静态查询条件,字段列表,形如:"id,name,code"]
,in_dynamic_col_list   [动态查询条件,字段列表,形如:"id,name,code"]
,in_list_col_list       [动态集合in查询条件字段列表,形如:"id,name,code"]
)

  1-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

2DROPPROCEDUREIFEXISTS select_code_generator;

3 DELIMITER %%

4CREATEPROCEDURE select_code_generator(in_var_tbl_name VARCHAR(200),in_var_return_type VARCHAR(200),in_static_col_list VARCHAR(1024),in_dynamic_col_list VARCHAR(1024),in_list_col_list VARCHAR(1024) )

5 label:BEGIN

6-- ################################################################################################################

7-- #################### 支持动态sql:mapper-dao-service生成 select 代码 #############################

8-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

9-- ################################################################################################################

10

11SET group_concat_max_len =4294967295;

12

13-- #----------#配置项#-----------------------#

14-- 表名映射为驼峰形式,tbl_cdk_user_info -> userInfo,默认去除表名的tbl前缀

15-- SET @noStrInTbl="tbl_cbm";

16SET@noStrInTbl="tbl";

17

18-- #----------------------------------------#

19

20

21SET@in_tbl_name=in_var_tbl_name;

22SET@in_db_name=DATABASE();

23

24

25

26-- #----------#配置项#-----------------------#

27

28if(in_var_return_type ISNULLOR in_var_return_type=""OR in_var_return_type=""OR in_var_return_type="list"OR in_var_return_type="list|obj") then

29SET@return_type_flag="list"; -- 返回结果配置为obj或者list

30ELSE

31SET@return_type_flag="obj";

32ENDif;

33

34SET@in_tbl_name=in_var_tbl_name;

35

36

37-- ########### 生成引用

38-- 生成service层实体类以备加Dao:CdkmallGoodsApply

39SET@objName=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@in_tbl_name, @noStrInTbl, ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","") ;

40-- 生成service层实体类以备接Dao: cdkmallGoodsApply

41SET@objRefName=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@in_tbl_name, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","") ;

42

43

44-- 返回值类型 WindIssueCardTask 或者 List<WindIssueCardTask>

45SELECTif(@return_type_flag="list",CONCAT_WS("",@objRefName,"List"),@objRefName) INTO@return_type_ref;

46SELECTif(@return_type_flag="list",CONCAT_WS(""," List<",@objName,"> "),@objName) INTO@return_type;

47

48

49

50DROPTABLEifEXISTS fixed_col_table;

51

52CREATEtableifnotexists fixed_col_table(

53 col VARCHAR(256) NOTNULL COMMENT "字段名",

54 col_type VARCHAR(256) COMMENT "字段类型,static,dynamic,list",

55 data_type VARCHAR(256) COMMENT "数据类型;如:int",

56 jdbc_type VARCHAR(256) COMMENT "jdbc类型:int->INTEGER,VARCHAR",

57 java_type VARCHAR(256) COMMENT "java类型:datetime - > date,tinyint -> Byte",

58 col_for_query VARCHAR(256) COMMENT "idForQuery",

59 col_for_query_jdbc VARCHAR(256) COMMENT "#{idForQueryjdbcType=INTEGER} ",

60 col_comment VARCHAR(512) COMMENT "字段注释"

61);

62

63

64

65

66if(in_static_col_list ISNULLOR in_static_col_list="static_query_col"OR in_static_col_list=""OR in_static_col_list=""OR in_static_col_list="") then

67SET in_static_col_list=null;

68ELSE

69-- 插入静态字段

70SET@exec_sql= CONCAT_WS("","INSERT ignore INTO fixed_col_table(col,col_type) values ("",REPLACE(in_static_col_list, ",",CONCAT_WS("","","static"),("")),"","static")");

71PREPARE stmt FROM@exec_sql;

72EXECUTE stmt;

73DEALLOCATEPREPARE stmt;

74ENDif;

75

76if(in_dynamic_col_list ISNULLOR in_dynamic_col_list="dynamic_query_col"OR in_dynamic_col_list=""OR in_dynamic_col_list=""OR in_dynamic_col_list="") then

77SET in_dynamic_col_list=null;

78ELSE

79-- 插入动态字段

80SET@exec_sql= CONCAT_WS("","INSERT ignore INTO fixed_col_table(col,col_type) values ("",REPLACE(in_dynamic_col_list, ",",CONCAT_WS("","","dynamic"),("")),"","dynamic")");

81PREPARE stmt FROM@exec_sql;

82EXECUTE stmt;

83DEALLOCATEPREPARE stmt;

84ENDif;

85

86if(in_list_col_list ISNULLOR in_list_col_list="list_query_col"OR in_list_col_list=""OR in_list_col_list=""OR in_list_col_list="") then

87SET in_static_col_list=null;

88ELSE

89-- 插入list集合字段

90SET@exec_sql= CONCAT_WS("","INSERT ignore INTO fixed_col_table(col,col_type) values ("",REPLACE(in_list_col_list, ",",CONCAT_WS("","","list"),("")),"","list")");

91PREPARE stmt FROM@exec_sql;

92EXECUTE stmt;

93DEALLOCATEPREPARE stmt;

94ENDif;

95

96

97/* 打印查询字段的驼峰格式:IdAndAmountAndApplyNoAndUuid */

98SELECT GROUP_CONCAT( tt SEPARATOR "And") INTO@byname

99FROM

100(

101SELECT

102REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(CONCAT_WS("","_",col), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","") AS tt

103FROM fixed_col_table) t;

104

105-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

106-- 将col_for_query字段转成驼峰:create_time --> createTimeForQuery

107UPDATE fixed_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

108 ,"ForQuery") WHERE col_type="static";

109UPDATE fixed_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

110 ,"ForDynamicQuery") WHERE col_type="dynamic";

111UPDATE fixed_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

112 ,"ForQueryList") WHERE col_type="list";

113

114

115-- 更新字段类型id --> int ,name -->varchar

116UPDATE fixed_col_table SET data_type =

117(

118SELECT t1.data_type

119FROM

120 information_schema.COLUMNS t1

121WHERE

122 t1.table_schema=@in_db_nameAND

123 t1.TABLE_NAME =@in_tbl_name

124and t1.column_name =col

125);

126

127-- 更新注释字段 --> 创建时间 | 非空 |

128UPDATE fixed_col_table SET col_comment =

129(

130SELECT CONCAT_WS("",t1.column_comment," | ",if(t1.is_nullable="YES","可空","非空")," | ",case t1.COLUMN_KEY when"PRI"then"主键"else""end)

131FROM

132 information_schema.COLUMNS t1

133WHERE

134 t1.table_schema=@in_db_nameAND

135 t1.TABLE_NAME =@in_tbl_name

136and t1.column_name =col

137);

138-- 更新注释字段 --> | 唯一键 | uni_city_info_name(city_name)

139UPDATE fixed_col_table SET col_comment = CONCAT_WS("",col_comment,

140IFNULL(

141 (SELECT

142 CONCAT_WS(""," | ",IF(t.non_unique =0,"唯一键","索引")," | ", t.index_name,"(",

143 (

144SELECT

145 GROUP_CONCAT(tt.column_name ORDERBY tt.seq_in_index)

146FROM

147 information_schema.statistics tt

148WHERE tt.table_schema =DATABASE() AND tt.INDEX_NAME=t.index_name AND tt.TABLE_NAME=t.table_name

149 )

150 ,")")

151FROM

152 information_schema.statistics t

153WHERE t.table_schema =@in_db_name

154AND t.TABLE_NAME =@in_tbl_name

155AND t.COLUMN_NAME=col

156 )

157 ,"无索引")

158);

159

160

161/*

162SELECT

163 IF(t.non_unique = 0,"唯一键","索引") AS "index_type",

164 t.TABLE_NAME AS "table_name",

165 t.index_name AS "index_name",

166 t.COLUMN_NAME AS "column_name",

167 t.seq_in_index AS "column_seq",

168 (

169 SELECT

170 GROUP_CONCAT(tt.column_name ORDER BY tt.seq_in_index)

171 FROM

172 information_schema.statistics tt

173 WHERE tt.table_schema = DATABASE() AND tt.INDEX_NAME=t.index_name AND tt.TABLE_NAME=t.table_name

174 ) AS cols

175 FROM

176 information_schema.statistics t

177 WHERE t.table_schema = @in_db_name

178 AND t.TABLE_NAME = @in_tbl_name

179*/

180

181

182-- 转换成jdbc类型

183UPDATE fixed_col_table SET jdbc_type=

184case data_type

185when"datetime"then"TIMESTAMP"

186when"tinyint"then"TINYINT"

187when"bigint"then"BIGINT"

188when"int"then"INTEGER"

189when"varchar"then"VARCHAR"

190END;

191

192-- java类型转换

193UPDATE fixed_col_table SET java_type=

194case data_type

195when"datetime"then"Date"

196when"tinyint"then"Byte"

197when"bigint"then"Long"

198when"int"then"Integer"

199when"varchar"then"String"

200END

201WHERE col_type!="list";

202

203-- java如果是集合类型

204UPDATE fixed_col_table SET java_type=

205case data_type

206when"datetime"then"List<Date>"

207when"tinyint"then"List<Byte>"

208when"bigint"then"List<Long>"

209when"int"then"List<Integer>"

210when"varchar"then"List<String>"

211END

212WHERE col_type="list";

213

214-- 组成jdbc字符串:id --> #{idForQueryjdbcType=INTEGER}

215UPDATE fixed_col_table SET col_for_query_jdbc=CONCAT_WS("","#{",col_for_query,",jdbcType=",jdbc_type,"} ");

216

217/*

218col col_type data_type jdbc_type java_type col_for_query col_for_query_jdbc col_comment

219name static varchar VARCHAR String nameForQuery #{nameForQuery,jdbcType=VARCHAR} 卡面ip名称 | 非空 | | 索引 | idx_face_ip_name(name,status)

220name dynamic varchar VARCHAR String nameForDynamicQuery #{nameForDynamicQuery,jdbcType=VARCHAR} 卡面ip名称 | 非空 | | 索引 | idx_face_ip_name(name,status)

221create_time list datetime TIMESTAMP List<Date> createTimeForQueryList #{createTimeForQueryList,jdbcType=TIMESTAMP} 创建时间 | 非空 | 无索引

222

223*/

224

225-- SELECT * from fixed_col_table;

226

227

228--

229/* 列举所有字段 @allColumnList

230id, uuid, create_time, last_update_time, mall_goods_uuid, apply_no, sugar_biz_order_id, payment_pay_no, pay_info, expire_time, trade_type, status, refund_flag, refund_status, refund_accept_time, user_uuid, mall_uuid, amount

231*/

232SELECT

233 GROUP_CONCAT(CONCAT("t.",t1.column_name," as ",t1.column_name) SEPARATOR ", ") INTO@allColumnList

234FROM

235 information_schema.COLUMNS t1

236WHERE

237 t1.table_schema=@in_db_nameAND

238 t1.TABLE_NAME =@in_tbl_name

239;

240

241

242-- ################################################################################################################

243-- ################################ 静态mapper层 ####################################################

244-- ################################################################################################################

245

246/* 查询条件字段 @queryList

247id=#{idForQuery,jdbcType=BIGINT} and amount=#{amountForQuery,jdbcType=INTEGER} and apply_no=#{applyNoForQuery,jdbcType=VARCHAR}

248*/

249

250SELECT

251 CONCAT(""" ,GROUP_CONCAT(CONCAT("and ",col,"=",col_for_query_jdbc) SEPARATOR ""),"",

") INTO@queryList

252FROM fixed_col_table WHERE col_type="static";

253

254-- SELECT @queryList;

255

256

257-- ################################################################################################################

258-- ################################ 动态if mapper层 #################################################

259-- "<if test = "statusForQuery != null"> and status = #{statusForQuery,jdbcType = DECIMAL} </if> ",

260-- ################################################################################################################

261

262/*

263"<if test = "idForQuery != null"> AND id= #{idForQuery,jdbcType=INTEGER} </if>",

264"<if test = "nameForQuery != null"> AND name= #{nameForQuery,jdbcType=VARCHAR} </if>",

265"<if test = "createTimeForQuery != null"> AND create_time= #{createTimeForQuery,jdbcType=TIMESTAMP} </if>",

266*/

267SET@var_if_test_statement=""<if test ="{1}col_for_query ">AND {2}col= {3}col_for_query_jdbc </if>",

";

268

269SELECT

270 GROUP_CONCAT(replace(replace(REPLACE(@var_if_test_statement,"{1}col_for_query",case data_type when"varchar"then CONCAT(col_for_query,"!=null and ",col_for_query,"!=&apos;&apos;") ELSE CONCAT(col_for_query,"!=null") END),

271"{3}col_for_query_jdbc",col_for_query_jdbc),"{2}col",col) SEPARATOR "") INTO@dynamicQueryList

272FROM fixed_col_table WHERE col_type="dynamic";

273

274-- SELECT @dynamicQueryList;

275

276-- SELECT * from fixed_col_table;

277

278-- ################################################################################################################

279-- ################################ 动态list mapper层 #################################################

280/*

281 "<if test = "forumIdList != null and forumIdList.size() > 0"> and id in " ,

282 " <foreach collection="forumIdList" item="item" index="index" open="(" separator="," close=")"> " ,

283 " #{item,jdbcType=NUMERIC} " ,

284 " </foreach> " ,

285 "</if>" ,

286*/

287-- ################################################################################################################

288

289SET@var_list_test_statement=""<if test ="{1}col_for_query != null and {1}col_for_query.size() > 0">AND {2}col IN " ,

290 " <foreach collection="{1}col_for_query" item="item"index="index"open="(" separator=","close=")"> " ,

291 " {3}col_for_query_jdbc " ,

292 " </foreach> " ,

293 "</if>" ,";

294

295SELECT

296 GROUP_CONCAT(replace(replace(REPLACE(@var_list_test_statement,"{1}col_for_query",col_for_query),"{3}col_for_query_jdbc",replace(col_for_query_jdbc,col_for_query,"item")),"{2}col",col) SEPARATOR "

") INTO@listQueryList

297FROM fixed_col_table WHERE col_type="list";

298

299

300-- SELECT @listQueryList;

301

302SET@mapper_sql="@Select({

303"<script> ",

304"select @allColumnList ",

305"from @in_tbl_name t ",

306"<where> ",

307@queryList@dynamicQueryList@listQueryList

308"</where> ",

309"</script>"

310})";

311

312-- SELECT @queryList;

313

314SELECTREPLACE(@mapper_sql,"@allColumnList",IFNULL(@allColumnList,"")) INTO@mapper_sql;

315SELECTREPLACE(@mapper_sql,"@in_tbl_name",IFNULL(@in_tbl_name,"")) INTO@mapper_sql;

316SELECTREPLACE(@mapper_sql,"@queryList",IFNULL(@queryList,"")) INTO@mapper_sql;

317SELECTREPLACE(@mapper_sql,"@dynamicQueryList",IFNULL(@dynamicQueryList,"")) INTO@mapper_sql;

318SELECTREPLACE(@mapper_sql,"@listQueryList",IFNULL(@listQueryList,"")) INTO@mapper_sql;

319

320-- SELECT @mapper_sql;

321

322

323-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

324/* 查询字段的参数形式列表 @queryparamList

325@Param("idForQuery") Integer idForQuery , @Param("createTimeForQuery") Date createTimeForQuery , @Param("idForDynamicQuery") Integer idForDynamicQuery , @Param("idForQueryList") List<Integer> idForQueryList

326*/

327

328SELECT

329 GROUP_CONCAT(CONCAT("@Param("",col_for_query,"") ",java_type,"",col_for_query)SEPARATOR " , ") INTO@queryparamList

330FROM fixed_col_table ;

331

332-- SELECT @queryparamList;

333

334-- mapper层代码模板

335SET@mapper_code=

336"@mapper_sql

337@return_type selectBy@byname(@queryparamList);";

338

339SELECTREPLACE(@mapper_code,"@mapper_sql",IFNULL(@mapper_sql,"")) INTO@mapper_code;

340SELECTREPLACE(@mapper_code,"@return_type",IFNULL(@return_type,"")) INTO@mapper_code;

341SELECTREPLACE(@mapper_code,"@byname",IFNULL(@byname,"")) INTO@mapper_code;

342SELECTREPLACE(@mapper_code,"@queryparamList",IFNULL(@queryparamList,"")) INTO@mapper_code;

343

344-- SELECT @mapper_code;

345

346-- ################################################################################################################

347-- ################################ dao层需要的 ########################################################

348-- ################################################################################################################

349

350/*

351 @dao_type_queryparamList :

352 Integer idForQuery,String nameForQuery,Integer idForDynamicQuery,Date createTimeForDynamicQuery,List<Date> lastUpdateTimeForQueryList

353

354@dao_queryparamList:

355 idForQuery,nameForQuery,idForDynamicQuery,createTimeForDynamicQuery,lastUpdateTimeForQueryList

356

357*/

358SELECT

359 GROUP_CONCAT(col_for_query) INTO@dao_queryparamList

360FROM fixed_col_table ;

361

362SELECT

363 GROUP_CONCAT(CONCAT(java_type,"",col_for_query)) INTO@dao_type_queryparamList

364FROM fixed_col_table ;

365-- select @dao_type_queryparamList;

366-- select @dao_queryparamList;

367

368-- dao层代码模板

369SET@dao_code=

370"public @return_type selectBy@byname(@dao_type_queryparamList){

371 return mapper.selectBy@byname(@dao_queryparamList);

372}";

373SELECTREPLACE(@dao_code,"@return_type",@return_type) INTO@dao_code;

374SELECTREPLACE(@dao_code,"@byname",@byname) INTO@dao_code;

375SELECTREPLACE(@dao_code,"@dao_type_queryparamList",@dao_type_queryparamList) INTO@dao_code;

376SELECTREPLACE(@dao_code,"@dao_queryparamList",@dao_queryparamList) INTO@dao_code;

377

378-- SELECT @dao_code;

379

380-- ################################################################################################################

381-- ################################ domain层需要的 ########################################################

382-- ################################################################################################################

383

384-- 打印注释:/* uuidForQuery | String | 逻辑主键 | 非空 | 唯一键 */

385SELECT

386 GROUP_CONCAT(concat(col_for_query," | ",java_type," | ",col_comment) SEPARATOR "

") INTO@comment_str

387FROM fixed_col_table ;

388

389-- select @comment_str;

390

391-- if(faceIpList == null ||faceIpList.size()==0)

392SELECT

393if

394 (@return_type_flag="list"

395 ,CONCAT_WS("","if(",@return_type_ref," == null ||",@return_type_ref,".size()==0)")

396 ,CONCAT_WS("","if(",@return_type_ref," == null)")

397 ) INTO@if_judge;

398

399-- idForQuery+","+nameForQuery+","+idForDynamicQuery+","+createTimeForDynamicQuery+","+lastUpdateTimeForQueryList

400selectREPLACE(@dao_queryparamList,",","+","+") INTO@if_params_list;

401

402SET@domain_code=

403"/*

404@comment_str

405*/

406public @return_type getBy@byname(@dao_type_queryparamList){

407 @return_type @return_type_ref = @objRefNameDao.selectBy@byname(@dao_queryparamList);

408 @if_judge {

409 bizLogger.warn("select @in_tbl_name result is null or size=0 [@dao_queryparamList] : " + @if_params_list);

410 throw new BusinessException(ResultInfo.NO_DATA.getCode(),ResultInfo.NO_DATA.getDesc() + " ,bizId="+BizLogUtils.getValueOfBizId());

411 }

412 return @return_type_ref;

413}

414";

415SELECTREPLACE(@domain_code,"@comment_str",@comment_str) INTO@domain_code;

416SELECTREPLACE(@domain_code,"@return_type_ref",@return_type_ref) INTO@domain_code;

417SELECTREPLACE(@domain_code,"@return_type",@return_type) INTO@domain_code;

418SELECTREPLACE(@domain_code,"@byname",@byname) INTO@domain_code;

419SELECTREPLACE(@domain_code,"@dao_type_queryparamList",@dao_type_queryparamList) INTO@domain_code;

420SELECTREPLACE(@domain_code,"@dao_queryparamList",@dao_queryparamList) INTO@domain_code;

421SELECTREPLACE(@domain_code,"@objRefName",@objRefName) INTO@domain_code;

422SELECTREPLACE(@domain_code,"@if_params_list",@if_params_list) INTO@domain_code;

423SELECTREPLACE(@domain_code,"@if_judge",@if_judge) INTO@domain_code;

424SELECTREPLACE(@domain_code,"@in_tbl_name",@in_tbl_name) INTO@domain_code;

425

426-- SELECT @domain_code;

427

428-- SELECT * from fixed_col_table;

429

430

431

432-- 引入所有的domain 和dao -- 开始 --

433SELECT

434 GROUP_CONCAT(

435 CONCAT_WS("","@Autowired

","private "

436 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, @noStrInTbl, ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Domain "

437 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Domain;

")

438 SEPARATOR "

"

439 ) INTO@autowired_all_domain

440

441FROM information_schema.`TABLES` t

442WHERE TABLE_SCHEMA=DATABASE()and TABLE_NAME NOTIN("fixed_col_table");

443

444SELECT

445 GROUP_CONCAT(

446 CONCAT_WS("","@Autowired

","private "

447 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, @noStrInTbl, ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Dao "

448 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Dao;

")

449 SEPARATOR "

"

450 ) INTO@autowired_all_dao

451

452FROM information_schema.`TABLES` t

453WHERE TABLE_SCHEMA=DATABASE() and TABLE_NAME NOTIN("fixed_col_table") ;

454

455-- 引入所有的domain 和dao -- 结束 --

456

457

458

459-- ################################################################################################################

460-- ################################ 打印语句 ########################################################

461-- ################################################################################################################

462

463SET@cacheable_code="

464cacheable的使用方式

465Mapper层:

466@Select({

467 "select",

468 " para_value",

469 "from tbl_cdkmall_sys_para where para_key=#{paraKey,jdbcType=VARCHAR}"

470 })

471String getSysPara(String paraKey);

472

473 dao层

474 // 查询系统配置表的固定模板

475@Cacheable(value = "{FM_spa_cdkmall_getSysPara}", key = "#p0", unless = "#result == null")

476public String getSysPara(String paraKey) {

477 return mapper.getSysPara(paraKey);

478}

479

480@Cacheable(value = "{FM_cdk_parnter_escrow_getSysPara}", key = "#partnerNo+"_"+#paraKey+"_"+#paraIndex", unless = "#result == null")

481public String getSysPara(String partnerNo,String paraKey,String paraIndex) {

482 return mapper.getSysPara( partnerNo, paraKey, paraIndex);

483}

484";

485

486SET@dynamic_code_templ="

487日期转换:

488select STR_TO_DATE("1998-03-12-01-01-01","%Y-%m-%d-%H-%i-%s") ; 字符串转日期

489select DATE_FORMAT(NOW(),"%Y-%m-%d-%H-%i-%s"); 日期转字符串

490

491 大于小于特殊符号:< lt; |> gt;

492<if test="startTime!=null and startTime!=&apos;&apos;">and a.create_time &gt;= #{startTime,jdbcType =TIMESTAMP}</if>

493<if test="endTime!=null and endTime!=&apos;&apos;">and a.create_time &lt;= #{endTime,jdbcType =TIMESTAMP}</if>

494

495判断空及空字符串,模糊查询:

496<if test="xx!=null and xx!=&apos;&apos;"> xx like concat("%",#{xx,jdbcType =VARCHAR},"%")

497

498手动分页:

499 limit (page-1)*size,size; PAGE>=1,第一页=1

500 size=10

501 PAGE (PAGE-1)*10

50210

503210

504320

505";

506

507

508SELECT"代码","功能" LIMIT 0

509UNIONALL

510SELECT@mapper_code , "mapper层方法"

511UNIONall

512SELECT@dao_code , "dao层方法"

513UNIONall

514SELECT@domain_code , "domain层方法"

515UNIONall

516SELECT CONCAT_WS("","@Autowired

","private ",@objName,"Dao ",@objRefName,"Dao;

") , "引入dao"

517UNIONall

518SELECT CONCAT_WS("","/*

",@comment_str,"*/","

",@return_type,"",@return_type_ref," = ",@objRefName,"Dao.selectBy",@byname,"(",@dao_queryparamList,");") , "调用dao"

519UNIONall

520SELECT CONCAT_WS("","@Autowired

","private ",@objName,"Domain ",@objRefName,"Domain;

") , "引入domain"

521UNIONall

522SELECT CONCAT_WS("","/*

",@comment_str,"*/","

",@return_type,"",@return_type_ref," = ",@objRefName,"Domain.selectBy",@byname,"(",@dao_queryparamList,");") , "调用domain"

523UNIONall

524SELECT@autowired_all_domain , "引用所有domain"

525UNIONall

526SELECT@autowired_all_dao , "引入所有dao"

527UNIONALL

528SELECT@dynamic_code_templ ,"动态参考语句"

529UNIONALL

530SELECT@cacheable_code ,"Cacheable参考使用方法";

531

532-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

533DROPTABLEifEXISTS fixed_col_table;

534

535END%%

536 DELIMITER ;

select_code_generator

 

 

 

 

 

 

update代码生成器用法:
update_code_generator
( in_var_tbl_name            [要查询的表]
,in_var_update_col_list         [要更新的字段列表]
,in_var_dynamic_update_col_list    [要动态更新的字段列表]
,in_static_col_list        [静态查询条件,字段列表,形如:"id,name,code"]
,in_dynamic_col_list        [动态查询条件,字段列表,形如:"id,name,code"]
,in_list_col_list            [动态集合in查询条件字段列表,形如:"id,name,code"]
)

  1-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

2DROPPROCEDUREIFEXISTS update_code_generator;

3 DELIMITER %%

4CREATEPROCEDURE update_code_generator(in_var_tbl_name VARCHAR(200),in_var_update_col_list VARCHAR(1024),in_var_dynamic_update_col_list VARCHAR(1024),in_static_col_list VARCHAR(1024),in_dynamic_col_list VARCHAR(1024),in_list_col_list VARCHAR(1024) )

5

6 label:BEGIN

7-- ################################################################################################################

8-- #################### 支持动态sql : #########################################

9-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

10-- ################################################################################################################

11

12SET group_concat_max_len =4294967295;

13-- #----------#配置项#-----------------------#

14

15-- 表名映射为驼峰形式,tbl_cdk_user_info -> userInfo,默认去除表名的tbl前缀

16-- SET @noStrInTbl="tbl_cbm";

17SET@noStrInTbl="tbl";

18

19-- -------------------------------

20

21

22

23SET@in_tbl_name=in_var_tbl_name;

24SET@in_db_name=DATABASE();

25

26

27

28-- ########### 生成引用

29-- 生成service层实体类以备加Dao:CdkmallGoodsApply

30SET@objName=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@in_tbl_name, @noStrInTbl, ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","") ;

31-- 生成service层实体类以备接Dao: cdkmallGoodsApply

32SET@objRefName=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@in_tbl_name, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","") ;

33

34

35

36

37DROPTABLEifEXISTS fixed_col_table;

38

39CREATEtableifnotexists fixed_col_table(

40 col VARCHAR(256) NOTNULL COMMENT "字段名",

41 col_type VARCHAR(256) COMMENT "字段类型,static,dynamic,list,update_col,dynamic_update_col",

42 data_type VARCHAR(256) COMMENT "数据类型;如:int",

43 jdbc_type VARCHAR(256) COMMENT "jdbc类型:int->INTEGER,VARCHAR",

44 java_type VARCHAR(256) COMMENT "java类型:datetime - > date,tinyint -> Byte",

45 col_for_query VARCHAR(256) COMMENT "idForQuery",

46 col_for_query_jdbc VARCHAR(256) COMMENT "#{idForQueryjdbcType=INTEGER} ",

47 col_comment VARCHAR(512) COMMENT "字段注释"

48);

49

50

51

52

53-- 插入参数中的字段值

54if(in_static_col_list ISNULLOR in_static_col_list="static_query_col"OR in_static_col_list=""OR in_static_col_list=""OR in_static_col_list="") then

55SET in_static_col_list=null;

56ELSE

57-- 插入静态字段

58SET@exec_sql= CONCAT_WS("","INSERT ignore INTO fixed_col_table(col,col_type) values ("",REPLACE(in_static_col_list, ",",CONCAT_WS("","","static"),("")),"","static")");

59PREPARE stmt FROM@exec_sql;

60EXECUTE stmt;

61DEALLOCATEPREPARE stmt;

62ENDif;

63

64if(in_dynamic_col_list ISNULLOR in_dynamic_col_list="dynamic_query_col"OR in_dynamic_col_list=""OR in_dynamic_col_list=""OR in_dynamic_col_list="") then

65SET in_dynamic_col_list=null;

66ELSE

67-- 插入动态字段

68SET@exec_sql= CONCAT_WS("","INSERT ignore INTO fixed_col_table(col,col_type) values ("",REPLACE(in_dynamic_col_list, ",",CONCAT_WS("","","dynamic"),("")),"","dynamic")");

69PREPARE stmt FROM@exec_sql;

70EXECUTE stmt;

71DEALLOCATEPREPARE stmt;

72ENDif;

73

74if(in_list_col_list ISNULLOR in_list_col_list="list_query_col"OR in_list_col_list=""OR in_list_col_list=""OR in_list_col_list="") then

75SET in_list_col_list=null;

76ELSE

77-- 插入list集合字段

78SET@exec_sql= CONCAT_WS("","INSERT ignore INTO fixed_col_table(col,col_type) values ("",REPLACE(in_list_col_list, ",",CONCAT_WS("","","list"),("")),"","list")");

79PREPARE stmt FROM@exec_sql;

80EXECUTE stmt;

81DEALLOCATEPREPARE stmt;

82ENDif;

83

84if(in_var_update_col_list ISNULLOR in_var_update_col_list="update_col"OR in_var_update_col_list=""OR in_var_update_col_list=""OR in_var_update_col_list="") then

85SELECT"要更新的字段不能为空"AS"error";

86 leave label;

87ELSE

88-- 插入list集合字段

89SET@exec_sql= CONCAT_WS("","INSERT ignore INTO fixed_col_table(col,col_type) values ("",REPLACE(in_var_update_col_list, ",",CONCAT_WS("","","update"),("")),"","update")");

90PREPARE stmt FROM@exec_sql;

91EXECUTE stmt;

92DEALLOCATEPREPARE stmt;

93ENDif;

94

95if(in_var_dynamic_update_col_list ISNULLOR in_var_dynamic_update_col_list="dynamic_update_col"OR in_var_dynamic_update_col_list=""OR in_var_dynamic_update_col_list=""OR in_var_dynamic_update_col_list="") then

96SET in_var_dynamic_update_col_list=NULL;

97ELSE

98-- 插入list集合字段

99SET@exec_sql= CONCAT_WS("","INSERT ignore INTO fixed_col_table(col,col_type) values ("",REPLACE(in_var_dynamic_update_col_list, ",",CONCAT_WS("","","dynamic_update"),("")),"","dynamic_update")");

100PREPARE stmt FROM@exec_sql;

101EXECUTE stmt;

102DEALLOCATEPREPARE stmt;

103ENDif;

104

105-- select @exec_sql;

106

107/* 打印查询字段的驼峰格式:IdAndAmountAndApplyNoAndUuid */

108SELECT CONCAT("By",GROUP_CONCAT( tt SEPARATOR "And")) INTO@byname

109FROM

110(

111SELECT

112REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(CONCAT_WS("","_",col), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","") AS tt

113FROM fixed_col_table where col_type IN ("static","dynamic","list")) t;

114

115

116

117-- 将col_for_query字段转成驼峰:create_time --> createTimeForQuery

118UPDATE fixed_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

119 ,"ForQuery") WHERE col_type="static";

120UPDATE fixed_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

121 ,"ForDynamicQuery") WHERE col_type="dynamic";

122UPDATE fixed_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

123 ,"ForQueryList") WHERE col_type="list";

124UPDATE fixed_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

125 ,"ForUpdate") WHERE col_type="update";

126UPDATE fixed_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

127 ,"ForDynamicUpdate") WHERE col_type="dynamic_update";

128

129

130-- 更新字段类型id --> int ,name -->varchar

131UPDATE fixed_col_table SET data_type =

132(

133SELECT t1.data_type

134FROM

135 information_schema.COLUMNS t1

136WHERE

137 t1.table_schema=@in_db_nameAND

138 t1.TABLE_NAME =@in_tbl_name

139and t1.column_name =col

140);

141-- SELECT * FROM fixed_col_table;

142-- 更新注释字段 --> 创建时间 | 非空 |

143UPDATE fixed_col_table SET col_comment =

144(

145SELECT CONCAT_WS("",t1.column_comment," | ",if(t1.is_nullable="YES","可空","非空")," | ",case t1.COLUMN_KEY when"PRI"then"主键"else""end)

146FROM

147 information_schema.COLUMNS t1

148WHERE

149 t1.table_schema=@in_db_nameAND

150 t1.TABLE_NAME =@in_tbl_name

151and t1.column_name =col

152);

153-- 更新注释字段 --> | 唯一键 | uni_city_info_name(city_name)

154UPDATE fixed_col_table SET col_comment = CONCAT_WS("",col_comment,

155IFNULL(

156 (SELECT

157 CONCAT_WS(""," | ",IF(t.non_unique =0,"唯一键","索引")," | ", t.index_name,"(",

158 (

159SELECT

160 GROUP_CONCAT(tt.column_name ORDERBY tt.seq_in_index)

161FROM

162 information_schema.statistics tt

163WHERE tt.table_schema =DATABASE() AND tt.INDEX_NAME=t.index_name AND tt.TABLE_NAME=t.table_name

164 )

165 ,")")

166FROM

167 information_schema.statistics t

168WHERE t.table_schema =@in_db_name

169AND t.TABLE_NAME =@in_tbl_name

170AND t.COLUMN_NAME=col

171 )

172 ,"无索引")

173);

174

175

176/*

177SELECT

178 IF(t.non_unique = 0,"唯一键","索引") AS "index_type",

179 t.TABLE_NAME AS "table_name",

180 t.index_name AS "index_name",

181 t.COLUMN_NAME AS "column_name",

182 t.seq_in_index AS "column_seq",

183 (

184 SELECT

185 GROUP_CONCAT(tt.column_name ORDER BY tt.seq_in_index)

186 FROM

187 information_schema.statistics tt

188 WHERE tt.table_schema = DATABASE() AND tt.INDEX_NAME=t.index_name AND tt.TABLE_NAME=t.table_name

189 ) AS cols

190 FROM

191 information_schema.statistics t

192 WHERE t.table_schema = @in_db_name

193 AND t.TABLE_NAME = @in_tbl_name

194*/

195

196

197-- 转换成jdbc类型

198UPDATE fixed_col_table SET jdbc_type=

199case data_type

200when"datetime"then"TIMESTAMP"

201when"tinyint"then"TINYINT"

202when"bigint"then"BIGINT"

203when"int"then"INTEGER"

204when"float"then"REAL"

205when"varchar"then"VARCHAR"

206END;

207

208-- java类型转换

209UPDATE fixed_col_table SET java_type=

210case data_type

211when"datetime"then"Date"

212when"tinyint"then"Byte"

213when"bigint"then"Long"

214when"int"then"Integer"

215when"float"then"REAL"

216when"varchar"then"String"

217END

218WHERE col_type!="list";

219

220-- java如果是集合类型

221UPDATE fixed_col_table SET java_type=

222case data_type

223when"datetime"then"List<Date>"

224when"tinyint"then"List<Byte>"

225when"bigint"then"List<Long>"

226when"int"then"List<Integer>"

227when"float"then"List<REAL>"

228when"varchar"then"List<String>"

229END

230WHERE col_type="list";

231

232-- 组成jdbc字符串:id --> #{idForQueryjdbcType=INTEGER}

233UPDATE fixed_col_table SET col_for_query_jdbc=CONCAT_WS("","#{",col_for_query,",jdbcType=",jdbc_type,"} ");

234

235/*

236col col_type data_type jdbc_type java_type col_for_query col_for_query_jdbc col_comment

237name static varchar VARCHAR String nameForQuery #{nameForQuery,jdbcType=VARCHAR} 卡面ip名称 | 非空 | | 索引 | idx_face_ip_name(name,status)

238name dynamic varchar VARCHAR String nameForDynamicQuery #{nameForDynamicQuery,jdbcType=VARCHAR} 卡面ip名称 | 非空 | | 索引 | idx_face_ip_name(name,status)

239create_time list datetime TIMESTAMP List<Date> createTimeForQueryList #{createTimeForQueryList,jdbcType=TIMESTAMP} 创建时间 | 非空 | 无索引

240

241*/

242

243-- SELECT * from fixed_col_table;

244

245

246--

247/* 列举所有字段 @allColumnList

248id, uuid, create_time, last_update_time, mall_goods_uuid, apply_no, sugar_biz_order_id, payment_pay_no, pay_info, expire_time, trade_type, status, refund_flag, refund_status, refund_accept_time, user_uuid, mall_uuid, amount

249*/

250SELECT

251 GROUP_CONCAT(t1.column_name SEPARATOR ", ") INTO@allColumnList

252FROM

253 information_schema.COLUMNS t1

254WHERE

255 t1.table_schema=@in_db_nameAND

256 t1.TABLE_NAME =@in_tbl_name

257;

258

259

260-- ################################################################################################################

261-- ################################ 静态mapper层 ####################################################

262-- ################################################################################################################

263

264/* 查询条件字段 @queryList

265id=#{idForQuery,jdbcType=BIGINT} and amount=#{amountForQuery,jdbcType=INTEGER} and apply_no=#{applyNoForQuery,jdbcType=VARCHAR}

266*/

267

268SELECT

269 CONCAT(""" ,GROUP_CONCAT(CONCAT("and ",col,"=",col_for_query_jdbc) SEPARATOR ""),"",

") INTO@queryList

270FROM fixed_col_table WHERE col_type="static";

271

272-- SELECT @queryList;

273

274/* 更新字段 @updateList

275" set id=#{idForQuery,jdbcType=BIGINT} , amount=#{amountForQuery,jdbcType=INTEGER} , apply_no=#{applyNoForQuery,jdbcType=VARCHAR} "

276*/

277SELECT

278 CONCAT(""set " ,GROUP_CONCAT(CONCAT("",col,"=",col_for_query_jdbc) SEPARATOR " ,"),"",

") INTO@update_list

279FROM fixed_col_table WHERE col_type="update";

280

281-- 动态update语句

282-- "<if test = "idForDynamicUpdate != null"> , id= #{idForQuery,jdbcType=INTEGER} </if>",

283SET@var_if_test_statement=""<if test ="{1}col_for_query != null"> , {2}col= {3}col_for_query_jdbc </if>",";

284

285SELECT

286 GROUP_CONCAT(replace(replace(REPLACE(@var_if_test_statement,"{1}col_for_query",col_for_query),"{3}col_for_query_jdbc",col_for_query_jdbc),"{2}col",col) SEPARATOR "

") INTO@update_dynamic_list

287FROM fixed_col_table WHERE col_type="dynamic_update";

288

289SELECT CONCAT_WS("",@update_list,@update_dynamic_list) INTO@update_list;

290

291-- SELECT @updateList;

292-- ################################################################################################################

293-- ################################ 动态if mapper层 #################################################

294-- "<if test = "statusForQuery != null"> and status = #{statusForQuery,jdbcType = DECIMAL} </if> ",

295-- ################################################################################################################

296

297/*

298"<if test = "idForQuery != null"> AND id= #{idForQuery,jdbcType=INTEGER} </if>",

299"<if test = "nameForQuery != null"> AND name= #{nameForQuery,jdbcType=VARCHAR} </if>",

300"<if test = "createTimeForQuery != null"> AND create_time= #{createTimeForQuery,jdbcType=TIMESTAMP} </if>",

301*/

302SET@var_if_test_statement=""<if test ="{1}col_for_query ">AND {2}col= {3}col_for_query_jdbc </if>",";

303

304SELECT

305 GROUP_CONCAT(replace(replace(REPLACE(@var_if_test_statement,"{1}col_for_query",case data_type when"varchar"then CONCAT(col_for_query,"!=null and ",col_for_query,"!=&apos;&apos;") ELSE CONCAT(col_for_query,"!=null") END),

306"{3}col_for_query_jdbc",col_for_query_jdbc),"{2}col",col) SEPARATOR "

") INTO@dynamicQueryList

307FROM fixed_col_table WHERE col_type="dynamic";

308

309-- SELECT @dynamicQueryList;

310

311-- SELECT * from fixed_col_table;

312

313

314

315-- ################################################################################################################

316-- ################################ 动态list mapper层 #################################################

317/*

318 "<if test = "forumIdList != null and forumIdList.size() > 0"> and id in " ,

319 " <foreach collection="forumIdList" item="item" index="index" open="(" separator="," close=")"> " ,

320 " #{item,jdbcType=NUMERIC} " ,

321 " </foreach> " ,

322 "</if>" ,

323*/

324-- ################################################################################################################

325

326SET@var_list_test_statement=""<if test ="{1}col_for_query != null and {1}col_for_query.size() > 0">AND {2}col IN " ,

327 " <foreach collection="{1}col_for_query" item="item"index="index"open="(" separator=","close=")"> " ,

328 " {3}col_for_query_jdbc " ,

329 " </foreach> " ,

330 "</if>" ,";

331

332SELECT

333 GROUP_CONCAT(replace(replace(REPLACE(@var_list_test_statement,"{1}col_for_query",col_for_query),"{3}col_for_query_jdbc",replace(col_for_query_jdbc,col_for_query,"item")),"{2}col",col) SEPARATOR "

") INTO@listQueryList

334FROM fixed_col_table WHERE col_type="list";

335

336

337-- SELECT @listQueryList;

338

339

340

341

342SET@mapper_sql="@Update({

343"<script> ",

344"update @in_tbl_name ",

345@update_list

346"<where>",

347@queryList@dynamicQueryList

348@listQueryList

349"</where>",

350"</script>"

351})";

352

353-- SELECT @queryList;

354

355SELECTREPLACE(@mapper_sql,"@update_list",IFNULL(@update_list,"")) INTO@mapper_sql;

356SELECTREPLACE(@mapper_sql,"@in_tbl_name",IFNULL(@in_tbl_name,"")) INTO@mapper_sql;

357SELECTREPLACE(@mapper_sql,"@queryList",IFNULL(@queryList,"")) INTO@mapper_sql;

358SELECTREPLACE(@mapper_sql,"@dynamicQueryList",IFNULL(@dynamicQueryList,"")) INTO@mapper_sql;

359SELECTREPLACE(@mapper_sql,"@listQueryList",IFNULL(@listQueryList,"")) INTO@mapper_sql;

360

361-- SELECT @mapper_sql;

362

363

364

365/* 查询字段的参数形式列表 @queryparamList

366@Param("idForQuery") Integer idForQuery , @Param("createTimeForQuery") Date createTimeForQuery , @Param("idForDynamicQuery") Integer idForDynamicQuery , @Param("idForQueryList") List<Integer> idForQueryList

367*/

368

369SELECT

370 GROUP_CONCAT(CONCAT("@Param("",col_for_query,"") ",java_type,"",col_for_query)SEPARATOR " , ") INTO@queryparamList

371FROM fixed_col_table ;

372

373-- SELECT @queryparamList;

374

375-- mapper层代码模板

376SET@mapper_code=

377"@mapper_sql

378int update@byname(@queryparamList);";

379

380SELECTREPLACE(@mapper_code,"@mapper_sql",IFNULL(@mapper_sql,"")) INTO@mapper_code;

381SELECTREPLACE(@mapper_code,"@byname",IFNULL(@byname,"")) INTO@mapper_code;

382SELECTREPLACE(@mapper_code,"@queryparamList",IFNULL(@queryparamList,"")) INTO@mapper_code;

383

384-- SELECT @mapper_code;

385

386-- ################################################################################################################

387-- ################################ dao层需要的 ########################################################

388-- ################################################################################################################

389

390/*

391 @dao_type_queryparamList :

392 Integer idForQuery,String nameForQuery,Integer idForDynamicQuery,Date createTimeForDynamicQuery,List<Date> lastUpdateTimeForQueryList

393

394@dao_queryparamList:

395 idForQuery,nameForQuery,idForDynamicQuery,createTimeForDynamicQuery,lastUpdateTimeForQueryList

396

397*/

398SELECT

399 GROUP_CONCAT(col_for_query) INTO@dao_queryparamList

400FROM fixed_col_table ;

401

402SELECT

403 GROUP_CONCAT(CONCAT(java_type,"",col_for_query)) INTO@dao_type_queryparamList

404FROM fixed_col_table ;

405-- select @dao_type_queryparamList;

406-- select @dao_queryparamList;

407

408-- dao层代码模板

409SET@dao_code=

410"public int update@byname(@dao_type_queryparamList){

411 return mapper.update@byname(@dao_queryparamList);

412}";

413

414SELECTREPLACE(@dao_code,"@byname",@byname) INTO@dao_code;

415SELECTREPLACE(@dao_code,"@dao_type_queryparamList",@dao_type_queryparamList) INTO@dao_code;

416SELECTREPLACE(@dao_code,"@dao_queryparamList",@dao_queryparamList) INTO@dao_code;

417

418-- SELECT @dao_code;

419

420-- ################################################################################################################

421-- ################################ domain层需要的 ########################################################

422-- ################################################################################################################

423

424-- 打印注释:/* uuidForQuery | String | 逻辑主键 | 非空 | 唯一键 */

425SELECT

426 GROUP_CONCAT(concat(col_for_query," | ",java_type," | ",col_comment) SEPARATOR "

") INTO@comment_str

427FROM fixed_col_table ;

428

429-- select @comment_str;

430

431

432-- idForQuery+","+nameForQuery+","+idForDynamicQuery+","+createTimeForDynamicQuery+","+lastUpdateTimeForQueryList

433selectREPLACE(@dao_queryparamList,",","+","+") INTO@if_params_list;

434

435SET@domain_code=

436"/*

437@comment_str

438*/

439public void update@byname(@dao_type_queryparamList){

440 int updateResult = @objRefNameDao.update@byname(@dao_queryparamList);

441 if (updateResult!=1) {

442 bizLogger.warn("update @in_tbl_name result result !=1 [updateResult, @dao_queryparamList] : "+updateResult+","+ @if_params_list);

443 throw new BusinessException(ResultInfo.NO_DATA.getCode(),ResultInfo.NO_DATA.getDesc() + " ,bizId="+BizLogUtils.getValueOfBizId());

444 }

445}

446";

447SELECTREPLACE(@domain_code,"@comment_str",@comment_str) INTO@domain_code;

448SELECTREPLACE(@domain_code,"@objRefName",@objRefName) INTO@domain_code;

449SELECTREPLACE(@domain_code,"@byname",@byname) INTO@domain_code;

450SELECTREPLACE(@domain_code,"@dao_type_queryparamList",@dao_type_queryparamList) INTO@domain_code;

451SELECTREPLACE(@domain_code,"@dao_queryparamList",@dao_queryparamList) INTO@domain_code;

452SELECTREPLACE(@domain_code,"@if_params_list",@if_params_list) INTO@domain_code;

453SELECTREPLACE(@domain_code,"@in_tbl_name",@in_tbl_name) INTO@domain_code;

454

455-- SELECT @domain_code;

456

457-- SELECT * from fixed_col_table;

458

459

460

461-- 引入所有的domain 和dao -- 开始 --

462SELECT

463 GROUP_CONCAT(

464 CONCAT_WS("","@Autowired

","private "

465 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, @noStrInTbl, ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Domain "

466 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Domain;

")

467 SEPARATOR "

"

468 ) INTO@autowired_all_domain

469

470FROM information_schema.`TABLES` t

471WHERE TABLE_SCHEMA=DATABASE()and TABLE_NAME NOTIN("fixed_col_table");

472

473SELECT

474 GROUP_CONCAT(

475 CONCAT_WS("","@Autowired

","private "

476 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, @noStrInTbl, ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Dao "

477 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(t.TABLE_NAME, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_",""),"Dao;

")

478 SEPARATOR "

"

479 ) INTO@autowired_all_dao

480

481FROM information_schema.`TABLES` t

482WHERE TABLE_SCHEMA=DATABASE() and TABLE_NAME NOTIN("fixed_col_table") ;

483

484-- 引入所有的domain 和dao -- 结束 --

485

486-- ################################################################################################################

487-- ################################ 对象更新语句 ########################################################

488-- ################################################################################################################

489-- SET @in_tbl_name="tbl_ams_user_behavior";

490

491DROPTABLEifEXISTS all_col_table;

492

493CREATEtableifnotexists all_col_table(

494 col VARCHAR(256) NOTNULL COMMENT "字段名",

495 col_type VARCHAR(256) COMMENT "字段类型,static,dynamic,list",

496 data_type VARCHAR(256) COMMENT "数据类型;如:int",

497 jdbc_type VARCHAR(256) COMMENT "jdbc类型:int->INTEGER,VARCHAR",

498 java_type VARCHAR(256) COMMENT "java类型:datetime - > date,tinyint -> Byte",

499 col_for_query VARCHAR(256) COMMENT "idForQuery",

500 col_for_query_jdbc VARCHAR(256) COMMENT "#{idForQueryjdbcType=INTEGER} ",

501 col_comment VARCHAR(512) COMMENT "字段注释"

502);

503

504INSERTINTO all_col_table(col)

505SELECT

506 t1.column_name

507FROM

508 information_schema.COLUMNS t1

509WHERE

510 t1.table_schema=DATABASE() AND

511 t1.TABLE_NAME =@in_tbl_name

512;

513-- 转换成驼峰格式

514UPDATE all_col_table SET col_for_query =CONCAT_WS("",REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(col, "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

515 ,"");

516

517

518-- 更新字段类型id --> int ,name -->varchar

519UPDATE all_col_table SET data_type =

520(

521SELECT t1.data_type

522FROM

523 information_schema.COLUMNS t1

524WHERE

525 t1.table_schema=DATABASE() AND

526 t1.TABLE_NAME =@in_tbl_name

527and t1.column_name =col

528);

529

530

531

532-- 转换成jdbc类型

533UPDATE all_col_table SET jdbc_type=

534case data_type

535when"datetime"then"TIMESTAMP"

536when"tinyint"then"TINYINT"

537when"bigint"then"BIGINT"

538when"int"then"INTEGER"

539when"float"then"REAL"

540when"varchar"then"VARCHAR"

541END;

542

543

544

545UPDATE all_col_table SET col_for_query_jdbc=CONCAT_WS("",col,"=#{obj.",col_for_query,",jdbcType=",jdbc_type,"} ");

546

547/*

548"<if test = "idForQuery != null"> AND id= #{idForQuery,jdbcType=INTEGER} </if>",

549"<if test = "nameForQuery != null"> AND name= #{nameForQuery,jdbcType=VARCHAR} </if>",

550"<if test = "createTimeForQuery != null"> AND create_time= #{createTimeForQuery,jdbcType=TIMESTAMP} </if>",

551*/

552SET@var_if_test_statement=""<if test ="obj.{1}col_for_query "> {3}col_for_query_jdbc , </if>",";

553

554SELECT

555 GROUP_CONCAT(replace(replace(REPLACE(@var_if_test_statement,"{1}col_for_query",case data_type when"varchar"then CONCAT(col_for_query," !=null and obj.",col_for_query,"!=&apos;&apos;") ELSE CONCAT(col_for_query,"!=null") END),

556"{3}col_for_query_jdbc",col_for_query_jdbc),"{2}col",col) SEPARATOR "

") INTO@objUpdateAllCol

557FROM all_col_table ;

558

559-- select @objUpdateAllCol;

560

561SET@obj_mapper_sql="@Update({

562"<script> ",

563"update @in_tbl_name ",

564"<set>",

565@objUpdateAllCol

566"</set>",

567"<where>",

568@queryList@dynamicQueryList

569@listQueryList

570"</where>",

571"</script>"

572})";

573

574SELECTREPLACE(@obj_mapper_sql,"@objUpdateAllCol",IFNULL(@objUpdateAllCol,"")) INTO@obj_mapper_sql;

575SELECTREPLACE(@obj_mapper_sql,"@in_tbl_name",IFNULL(@in_tbl_name,"")) INTO@obj_mapper_sql;

576SELECTREPLACE(@obj_mapper_sql,"@queryList",IFNULL(@queryList,"")) INTO@obj_mapper_sql;

577SELECTREPLACE(@obj_mapper_sql,"@dynamicQueryList",IFNULL(@dynamicQueryList,"")) INTO@obj_mapper_sql;

578SELECTREPLACE(@obj_mapper_sql,"@listQueryList",IFNULL(@listQueryList,"")) INTO@obj_mapper_sql;

579

580-- select @obj_mapper_sql;

581-- obj

582SELECT

583 GROUP_CONCAT(CONCAT("@Param("",col_for_query,"") ",java_type,"",col_for_query)SEPARATOR " , ") INTO@objQueryparamList

584FROM fixed_col_table WHERE col_type IN ("static","dynamic","list");

585

586-- mapper层代码模板

587SET@obj_mapper_code=

588"@obj_mapper_sql

589int update@byname(@objQueryparamList,@Param("obj") @objName @objRefName);";

590

591SELECTREPLACE(@obj_mapper_code,"@obj_mapper_sql",IFNULL(@obj_mapper_sql,"")) INTO@obj_mapper_code;

592SELECTREPLACE(@obj_mapper_code,"@byname",IFNULL(@byname,"")) INTO@obj_mapper_code;

593SELECTREPLACE(@obj_mapper_code,"@objQueryparamList",IFNULL(@objQueryparamList,"")) INTO@obj_mapper_code;

594SELECTREPLACE(@obj_mapper_code,"@objName",IFNULL(@objName,"")) INTO@obj_mapper_code;

595SELECTREPLACE(@obj_mapper_code,"@objRefName",IFNULL(@objRefName,"")) INTO@obj_mapper_code;

596

597

598-- dao层代码模板

599/*

600 @dao_type_queryparamList :

601 Integer idForQuery,String nameForQuery,Integer idForDynamicQuery,Date createTimeForDynamicQuery,List<Date> lastUpdateTimeForQueryList

602

603@dao_queryparamList:

604 idForQuery,nameForQuery,idForDynamicQuery,createTimeForDynamicQuery,lastUpdateTimeForQueryList

605

606*/

607SELECT

608 GROUP_CONCAT(col_for_query) INTO@obj_dao_queryparamList

609FROM fixed_col_table WHERE col_type IN ("static","dynamic","list");

610

611SELECT

612 GROUP_CONCAT(CONCAT(java_type,"",col_for_query)) INTO@obj_dao_type_queryparamList

613FROM fixed_col_table WHERE col_type IN ("static","dynamic","list");

614

615SET@obj_dao_code=

616"public int update@byname(@obj_dao_type_queryparamList,@objName @objRefName){

617 return mapper.update@byname(@obj_dao_queryparamList,@objRefName);

618}";

619

620SELECTREPLACE(@obj_dao_code,"@byname",@byname) INTO@obj_dao_code;

621SELECTREPLACE(@obj_dao_code,"@obj_dao_type_queryparamList",@obj_dao_type_queryparamList) INTO@obj_dao_code;

622SELECTREPLACE(@obj_dao_code,"@obj_dao_queryparamList",@obj_dao_queryparamList) INTO@obj_dao_code;

623SELECTREPLACE(@obj_dao_code,"@objName",IFNULL(@objName,"")) INTO@obj_dao_code;

624SELECTREPLACE(@obj_dao_code,"@objRefName",IFNULL(@objRefName,"")) INTO@obj_dao_code;

625

626

627-- ################################################################################################################

628-- ################################ 实体类,getter,setter方法 ###########################################

629-- ################################################################################################################

630

631SELECT CONCAT_WS("","/* 新建对象*/

",@objName,"",@objRefName,"= new ",@objName,"();

/*设置属性*/

",

632 group_concat(

633/* cdkmallGoodsApply.setUserUuid(userUuid); */

634 CONCAT_WS( ""

635 ,CONCAT_WS("","/*",c.column_comment," | ",c.column_type," | ",if(c.is_nullable="YES","可空","非空"),if(c.extra="","",CONCAT_WS(""," | ",c.extra))," | ","默认=",ifnull(c.COLUMN_DEFAULT,"null")," */

")

636 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(TABLE_NAME, CONCAT(@noStrInTbl,"_"), ""), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

637 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(CONCAT_WS("",".set","_",c.column_name), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

638 ,REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE( REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(CONCAT_WS("","(",c.column_name,");"), "_z", "Z"), "_y", "Y"), "_x", "X"), "_w", "W"), "_v", "V"), "_u", "U"), "_t", "T"), "_s", "S"), "_r", "R"), "_q", "Q"), "_p", "P"), "_o", "O"), "_n", "N"), "_m", "M"), "_l", "L"), "_k", "K"), "_j", "J"), "_i", "I"), "_h", "H"), "_g", "G"), "_f", "F"), "_e", "E"), "_d", "D"), "_c", "C"), "_b", "B"), "_a", "A"),"_","")

639 ) SEPARATOR "

"

640 )

641 ) into@insert_code

642FROM

643 information_schema.COLUMNS c

644WHERE

645 c.table_schema=DATABASE() AND

646 c.TABLE_NAME =@in_tbl_name;

647

648

649

650

651

652

653-- ################################################################################################################

654-- ################################ 打印语句 ########################################################

655-- ################################################################################################################

656-- -- powered by wanglifeng https://www.cnblogs.com/wanglifeng717

657

658select"代码","用途" LIMIT 0

659unionall

660SELECT@mapper_code , "mapper层方法"

661UNIONALL

662SELECT@dao_code , "dao层方法"

663unionall

664SELECT@domain_code , "domain层方法"

665unionALL

666SELECT@obj_mapper_code ,"用对象式更新mapper层方法"

667unionALL

668SELECT@obj_dao_code ,"用对象式更新dao层方法"

669UNIONALL

670SELECT@insert_code ,"实体类getter|setter方法"

671unionALL

672SELECT CONCAT_WS("","@Autowired

","private ",@objName,"Dao ",@objRefName,"Dao;

") , "引入dao"

673unionall

674SELECT CONCAT_WS("","/*

",@comment_str,"*/","

"," int updateResult"," = ",@objRefName,"Dao.update",@byname,"(",@dao_queryparamList,");") , "调用dao"

675unionall

676SELECT CONCAT_WS("","@Autowired

","private ",@objName,"Domain ",@objRefName,"Domain;

") , "引入domain"

677unionall

678SELECT CONCAT_WS("","/*

",@comment_str,"*/","

"," int updateResult"," = ",@objRefName,"Domain.update",@byname,"(",@dao_queryparamList,");") , "调用domain"

679unionall

680SELECT@autowired_all_domain , "引用所有domain"

681unionall

682SELECT@autowired_all_dao , "引入所有dao";

683

684DROPTABLEifEXISTS fixed_col_table;

685

686DROPTABLEifEXISTS all_col_table;

687-- SELECT * FROM fixed_col_table;

688END%%

689 DELIMITER ;

update_code_generator

 

 

 

 


 本文来自云海天,作者:wanglifeng,转载请注明原文链接: https://www.cnblogs.com/wanglifeng717/p/15839391.html

 

 本文来自云海天,作者:wanglifeng,转载请注明原文链接:https://www.cnblogs.com/wanglifeng717/p/15831071.html

以上是 基于mybatis的java代码生成存储过程 的全部内容, 来源链接: utcz.com/z/536260.html

回到顶部