idea 使用 easyCode 插件快速生成代碼,類似mybatis逆向生成代碼


可參考EasyCode文檔說明: https://gitee.com/makejava/EasyCode/wikis/pages

1.打開idea搜索並安裝easyCode插件(以下截圖為安裝成功之后的截圖)

 

2.安裝成功之后可以找到插件自帶的模板根據需求自行修改

a.根據需求自行添加數據庫類型跟實體類類型的映射

 

b.修改mapper.xml文件生成的位置為與Mapper.java同一目錄下(默認生成位置為 resources/mapper 目錄下)

 

3.建立數據庫鏈接

 

 4.數據庫連接之后打開,點擊表名右鍵生成代碼

 

點擊Choose鍵或手動輸入選擇生成包路徑,勾選想要生成的代碼模板並點擊ok即可

 

5.相關模板代碼

 

 

 

 entity.java

##引入宏定義
$!define
##使用宏定義設置回調(保存位置與文件后綴)
#save("/entity", ".java")
##使用宏定義設置包后綴
#setPackageSuffix("entity")

##使用全局變量實現默認包導入
$!autoImport
import java.io.Serializable;

##使用宏定義實現類注釋信息
###tableComment("實體類")
/**
 * 表($!{tableInfo.obj.name})實體類
 * 表說明:$!{tableInfo.comment}
 * @author $!author
 * @since $!time.currTime()
 */
public class $!{tableInfo.name} implements Serializable {
    private static final long serialVersionUID = $!tool.serial();
#foreach($column in $tableInfo.fullColumn)
    #if(${column.comment})/**
    * ${column.comment}
    */#end

    private $!{tool.getClsNameByFullName($column.type)} $!{column.name};
#end

    /**
     * 分頁查詢-第幾頁
     */
    private Integer pageNum;

    /**
     * 分頁查詢-每頁大小
     */
    private Integer pageSize;

    public Integer getPageNum() {
        return pageNum;
    }

    public void setPageNum(Integer pageNum) {
        this.pageNum = pageNum;
    }
    
    public Integer getPageSize() {
        return pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

#foreach($column in $tableInfo.fullColumn)
##使用宏定義實現get,set方法
#getSetMethod($column)
#end

}

 

service.java

##定義初始變量
#set($tableName = $tool.append($tableInfo.name, "Service"))
##設置回調
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service"))

##拿到主鍵
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service;

import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import java.util.Map;
import java.util.List;

/**
 * 表($!{tableInfo.obj.name})服務接口
 * 表說明:$!{tableInfo.comment}
 * @author $!author
 * @since $!time.currTime()
 */
public interface $!{tableName}{

    /**
     * 插入
     * @author $!author
     * @since $!time.currTime()
     * @param
     * @return
     */
    int insertSelective($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * 通過id刪除
     * @author $!author
     * @since $!time.currTime()
     * @param id
     * @return
     */
    int deleteByPrimaryKey(Long id);

    /**
     * 更新
     * @author $!author
     * @since $!time.currTime()
     * @param
     * @return
     */
    int updateByPrimaryKeySelective($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name}));

    /**
     * 通過id查詢
     * @author $!author
     * @since $!time.currTime()
     * @param id
     * @return
     */
    $!{tableInfo.name} selectByPrimaryKey(Long id);
    
    /**
     * 查詢列表
     * @author $!author
     * @since $!time.currTime()
     * @param paramMap
     * @return
     */
    List<$!{tableInfo.name}> selectList(Map<String, Object> paramMap);
    
}

 

 

serviceImpl.java

##定義初始變量
#set($tableName = $tool.append($tableInfo.name, "ServiceImpl"))
##設置回調
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/service/impl"))

##拿到主鍵
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}service.impl;

import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper;
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.stereotype.Service;
import org.springframework.beans.factory.annotation.Autowired;
import java.util.Map;
import java.util.List;

/**
 * 表($!{tableInfo.obj.name})服務實現類
 * 表說明:$!{tableInfo.comment}
 * @author $!author
 * @since $!time.currTime()
 */
@Service
public class $!{tableName} implements $!{tableInfo.name}Service {
    @Autowired
    private $!{tableInfo.name}Mapper $!tool.firstLowerCase($!{tableInfo.name})Mapper;

