天天看點

spring boot mybatis生成模型檔案(generator)mybatis-generator:generate

今天說明一下spring boot mybatis整合後使用generator生成模型檔案,其中包括三個檔案:

說明:本文使用user_info資料庫表做說明,前提是已經實作spring boot mybatis整合

1,【dao層接口檔案】Mapper.java檔案

2,【mapper.xml檔案】mapper.xml檔案

3,【model對象也就是javabean檔案】bean.java檔案

一,實作步驟:

pom.xml檔案

1,在

<build>
       <plugins>
       </plugins>
</build>
           

中新增配置

<plugin>  
                <groupId>org.mybatis.generator</groupId>  
                <artifactId>mybatis-generator-maven-plugin</artifactId>  
                <version>1.3.5</version>  
                <dependencies>   
                    <dependency>  
                        <groupId>org.mybatis.generator</groupId>  
                        <artifactId>mybatis-generator-core</artifactId>  
                        <version>1.3.5</version>  
                    </dependency>  
                </dependencies>  
                <executions>  
                    <execution>  
                        <id>Generate MyBatis Artifacts</id>  
                        <phase>package</phase>  
                        <goals>  
                            <goal>generate</goal>  
                        </goals>  
                    </execution>  
                </executions>  
                <configuration>  
                    <!--允許移動生成的檔案 -->  
                    <verbose>true</verbose>  
                    <!-- 是否覆寫 -->  
                    <overwrite>true</overwrite>  
                    <!-- 自動生成的配置 -->  
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                </configuration>  
            </plugin>  
           

2,在src/main/resources目錄下建立xml配置檔案generatorConfig.xml

<?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE generatorConfiguration
         PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
         "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
 
 <generatorConfiguration>
 		<!-- jdbc連接配接的mysql或者oracle的連接配接包jar,最好是配置為絕對路徑 -->
     <classPathEntry
             location="F:\MavenRepository\mysql\mysql-connector-java\5.1.39\mysql-connector-java-5.1.39.jar"/>
     <context id="my" targetRuntime="MyBatis3">
         <commentGenerator>
             <property name="suppressDate" value="false"/>
             <property name="suppressAllComments" value="true"/>
         </commentGenerator>
 		<!-- 配置資料源資訊,多資料源需要配置多份檔案,對應需要修改資料源資訊,可以使不同主機的資料庫,也可以是同一資料庫伺服器上的不同資料庫名 -->
         <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/test" userId="root" password="root">    
        </jdbcConnection>   
 		<!-- 配置生成的model對象也就是javabean,對應資料庫表屬性的javabean生成到的包路徑和絕對代碼路徑,隻需要配置到工程的/src/main/java就可以了,具體的路徑由包路徑指定。
 			由于多資料源,是以我在model後面加了一層以示區分不同資料源的資訊 -->
         <javaModelGenerator targetPackage="com.mycompany.mavenspringboot.model" targetProject="F:\SVNFile\mavenSpringBoot\model">
             <property name="enableSubPackages" value="true"/>
             <property name="trimStrings" value="true"/>
         </javaModelGenerator>
 		<!-- mapper.xml檔案生成路勁和包名 -->
         <sqlMapGenerator targetPackage="mapper" targetProject="F:\SVNFile\mavenSpringBoot\model">
             <property name="enableSubPackages" value="true"/>
         </sqlMapGenerator>
 		<!-- dao層接口檔案 -->
         <javaClientGenerator targetPackage="com.mycompany.mavenspringboot.mapper" targetProject="F:\SVNFile\mavenSpringBoot\model" type="XMLMAPPER">
             <property name="enableSubPackages" value="true"/>
         </javaClientGenerator>
 		<!-- 資料庫裡面的表名資訊和配置,多張表需要配置多條資訊 
                mybatis-generator:generate
                -->
            <table tableName="user_info" domainObjectName="UserInfo"
                enableCountByExample="false" enableUpdateByExample="false"
                enableDeleteByExample="false" enableSelectByExample="false"
                selectByExampleQueryId="false">
            </table> 
     </context>
 </generatorConfiguration>
           

到這裡,配置已經完成

下面我已netbeans8.0作為示範,生成結果(由于筆者使用Netbeans開發工具,其他開發工具可參照,因為此操作與開發工具影響不大)

3,點選pom.xml檔案右鍵 ->運作Maven-->目标,然後出現

spring boot mybatis生成模型檔案(generator)mybatis-generator:generate
spring boot mybatis生成模型檔案(generator)mybatis-generator:generate
spring boot mybatis生成模型檔案(generator)mybatis-generator:generate

在目标中輸入,點選确定

spring boot mybatis生成模型檔案(generator)mybatis-generator:generate
spring boot mybatis生成模型檔案(generator)mybatis-generator:generate

結果已經生成在對象你設定的檔案目錄下。

spring boot mybatis生成模型檔案(generator)mybatis-generator:generate

下面給出檔案示例;

1,【dao層接口檔案】UserInfoMapper.java檔案

package com.mycompany.mavenspringboot.mapper;

import com.mycompany.mavenspringboot.model.UserInfo;

public interface UserInfoMapper {
    int deleteByPrimaryKey(Integer userid);

    int insert(UserInfo record);

    int insertSelective(UserInfo record);

