今天說明一下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-->目标,然後出現
在目标中輸入,點選确定
結果已經生成在對象你設定的檔案目錄下。
下面給出檔案示例;
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配置檔案中(防止自己拼寫時候出現錯誤)
2,兩類檔案包名的設定,必須是您實際項目對應檔案模型的包名,這樣生成的xml檔案才會正确。xml檔案的包名可以随實際情況設定
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;