    /**
     * 插入
     * @author $!author
     * @date $!time.currTime()
     * @param
     * @return
     */
    @Override
    public int insertSelective($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
##        return $!tool.firstLowerCase($!{tableInfo.name})Mapper.insertSelective();
        return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.insertSelective($!tool.firstLowerCase($!{tableInfo.name}));
    }

    /**
     * 通過id刪除
     * @author $!author
     * @date $!time.currTime()
     * @param id
     * @return
     */
    @Override
    public int deleteByPrimaryKey(Long id) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.deleteByPrimaryKey(id);
    }

    /**
     * 更新
     * @author $!author
     * @date $!time.currTime()
     * @param
     * @return
     */
    @Override
    public int updateByPrimaryKeySelective($!{tableInfo.name} $!tool.firstLowerCase($!{tableInfo.name})) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.updateByPrimaryKeySelective($!tool.firstLowerCase($!{tableInfo.name}));
    }

    /**
     * 通過id查詢
     * @author $!author
     * @date $!time.currTime()
     * @param id
     * @return
     */
    @Override
    public $!{tableInfo.name} selectByPrimaryKey(Long id) {
        return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.selectByPrimaryKey(id);
    }

    /**
     * 查詢列表
     * @author $!author
     * @date $!time.currTime()
     * @param paramMap
     * @return
     */
    @Override
    public List<$!{tableInfo.name}> selectList(Map<String, Object> paramMap) {
##        return $!tool.firstLowerCase($!{tableInfo.name})Mapper.selectList(paramMap);
        return $!{tool.firstLowerCase($!{tableInfo.name})}Mapper.selectList(paramMap);
    }
}

 

controller.java

##定義初始變量
#set($tableName = $tool.append($tableInfo.name, "RestController"))
##設置回調
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/restController"))
##拿到主鍵
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}restController;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.gxjcxy.common.base.BaseController;
import com.gxjcxy.common.util.ReturnData;
import com.gxjcxy.common.util.MapUtils;
import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import $!{tableInfo.savePackageName}.service.$!{tableInfo.name}Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.List;
import java.util.Map;


/**
 * 表($!{tableInfo.obj.name})控制層
 * 表說明:$!{tableInfo.comment}
 * @author $!author
 * @since $!time.currTime()
 */
@RestController
@RequestMapping("$!tool.firstLowerCase($tableInfo.name)")
public class $!{tableName} extends BaseController {

    @Autowired
    private $!{tableInfo.name}Service $!tool.firstLowerCase($tableInfo.name)Service;
    
   /**
    * 添加
    * @author $!author
    * @date $!time.currTime()
    * @param request
    * @param response
    * @return
    */
    @RequestMapping(value="/insert",produces = "application/json;charset=utf-8", method = RequestMethod.POST)
    public String insert(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, HttpServletRequest request, HttpServletResponse response){
        int res = $!{tool.firstLowerCase($tableInfo.name)}Service.insertSelective($!{tool.firstLowerCase($tableInfo.name)});
        return res>=1?ReturnData.ADD_SUCCESS().toString():ReturnData.ADD_FAIL().toString();
    }
    
   /**
    * 刪除
    * @author $!author
    * @date $!time.currTime()
    * @param request
    * @param response
    * @return
    */
    @RequestMapping(value="/delete",produces = "application/json;charset=utf-8", method = RequestMethod.POST)
    public String delete(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, HttpServletRequest request, HttpServletResponse response){
        int res = $!{tool.firstLowerCase($tableInfo.name)}Service.deleteByPrimaryKey($!{tool.firstLowerCase($tableInfo.name)}.getId());
        return res>=1?ReturnData.DELETE_SUCCESS().toString():ReturnData.DELETE_FAIL().toString();
    }
    
   /**
    * 更新
    * @author $!author
    * @date $!time.currTime()
    * @param request
    * @param response
    * @return
    */
    @RequestMapping(value="/update",produces = "application/json;charset=utf-8", method = RequestMethod.POST)
    public String update(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, HttpServletRequest request, HttpServletResponse response){
        int res = $!{tool.firstLowerCase($tableInfo.name)}Service.updateByPrimaryKeySelective($!{tool.firstLowerCase($tableInfo.name)});
        return res>=1?ReturnData.UPDATE_SUCCESS().toString():ReturnData.UPDATE_FAIL().toString();
    }
    