    UserInfo selectByPrimaryKey(Integer userid);

    int updateByPrimaryKeySelective(UserInfo record);

    int updateByPrimaryKey(UserInfo record);
}
           

2,【mapper.xml檔案】UserInfoMapper.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="com.mycompany.mavenspringboot.mapper.UserInfoMapper">
  <resultMap id="BaseResultMap" type="com.mycompany.mavenspringboot.model.UserInfo">
    <id column="userid" jdbcType="INTEGER" property="userid" />
    <result column="loginname" jdbcType="VARCHAR" property="loginname" />
    <result column="loginpwd" jdbcType="VARCHAR" property="loginpwd" />
    <result column="nickname" jdbcType="VARCHAR" property="nickname" />
    <result column="status" jdbcType="TINYINT" property="status" />
  </resultMap>
  <sql id="Base_Column_List">
    userid, loginname, loginpwd, nickname, status
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from user_info
    where userid = #{userid,jdbcType=INTEGER}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    delete from user_info
    where userid = #{userid,jdbcType=INTEGER}
  </delete>
  <insert id="insert" parameterType="com.mycompany.mavenspringboot.model.UserInfo">
    insert into user_info (userid, loginname, loginpwd, 
      nickname, status)
    values (#{userid,jdbcType=INTEGER}, #{loginname,jdbcType=VARCHAR}, #{loginpwd,jdbcType=VARCHAR}, 
      #{nickname,jdbcType=VARCHAR}, #{status,jdbcType=TINYINT})
  </insert>
  <insert id="insertSelective" parameterType="com.mycompany.mavenspringboot.model.UserInfo">
    insert into user_info
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="userid != null">
        userid,
      </if>
      <if test="loginname != null">
        loginname,
      </if>
      <if test="loginpwd != null">
        loginpwd,
      </if>
      <if test="nickname != null">
        nickname,
      </if>
      <if test="status != null">
        status,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="userid != null">
        #{userid,jdbcType=INTEGER},
      </if>
      <if test="loginname != null">
        #{loginname,jdbcType=VARCHAR},
      </if>
      <if test="loginpwd != null">
        #{loginpwd,jdbcType=VARCHAR},
      </if>
      <if test="nickname != null">
        #{nickname,jdbcType=VARCHAR},
      </if>
      <if test="status != null">
        #{status,jdbcType=TINYINT},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.mycompany.mavenspringboot.model.UserInfo">
    update user_info
    <set>
      <if test="loginname != null">
        loginname = #{loginname,jdbcType=VARCHAR},
      </if>
      <if test="loginpwd != null">
        loginpwd = #{loginpwd,jdbcType=VARCHAR},
      </if>
      <if test="nickname != null">
        nickname = #{nickname,jdbcType=VARCHAR},
      </if>
      <if test="status != null">
        status = #{status,jdbcType=TINYINT},
      </if>
    </set>
    where userid = #{userid,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="com.mycompany.mavenspringboot.model.UserInfo">
    update user_info
    set loginname = #{loginname,jdbcType=VARCHAR},
      loginpwd = #{loginpwd,jdbcType=VARCHAR},
      nickname = #{nickname,jdbcType=VARCHAR},
      status = #{status,jdbcType=TINYINT}
    where userid = #{userid,jdbcType=INTEGER}
  </update>
</mapper>
           

3,【model對象也就是javabean檔案】UserInfo.java檔案

package com.mycompany.mavenspringboot.model;

public class UserInfo {
    private Integer userid;

    private String loginname;

    private String loginpwd;

    private String nickname;

    private Byte status;

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getLoginname() {
        return loginname;
    }

    public void setLoginname(String loginname) {
        this.loginname = loginname == null ? null : loginname.trim();
    }

    public String getLoginpwd() {
        return loginpwd;
    }

    public void setLoginpwd(String loginpwd) {
        this.loginpwd = loginpwd == null ? null : loginpwd.trim();
    }

    public String getNickname() {
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname == null ? null : nickname.trim();
    }

    public Byte getStatus() {
        return status;
    }

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

二,其中要注意的重點:

1,執行pom檔案的指令已經在generatorConfig.xml配置檔案中(防止自己拼寫時候出現錯誤)

spring boot mybatis生成模型檔案(generator)mybatis-generator:generate
spring boot mybatis生成模型檔案(generator)mybatis-generator:generate

2,兩類檔案包名的設定,必須是您實際項目對應檔案模型的包名,這樣生成的xml檔案才會正确。xml檔案的包名可以随實際情況設定

spring boot mybatis生成模型檔案(generator)mybatis-generator:generate
spring boot mybatis生成模型檔案(generator)mybatis-generator:generate

3,生成檔案路徑:建議不要設定為您實際項目的項目路徑(src/main/java),否則生成的檔案會替換您原有的檔案,如果原有的檔案已經做過修改,那麼就會倒是之前的修改不存在了

4,測試資料如下

DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
  `userid` int(10) NOT NULL AUTO_INCREMENT,
  `loginname` varchar(255) DEFAULT NULL,
  `loginpwd` varchar(255) DEFAULT NULL,
  `nickname` varchar(255) DEFAULT NULL,
  `status` tinyint(2) DEFAULT '0',
  PRIMARY KEY (`userid`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
           

繼續閱讀