1、获取表结构
select column_name, data_type, column_comment, column_default
FROM information_schema.columns
WHERE table_name= "sys_user"
and table_schema = (select database())
2、转换组装为java数据结构 --- 【BeanField】
public class BeanField implements Serializable {
private static final long serialVersionUID = 4279960350136806659L;
//列名
private String columnName;
//列类型
private String columnType;
//列备注
private String columnComment;
//列默认值
private String columnDefault;
//将SQL列名转换为驼峰---java列名
private String name;
//将SQL列类型转换---java类型
private String type;
}
================================================================
/**
* mysql类型与java类型部分对应关系
*/
private static Map<String, String> map = Maps.newHashMap();
static {
map.put("int", Integer.class.getSimpleName());
map.put("tinyint", Integer.class.getSimpleName());
map.put("double", Double.class.getSimpleName());
map.put("float", Float.class.getSimpleName());
map.put("decimal", BigDecimal.class.getSimpleName());
map.put("date", Date.class.getSimpleName());
map.put("timestamp", Date.class.getSimpleName());
map.put("datetime", Date.class.getSimpleName());
map.put("varchar", String.class.getSimpleName());
map.put("text", String.class.getSimpleName());
map.put("longtext", String.class.getSimpleName());
}
3、准备基本参数
路径:d:/generate
bean类名:表名---驼峰化
bean包名:固定值---com.x.x.model
bean类名:SysUser(sys_user表)
dao包名: 固定值---com.x.x.dao
dao类名:SysUserDao
controller包名:固定值---com.x.x.controller
controller类名:SysUserController
4、反显展示相关字段信息

5、准备JavaBean类模板
package {beanPackageName};
{import}
public class {beanName} extends BaseEntity<Long> {
{filelds}
{getset}
}
6、生成Bean.java
(1)将{beanPackageName}-------> beanPackageName
(2)将{beanName}------->beanName
(3) 处理生成imports:BigDecimal、Date
(4)将{import}------->imports
(5)处理生成filelds:
跳过字段父类中的id、createTime、updateTime
"\tprivate "+Bean字段类型+" "+Bean字段名+";\n"
(6)将{filelds}------->filelds
(7)处理生成getset
跳过字段父类中的id、createTime、updateTime
"\tpublic "+Bean字段类型+" get"+Bean字段名首字母大写+Bean字段名剩余字母小写+"() {\n"+"\t\treturn "+Bean字段名+";\n"+"\t}\n"
+"\tpublic void set"+Bean字段名首字母大写+Bean字段名剩余字母小写+"("+Bean字段类型+" "+Bean字段名+") {\n"+"\t\tthis."+Bean字段名+" = "+Bean字段名+";\n"+"\t}\n"
(8)将{getset}------->getset
(9)将文件保存为beanName+".java"
FileUtil.saveTextFile(text, path + File.separator + getPackagePath(beanPackageName) + beanName + ".java");
7、准备controller模板
package {controllerPkgName};
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.zw.admin.server.page.table.PageTableRequest;
import com.zw.admin.server.page.table.PageTableHandler;
import com.zw.admin.server.page.table.PageTableResponse;
import com.zw.admin.server.page.table.PageTableHandler.CountHandler;
import com.zw.admin.server.page.table.PageTableHandler.ListHandler;
import {daoPackageName}.{daoName};
import {beanPackageName}.{beanName};
import io.swagger.annotations.ApiOperation;
@RestController
@RequestMapping("/{beanParamName}s")
public class {controllerName} {
@Autowired
private {daoName} {daoParamName};
@PostMapping
@ApiOperation(value = "保存")
public {beanName} save(@RequestBody {beanName} {beanParamName}) {
{daoParamName}.save({beanParamName});
return {beanParamName};
}
@GetMapping("/{id}")
@ApiOperation(value = "根据id获取")
public {beanName} get(@PathVariable Long id) {
return {daoParamName}.getById(id);
}
@PutMapping
@ApiOperation(value = "修改")
public {beanName} update(@RequestBody {beanName} {beanParamName}) {
{daoParamName}.update({beanParamName});
return {beanParamName};
}
@GetMapping
@ApiOperation(value = "列表")
public PageTableResponse list(PageTableRequest request) {
return new PageTableHandler(new CountHandler() {
@Override
public int count(PageTableRequest request) {
return {daoParamName}.count(request.getParams());
}
}, new ListHandler() {
@Override
public List<{beanName}> list(PageTableRequest request) {
return {daoParamName}.list(request.getParams(), request.getOffset(), request.getLimit());
}
}).handle(request);
}
@DeleteMapping("/{id}")
@ApiOperation(value = "删除")
public void delete(@PathVariable Long id) {
{daoParamName}.delete(id);
}
}
8、生成controller
9、准备dao模板
package {daoPackageName};
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Options;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import {beanPackageName}.{beanName};
@Mapper
public interface {daoName} {
@Select("select * from {table_name} t where t.id = #{id}")
{beanName} getById(Long id);
@Delete("delete from {table_name} where id = #{id}")
int delete(Long id);
int update({beanName} {beanParamName});
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("insert into {table_name}({insert_columns}) values({insert_values})")
int save({beanName} {beanParamName});
int count(@Param("params") Map<String, Object> params);
List<{beanName}> list(@Param("params") Map<String, Object> params, @Param("offset") Integer offset, @Param("limit") Integer limit);
}
10、生成dao
11、准备mapper.xml模板
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="{daoPackageName}.{daoName}">
<sql id="where">
<where>
{where}
</where>
</sql>
<select id="count" resultType="int">
select count(1) from {table_name} t
<include refid="where" />
</select>
<select id="list" resultType="{beanName}">
select * from {table_name} t
<include refid="where" />
${params.orderBy}
limit #{offset}, #{limit}
</select>
<update id="update">
update {table_name} t
<set>
{update_sets}
</set>
where t.id = #{id}
</update>
</mapper>
12、同样准备htmlAdd、htmlList、htmlUpdate,并生成相应文件
自动化生成Java Bean与DAO/Controller: Mysql表结构转Java对象
本文介绍了如何从Mysql表结构出发,通过SQL查询获取列信息,然后自动化组装成Java Bean类(如SysUser),并生成对应的DAO、Controller代码,包括数据操作接口和HTML页面。
2594

被折叠的 条评论
为什么被折叠?



