接続1.データベース
もちろん、私はMySQLを使用して、他のリレーショナルデータベースでも可能です
右のデータベースへのアイデアをクリックし、[+]をクリックします
次に、ポート、アカウントのパスワードを入力し、OKにログイン
テスト接続ボタンがポイントではない場合は、それにプラグインをダウンロードするには、ページの下部を参照してくださいするには
2.ダウンロードesayCodeプラグ(アイデアのいくつかのバージョンが既にインストールされ、自動的にインストールこの手順をスキップ)
プラグイン - >インストール簡単コードプラグイン検索 - >インストール後にアイデアを再起動するように注意を払うを!
3.デフォルトのテンプレートコードを生成します
。1.右に対応するテーブル→esaycode→コードを生成
パスコードに対応するパケットを選択し生成することができます
[設定]ページに移動します
ファイル→設定→esaycode
カスタムテンプレートを追加します。2.
絵の手順によると、
今度は、デフォルトのテンプレートの参照を変更することができます。
3.jdbcType変更
私はこのプロジェクトにint.long発見し、間違ったアイテムがここに与えられているxml形式jdbcTypeで生成されたデジタルデータの他のタイプは、jdbcTypeを変更することができます
以下に
##はMyBatisのために主にxmlファイルを生成するために使用されるサポートされます #foreach($ tableInfo.fullColumnで$コラム) ##ストレージ列タイプ $ tool.call($ column.ext.put( "sqlTypeに"、$ tool.getField($ column.obj.dataType、 "型名" ))) #もし($ 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="NUMERIC") #elseif($tool.newHashSet("java.lang.Long", "long").contains($column.type)) #set($jdbcType="NUMERIC") #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
改完后xml文件
4.贴上修改后的模板文件,希望可以用到
dao模板
##定义初始变量 #set($tableName = $tool.append($tableInfo.name, "Dao")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/dao")) ##拿到主键 #if(!$tableInfo.pkColumn.isEmpty()) #set($pk = $tableInfo.pkColumn.get(0)) #end #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dao; import $!{tableInfo.savePackageName}.dto.$!{tableInfo.name}Dto; import org.apache.ibatis.annotations.Param; import java.util.List; import org.apache.ibatis.annotations.Mapper; /** * $!{tableInfo.comment}($!{tableInfo.name})表数据库访问层 * * @author hd * @since $!time.currTime() */ @Mapper public interface $!{tableName} { /** * 通过ID查询单条数据 * * @param $!pk.name 主键 * @return 实例对象 */ $!{tableInfo.name}Dto queryById($!pk.shortType $!pk.name); /** * 查询指定行数据 * * @param offset 查询起始位置 * @param limit 查询条数 * @return 对象列表 */ List<$!{tableInfo.name}Dto> queryAllByLimit(@Param("offset") int offset, @Param("limit") int limit); /** * 通过实体作为筛选条件查询 * * @param $!tool.firstLowerCase($!{tableInfo.name})Dto 实例对象 * @return 对象列表 */ List<$!{tableInfo.name}Dto> queryAll($!{tableInfo.name}Dto $!tool.firstLowerCase($!{tableInfo.name})Dto); /** * 新增数据 * * @param $!tool.firstLowerCase($!{tableInfo.name})Dto 实例对象 * @return 影响行数 */ int insert($!{tableInfo.name}Dto $!tool.firstLowerCase($!{tableInfo.name})Dto); /** * 修改数据 * * @param $!tool.firstLowerCase($!{tableInfo.name})Dto 实例对象 * @return 影响行数 */ int update($!{tableInfo.name}Dto $!tool.firstLowerCase($!{tableInfo.name})Dto); /** * 通过主键删除数据 * * @param $!pk.name 主键 * @return 影响行数 */ int deleteById($!pk.shortType $!pk.name); }
xml 模板
##引入mybatis支持 $!mybatisSupport ##设置保存名称与保存位置 $!callback.setFileName($tool.append($!{tableInfo.name}, "Dao.xml")) $!callback.setSavePath($tool.append($modulePath, "/src/main/resources/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}.dao.$!{tableInfo.name}Dao"> <resultMap type="$!{tableInfo.savePackageName}.dto.$!{tableInfo.name}Dto" id="$!{tableInfo.name}Map"> #foreach($column in $tableInfo.fullColumn) <result property="$!column.name" column="$!column.obj.name" jdbcType="$!column.ext.jdbcType"/> #end </resultMap> <!--查询单个--> <select id="queryById" resultMap="$!{tableInfo.name}Map"> select #allSqlColumn() from $!tableInfo.obj.name where $!pk.obj.name = #{$!pk.name} </select> <!--查询指定行数据--> <select id="queryAllByLimit" resultMap="$!{tableInfo.name}Map"> select #allSqlColumn() from $!tableInfo.obj.name limit #{offset}, #{limit} </select> <!--通过实体作为筛选条件查询--> <select id="queryAll" resultMap="$!{tableInfo.name}Map"> select #allSqlColumn() from $!tableInfo.obj.name <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> </select> <!--新增所有列--> <insert id="insert" keyProperty="$!pk.name" useGeneratedKeys="true"> insert into $!{tableInfo.obj.name}(#foreach($column in $tableInfo.otherColumn)$!column.obj.name#if($velocityHasNext), #end#end) values (#foreach($column in $tableInfo.otherColumn)#{$!{column.name}}#if($velocityHasNext), #end#end) </insert> <!--通过主键修改数据--> <update id="update"> 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> <!--通过主键删除--> <delete id="deleteById"> delete from $!{tableInfo.obj.name} where $!pk.obj.name = #{$!pk.name} </delete> </mapper>
entity模板
##引入宏定义 $!define ##使用宏定义设置回调(保存位置与文件后缀) #save("/entity", ".java") ##使用宏定义设置包后缀 #setPackageSuffix("entity") ##使用全局变量实现默认包导入 /** * $!{tableInfo.comment}($!{tableInfo.name})实体类 * * @author hd * @since $!time.currTime() */ import java.io.Serializable; import lombok.Data; @Data 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 #foreach($column in $tableInfo.fullColumn) ##使用宏定义实现get,set方法 ##getSetMethod($column) #end }
dto模板
##定义初始变量 #set($tableName = $tool.append($tableInfo.name, "Dto")) ##设置回调 $!callback.setFileName($tool.append($tableName, ".java")) $!callback.setSavePath($tool.append($tableInfo.savePath, "/dto")) #if($tableInfo.savePackageName)package $!{tableInfo.savePackageName}.#{end}dto; /** * $!{tableInfo.comment}($!{tableInfo.name})Dto * * @author hd * @since $!time.currTime() */ import lombok.Data; import $!{tableInfo.savePackageName}.entity.$!{tableInfo.name}; @Data public class $!{tableInfo.name}Dto extends $!{tableInfo.name} { }