   /**
    * 查詢
    * @author $!author
    * @date $!time.currTime()
    * @param request
    * @param response
    * @return
    */
    @RequestMapping(value="/select",produces = "application/json;charset=utf-8",method = RequestMethod.POST)
    public String select(@RequestBody $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, HttpServletRequest request, HttpServletResponse response){
        $!{tableInfo.name} res = $!{tool.firstLowerCase($tableInfo.name)}Service.selectByPrimaryKey($!{tool.firstLowerCase($tableInfo.name)}.getId());
        return ReturnData.SUCCESS(res).toString();
    }
    
   /**
    * 分頁查詢列表
    * @author $!author
    * @date $!time.currTime()
    * @param request
    * @param response
    * @return
    */
    @RequestMapping(value="/selectList",produces = "application/json;charset=utf-8",method = RequestMethod.POST)
    public String selectList(@RequestBody(required = false) $!{tableInfo.name} $!{tool.firstLowerCase($tableInfo.name)}, HttpServletRequest request, HttpServletResponse response){
        Map<String, Object> rMap = new HashMap<String, Object>();
        if($!{tool.firstLowerCase($tableInfo.name)} == null){
            $!{tool.firstLowerCase($tableInfo.name)} = new $!{tableInfo.name}();
        }
        Map<String, Object> paramMap = MapUtils.beanToMap($!{tool.firstLowerCase($tableInfo.name)});
        // 此處查詢需要自行編寫
        PageHelper.startPage(getPageNum($!{tool.firstLowerCase($tableInfo.name)}.getPageNum()),getPageSize($!{tool.firstLowerCase($tableInfo.name)}.getPageSize()));
        List<$!{tableInfo.name}> lists = $!{tool.firstLowerCase($tableInfo.name)}Service.selectList(paramMap);
        PageInfo<$!{tableInfo.name}>  p2 = new PageInfo<$!{tableInfo.name}>(lists);
        rMap.put("pageNum", p2.getPageNum()); //  當前頁
        rMap.put("pages", p2.getPages()); //  總頁數
        rMap.put("nextPage", p2.getNextPage()); // 下一頁
        rMap.put("prePage", p2.getPrePage()); // 上一頁
        rMap.put("data", p2.getList()); // 數據集合
        rMap.put("count", p2.getTotal()); // 總行數
        PageHelper.clearPage(); // 如果開啟分頁,必須調用清除
        return ReturnData.SUCCESS(rMap).toString();
    }

}

 

mapper.xml

##引入mybatis支持
$!mybatisSupport

##設置保存名稱與保存位置
$!callback.setFileName($tool.append($!{tableInfo.name}, "Mapper.xml"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/mapper"))

##拿到主鍵
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

<?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="$!{tableInfo.savePackageName}.mapper.$!{tableInfo.name}Mapper">

    <resultMap type="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" id="baseResultMap">
#foreach($column in $tableInfo.fullColumn)
        <result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/>
#end
    </resultMap>
    
    <sql id="baseColumnList">
        #foreach($column in $tableInfo.fullColumn) $!column.obj.name#if($foreach.hasNext),#end#end
        
    </sql>
    <sql id="sql_where">
        <where>
#foreach($column in $tableInfo.fullColumn)
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                and $!column.obj.name = #{$!column.name}
            </if>
#end
        </where>
    </sql>
    
    <!--插入操作-->
    <insert id="insertSelective" parameterType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" keyProperty="$!pk.name" useGeneratedKeys="true">
        insert into $!{tableInfo.obj.name}
        <trim prefix="(" suffix=")" suffixOverrides=",">
#foreach($column in $tableInfo.fullColumn)
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                $!column.obj.name,
            </if>
#end
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
#foreach($column in $tableInfo.fullColumn)
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                #{$!{column.name}},
            </if>
#end
        </trim>
    </insert>

    <!--根據id刪除-->
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
        delete from $!tableInfo.obj.name
        where $!pk.obj.name = #{$!pk.name}
    </delete>

    <!--更新操作-->
    <update id="updateByPrimaryKeySelective" parameterType="$!{tableInfo.savePackageName}.entity.$!{tableInfo.name}" >
        update $!{tableInfo.obj.name}
        <set>
#foreach($column in $tableInfo.otherColumn)
            <if test="$!column.name != null#if($column.type.equals("java.lang.String")) and $!column.name != ''#end">
                $!column.obj.name = #{$!column.name},
            </if>
#end
        </set>
        where $!pk.obj.name = #{$!pk.name}
    </update>
    
    <!--根據id查詢-->
    <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultMap="baseResultMap">
        select 
        <include refid="baseColumnList" />
        from $!tableInfo.obj.name
        where $!pk.obj.name = #{$!pk.name}
    </select>
    
    <!--列表查詢-->
    <select id="selectList" parameterType="java.util.Map" resultMap="baseResultMap">
        select 
     <include refid="baseColumnList"/>
     from $!tableInfo.obj.name <include refid="sql_where" /> </select> </mapper>

 

mapper.java

##定義初始變量
#set($tableName = $tool.append($tableInfo.name, "Mapper"))
##設置回調
$!callback.setFileName($tool.append($tableName, ".java"))
$!callback.setSavePath($tool.append($tableInfo.savePath, "/mapper"))

##拿到主鍵
#if(!$tableInfo.pkColumn.isEmpty())
    #set($pk = $tableInfo.pkColumn.get(0))
#end

#if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}mapper;

import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name};
import com.gxjcxy.common.base.BaseMapper;

/**
* 表($!{tableInfo.obj.name})數據庫訪問層
* 表說明:$!{tableInfo.comment}
* @author $!author
* @since $!time.currTime()
*/
public interface $!{tableName} extends BaseMapper<$!{tableInfo.name}> { }

 

文檔說明:

說明文檔:
    屬性
    $author 設置中的作者 java.lang.String
    $encode 設置的編碼 java.lang.String
    $modulePath 選中的module路徑 java.lang.String
    $projectPath 項目絕對路徑 java.lang.String

    對象
    $tableInfo 表對象
        obj 表原始對象 com.intellij.database.model.DasTable
        name 表名(轉換后的首字母大寫)java.lang.String
        comment 表注釋 java.lang.String
        fullColumn 所有列 java.util.List<ColumnInfo>
        pkColumn 主鍵列 java.util.List<ColumnInfo>
        otherColumn 其他列 java.util.List<ColumnInfo>,除主鍵以外的列
        savePackageName 保存的包名 java.lang.String
        savePath 保存路徑 java.lang.String
        saveModelName 保存的model名稱 java.lang.String
    columnInfo 列對象
        obj 列原始對象 com.intellij.database.model.DasColumn
        name 列名(首字母小寫) java.lang.String
        comment 列注釋 java.lang.String
        type 列類型(類型全名) java.lang.String
        shortType 列類型(短類型) java.lang.String
        custom 是否附加列 java.lang.Boolean
        ext 附加字段(Map類型) java.lang.Map<java.lang.String, java.lang.Object>
    $tableInfoList java.util.List<TableInfo>所有選中的表
    $importList 所有需要導入的包集合 java.util.Set<java.lang.String>

    回調
    &callback        setFileName(String) 設置文件儲存名字
        setSavePath(String) 設置文件儲存路徑,默認使用選中路徑

    工具
    $tool
        firstUpperCase(String name) 首字母大寫方法
        firstLowerCase(String name) 首字母小寫方法
        getClsNameByFullName(String fullName) 通過包全名獲取類名
        getJavaName(String name) 將下划線分割字符串轉駝峰命名(屬性名)
        getClassName(String name) 將下划線分割字符串轉駝峰命名(類名)
        append(Object... objs) 多個數據進行拼接
        newHashSet(Object... objs) 創建一個HashSet對象
        newArrayList(Object... objs) 創建一個ArrayList對象
        newLinkedHashMap() 創建一個LinkedHashMap()對象
        newHashMap() 創建一個HashMap()對象
        getField(Object obj, String fieldName) 獲取對象的屬性值,可以訪問任意修飾符修飾的屬性.配合debug方法使用.
        call(Object... objs) 空白執行方法,用於調用某些方法時消除返回值
        debug(Object obj) 調式方法,用於查詢對象結構.可查看對象所有屬性與public方法
        serial() 隨機獲取序列化的UID
        service(String serviceName, Object... param)遠程服務調用
        parseJson(String) 將字符串轉Map對象
        toJson(Object, Boolean) 將對象轉json對象,Boolean:是否格式化json,不填時為不格式化。
    $time
        currTime(String format) 獲取當前時間,指定時間格式(默認:yyyy-MM-dd HH:mm:ss)
    $generateService
        run(String, Map<String,Object>) 代碼生成服務,參數1:模板名稱,參數2:附加參數。

 

 

Global Config : init

##初始化區域

##去掉表的t_前綴
#if($tableInfo.obj.name.startsWith("t_"))
    $!tableInfo.setName($tool.getClassName($tableInfo.obj.name.substring(2)))
#end

##實現動態排除列
#set($temp = $tool.newHashSet("testCreateTime", "otherColumn"))
#foreach($item in $temp)
    #set($newList = $tool.newArrayList())
    #foreach($column in $tableInfo.fullColumn)
        #if($column.name!=$item)
            ##帶有反回值的方法調用時使用$tool.call來消除返回值
            $tool.call($newList.add($column))
        #end
    #end
    ##重新保存
    $tableInfo.setFullColumn($newList)
#end

##對importList進行篡改
#set($temp = $tool.newHashSet())
#foreach($column in $tableInfo.fullColumn)
    #if(!$column.type.startsWith("java.lang."))
        ##帶有反回值的方法調用時使用$tool.call來消除返回值
        $tool.call($temp.add($column.type))
    #end
#end
##覆蓋
#set($importList = $temp)

 

Global Config : define

##(Velocity宏定義)
###setPackageSuffix()

##定義設置表名后綴的宏定義,調用方式:#setTableSuffix("Test")
#macro(setTableSuffix $suffix)
    #set($tableName = $!tool.append($tableInfo.name, $suffix))
#end

##定義設置包名后綴的宏定義,調用方式:#setPackageSuffix("Test")
#macro(setPackageSuffix $suffix)
#if($suffix!="")package #end#if($tableInfo.savePackageName!="")$!{tableInfo.savePackageName}.#{end}$!suffix;
#end

##定義直接保存路徑與文件名簡化的宏定義,調用方式:#save("/entity", ".java")
#macro(save $path $fileName)
    $!callback.setSavePath($tool.append($tableInfo.savePath, $path))
    $!callback.setFileName($tool.append($tableInfo.name, $fileName))
#end

##定義表注釋的宏定義,調用方式:#tableComment("注釋信息")
#macro(tableComment $desc)
/**
 * $!{tableInfo.comment}($!{tableInfo.name})$desc
 *
 * @author $!author
 * @since $!time.currTime()
 */
#end

##定義GET,SET方法的宏定義,調用方式:#getSetMethod($column)
#macro(getSetMethod $column)

    public $!{tool.getClsNameByFullName($column.type)} get$!{tool.firstUpperCase($column.name)}() {
        return $!{column.name};
    }

    public void set$!{tool.firstUpperCase($column.name)}($!{tool.getClsNameByFullName($column.type)} $!{column.name}) {
        this.$!{column.name} = $!{column.name};
    }
#end

 

Global Config : autoImport

##自動導入包(僅導入實體屬性需要的包,通常用於實體類)
#foreach($import in $importList)
import $!import;
#end

 

Global Config : mybatisSupport

##針對Mybatis 進行支持,主要用於生成xml文件
#foreach($column in $tableInfo.fullColumn)
    ##儲存列類型
    $tool.call($column.ext.put("sqlType", $tool.getField($column.obj.dataType, "typeName")))
    #if($tool.newHashSet("java.lang.String").contains($column.type))
        #set($jdbcType="VARCHAR")
    #elseif($tool.newHashSet("java.lang.Boolean", "boolean").contains($column.type))
        #set($jdbcType="BOOLEAN")
    #elseif($tool.newHashSet("java.lang.Byte", "byte").contains($column.type))
        #set($jdbcType="BYTE")
    #elseif($tool.newHashSet("java.lang.Integer", "int", "java.lang.Short", "short").contains($column.type))
        #set($jdbcType="INTEGER")
    #elseif($tool.newHashSet("java.lang.Long", "long").contains($column.type))
        #set($jdbcType="INTEGER")
    #elseif($tool.newHashSet("java.lang.Float", "float", "java.lang.Double", "double").contains($column.type))
        #set($jdbcType="NUMERIC")
    #elseif($tool.newHashSet("java.util.Date", "java.sql.Timestamp", "java.time.Instant", "java.time.LocalDateTime", "java.time.OffsetDateTime", "    java.time.ZonedDateTime").contains($column.type))
        #set($jdbcType="TIMESTAMP")
    #elseif($tool.newHashSet("java.sql.Date", "java.time.LocalDate").contains($column.type))
        #set($jdbcType="TIMESTAMP")
    #else
        ##其他類型
        #set($jdbcType="OTHER")
    #end
    $tool.call($column.ext.put("jdbcType", $jdbcType))
#end

##定義宏,查詢所有列
#macro(allSqlColumn)#foreach($column in $tableInfo.fullColumn)$column.obj.name#if($velocityHasNext), #end#end#end

 

Global Config : author

linmr

 

 

6.相關聯的一些類

BaseController.java
package com.gxjcxy.common.base;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;

import com.gxjcxy.common.util.ImageUtil;
import com.gxjcxy.common.util.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;


@Controller
@RequestMapping(value="/base")
public class BaseController {
    protected Logger logger = LoggerFactory.getLogger(getClass());

    protected Integer pageSize = 10; // 分頁顯示數量

    @Value("${system.address}")
    protected String system_address; // 項目地址

    @Value("${system.system_base_photo}")
    protected String system_base_photo ; //圖片上傳目錄

    @Value("${system.system_base_video}")
    protected String system_base_video ; //視頻上傳目錄

    @Value("${system.images}")
    protected String images;


    /**
     * 文件上傳功能
     * @param file
     * @return
     * @throws IOException
     */
    @RequestMapping(value="/uploadFile",method=RequestMethod.POST)
    @ResponseBody
    public String upload(MultipartFile file, HttpServletRequest request) throws IOException{
        Map<String, Object> cmap = new HashMap<String, Object>();
        Map<String, Object> pmap = new HashMap<String, Object>();
        String fileName = ImageUtil.imgFileUpload(file,system_base_photo);
        cmap.put("code", 0);
        cmap.put("msg", "上傳成功");
        pmap.put("src",images + fileName);
        cmap.put("data", pmap);
        return toJSONString(cmap);
    }

    /**
     *  obj 轉 json
     * @param obj
     * @return
     */
    public String toJSONString(Object obj){
        return JSON.toJSONString(obj);
    }

    /**
     * 判斷對象是否為空  (obj,list,map)
     * @param obj
     * @return
     */
    public boolean isEmpty(Object obj){
        return StringUtils.isNullOrEmpty(obj);
    }

    /**
     * 判斷字符串是否為空或長度為0
     * @param value
     * @return
     */
    public boolean isEmpty(String value){
        return (value == null || value.equals(""));
    }

    /**
     * 頁碼(PageHelper)
     * @param pageNum
     * @return
     */
    public int getPageNum(Integer pageNum){
        if(pageNum==null||pageNum<1)pageNum = 1;
        return pageNum;
    }

    /**
     * 每頁條數(PageHelper)
     * @return
     */
    public int getPageSize(Integer pageSize){
        if(pageSize==null||pageSize<1)
            pageSize = this.pageSize;
        return pageSize;
    }

    /**
     * json字符串轉成json對象
     * @param data
     * @return
     */
    public JSONObject toJsonObj(String data){
        return JSONObject.parseObject(data);
    }

}

 

BaseMapper.java
package com.gxjcxy.common.base;

import java.util.List;
import java.util.Map;

public interface BaseMapper<T> {

/**
* 插入
* @param
* @return
*/
int insertSelective(T t);

/**
* 通過id刪除
* @param id
* @return
*/
int deleteByPrimaryKey(Long id);

/**
* 更新
* @param
* @return
*/
int updateByPrimaryKeySelective(T t);

/**
* 通過id查詢
* @param id
* @return
*/
T selectByPrimaryKey(Long id);

/**
* 查詢列表
* @param paramMap
* @return
*/
List<T> selectList(Map<String, Object> paramMap);

}

 

ReturnData.java

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;

/**
 * 響應數據結構封裝
 */
public class ReturnData<T> {
    private String status; // 狀態碼

    private String msg; // 提示語

    private T data;  // 數據集合

    public static <T> ReturnData<T> SUCCESS(T data) {
        return new ReturnData<T>(Status.SUCCESS.status, Status.SUCCESS.msg, data);
    }
    public static <T> ReturnData<T> SUCCESS(String msg) {
        return new ReturnData<T>(Status.SUCCESS.status, msg);
    }
    public static <T> ReturnData<T> SUCCESS() {
        return new ReturnData<T>(Status.SUCCESS.status, Status.SUCCESS.msg);
    }
    public static <T> ReturnData<T> ADD_SUCCESS() {
        return new ReturnData<T>(Status.ADD_SUCCESS.status, Status.ADD_SUCCESS.msg);
    }
    public static <T> ReturnData<T> DELETE_SUCCESS() {
        return new ReturnData<T>(Status.DELETE_SUCCESS.status, Status.DELETE_SUCCESS.msg);
    }
    public static <T> ReturnData<T> UPDATE_SUCCESS() {
        return new ReturnData<T>(Status.UPDATE_SUCCESS.status, Status.UPDATE_SUCCESS.msg);
    }

    public static <T> ReturnData<T> FAIL(String msg) {
        return new ReturnData<T>(Status.FAIL.status, msg);
    }
    public static <T> ReturnData<T> FAIL() {
        return new ReturnData<T>(Status.FAIL.status, Status.FAIL.msg);
    }
    public static <T> ReturnData<T> ADD_FAIL() {
        return new ReturnData<T>(Status.ADD_FAIL.status, Status.ADD_FAIL.msg);
    }
    public static <T> ReturnData<T> DELETE_FAIL() {
        return new ReturnData<T>(Status.DELETE_FAIL.status, Status.DELETE_FAIL.msg);
    }
    public static <T> ReturnData<T> UPDATE_FAIL() {
        return new ReturnData<T>(Status.UPDATE_FAIL.status, Status.UPDATE_FAIL.msg);
    }

    public static <T> ReturnData<T> ERROR(String msg) {
        return new ReturnData<T>(Status.ERROR.status, msg);
    }

    public static <T> ReturnData<T> ERROR() {
        return new ReturnData<T>(Status.ERROR.status, Status.ERROR.msg);
    }


    public ReturnData(String status, String msg, T data) {
        this.status = status;
        this.msg = msg;
        this.data = data;
    }

    public ReturnData(String status, String msg) {
        this.status = status;
        this.msg = msg;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }
    /**
     * 如果字段為null,該字段不顯示
     */
    public String toString() {
        return JSON.toJSONString(this);
    }
    /**
     * 返回全部字段,包括null
     * @return
     */
    public String toAllString(){
        return JSON.toJSONString(this, SerializerFeature.WriteMapNullValue);
    }
    
}

 

 
Status枚舉
/**
 * 
 */
public enum Status {

    FAIL("0", "失敗")
    ,ADD_FAIL("0", "添加失敗")
    ,DELETE_FAIL("0", "刪除失敗")
    ,UPDATE_FAIL("0", "修改失敗")
    ,SUCCESS("1", "成功")
    ,ADD_SUCCESS("1", "添加成功")
    ,DELETE_SUCCESS("1", "刪除成功")
    ,UPDATE_SUCCESS("1", "修改成功")
    ,ERROR("2", "錯誤")
    ,USER_NOFOUND("3", "用戶不存在")
    ,ERROR_ACCOUNT("4", "賬號或密碼錯誤")
    ,USER_EXIST("5", "用戶已存在")
    ,USER_LOCK("6", "賬號被鎖定,請聯系管理員")
    ,IP_LOCK("7", "IP 被鎖定,請聯系管理員")
    ,PARAM_ERROR("400", "參數錯誤")
    ,Token_Expired("1044", "token Invalid expired") // token 失效
    ;

    public String status; // 狀態碼
    public String msg; // 提示語

    Status(String status, String msg) {
        this.status = status;
        this.msg = msg;
    }

}

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM