91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Mybatis如何逆向生成使用擴展類

發布時間:2021-06-24 13:59:37 來源:億速云 閱讀:169 作者:小新 欄目:編程語言

這篇文章給大家分享的是有關Mybatis如何逆向生成使用擴展類的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

1.背景介紹

用的mybatis自動生成的插件,然而每次更改數據庫的時候重新生成需要替換原有的mapper.xml文件,都要把之前業務相關的sql重新寫一遍,感覺十分麻煩,就想著把自動生成的作為一個基礎文件,然后業務相關的寫在擴展文件里面,這樣更改數據庫后只需要把所有基礎文件替換掉就可以了

2.代碼

2.1 BaseMapper.java

把自動生成的方法都抽到一個base類,然后可以寫一些公共的方法

/**
 * @author 呂梁山
 * @date 2019/4/23
 */
public interface BaseMapper<T> {
 int deleteByPrimaryKey(Integer id);
 int insert(T entity);
 int insertSelective(T entity);
 int updateByPrimaryKeySelective(T entity);
 int updateByPrimaryKey(T entity);
 T selectByPrimaryKey(Integer id);
}

2.2 UserMapper.java

自動生成的mapper文件,里面基本都是空的了

public interface UserMapper extends BaseMapper<User> { }

2.3 ExtUserMapper.java

mapper的擴展類,業務相關的

/**
 * @author 呂梁山
 * @date 2019/4/25
 */
public interface ExtUserMapper extends UserMapper {

 ExtUser selectUserByOpenId(String openId);

 int existUserByOpenId(String openId);

 int updateByOpenId(User user);
}

2.4 UserMapper.xml

自動生成的mapper.xml文件,沒有改動,不同的生成器生成的可能不同

注意namespace要寫正確

<?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.pikaqiu.barber.dao.base.UserMapper">
 <resultMap id="BaseResultMap" type="com.pikaqiu.barber.entity.base.User">
  <id column="id" property="id" jdbcType="INTEGER"/>
  <result column="user_name" property="userName" jdbcType="VARCHAR"/>
  <result column="user_img" property="userImg" jdbcType="VARCHAR"/>
  <result column="open_id" property="openId" jdbcType="VARCHAR"/>
  <result column="phone" property="phone" jdbcType="VARCHAR"/>
  <result column="sex" property="sex" jdbcType="INTEGER"/>
  <result column="province" property="province" jdbcType="VARCHAR"/>
  <result column="country" property="country" jdbcType="VARCHAR"/>
  <result column="city" property="city" jdbcType="VARCHAR"/>
  <result column="birth_date" property="birthDate" jdbcType="VARCHAR"/>
  <result column="subscribe_date" property="subscribeDate" jdbcType="TIMESTAMP"/>
  <result column="subscribe_scene" property="subscribeScene" jdbcType="VARCHAR"/>
  <result column="create_date" property="createDate" jdbcType="TIMESTAMP"/>
 </resultMap>
 <sql id="Base_Column_List">
  id, user_name, user_img, open_id, phone, sex, province, country, city, birth_date,
  subscribe_date, subscribe_scene, create_date
 </sql>
 <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer">
  select
  <include refid="Base_Column_List"/>
  from t_user
  where id = #{id,jdbcType=INTEGER}
 </select>
 <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
  delete from t_user
  where id = #{id,jdbcType=INTEGER}
 </delete>
 <insert id="insert" parameterType="com.pikaqiu.barber.entity.base.User">
  insert into t_user (id, user_name, user_img,
       open_id, phone, sex,
       province, country, city,
       birth_date, subscribe_date, subscribe_scene,
       create_date)
  values (#{id,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{userImg,jdbcType=VARCHAR},
          #{openId,jdbcType=VARCHAR}, #{phone,jdbcType=VARCHAR}, #{sex,jdbcType=INTEGER},
          #{province,jdbcType=VARCHAR}, #{country,jdbcType=VARCHAR},
          #{city,jdbcType=VARCHAR},
          #{birthDate,jdbcType=VARCHAR}, #{subscribeDate,jdbcType=TIMESTAMP},
    #{subscribeScene,jdbcType=VARCHAR},
    #{createDate,jdbcType=TIMESTAMP})
 </insert>
 <insert id="insertSelective" parameterType="com.pikaqiu.barber.entity.base.User">
  insert into t_user
  <trim prefix="(" suffix=")" suffixOverrides=",">
   <if test="id != null">
    id,
   </if>
   <if test="userName != null">
    user_name,
   </if>
   <if test="userImg != null">
    user_img,
   </if>
   <if test="openId != null">
    open_id,
   </if>
   <if test="phone != null">
    phone,
   </if>
   <if test="sex != null">
    sex,
   </if>
   <if test="province != null">
    province,
   </if>
   <if test="country != null">
    country,
   </if>
   <if test="city != null">
    city,
   </if>
   <if test="birthDate != null">
    birth_date,
   </if>
   <if test="subscribeDate != null">
    subscribe_date,
   </if>
   <if test="subscribeScene != null">
    subscribe_scene,
   </if>
   <if test="createDate != null">
    create_date,
   </if>
  </trim>
  <trim prefix="values (" suffix=")" suffixOverrides=",">
   <if test="id != null">
    #{id,jdbcType=INTEGER},
   </if>
   <if test="userName != null">
    #{userName,jdbcType=VARCHAR},
   </if>
   <if test="userImg != null">
    #{userImg,jdbcType=VARCHAR},
   </if>
   <if test="openId != null">
    #{openId,jdbcType=VARCHAR},
   </if>
   <if test="phone != null">
    #{phone,jdbcType=VARCHAR},
   </if>
   <if test="sex != null">
    #{sex,jdbcType=INTEGER},
   </if>
   <if test="province != null">
    #{province,jdbcType=VARCHAR},
   </if>
   <if test="country != null">
    #{country,jdbcType=VARCHAR},
   </if>
   <if test="city != null">
    #{city,jdbcType=VARCHAR},
   </if>
   <if test="birthDate != null">
    #{birthDate,jdbcType=VARCHAR},
   </if>
   <if test="subscribeDate != null">
    #{subscribeDate,jdbcType=TIMESTAMP},
   </if>
   <if test="subscribeScene != null">
    #{subscribeScene,jdbcType=VARCHAR},
   </if>
   <if test="createDate != null">
    #{createDate,jdbcType=TIMESTAMP},
   </if>
  </trim>
 </insert>
 <update id="updateByPrimaryKeySelective" parameterType="com.pikaqiu.barber.entity.base.User">
  update t_user
  <set>
   <if test="userName != null">
    user_name = #{userName,jdbcType=VARCHAR},
   </if>
   <if test="userImg != null">
    user_img = #{userImg,jdbcType=VARCHAR},
   </if>
   <if test="openId != null">
    open_id = #{openId,jdbcType=VARCHAR},
   </if>
   <if test="phone != null">
    phone = #{phone,jdbcType=VARCHAR},
   </if>
   <if test="sex != null">
    sex = #{sex,jdbcType=INTEGER},
   </if>
   <if test="province != null">
    province = #{province,jdbcType=VARCHAR},
   </if>
   <if test="country != null">
    country = #{country,jdbcType=VARCHAR},
   </if>
   <if test="city != null">
    city = #{city,jdbcType=VARCHAR},
   </if>
   <if test="birthDate != null">
    birth_date = #{birthDate,jdbcType=VARCHAR},
   </if>
   <if test="subscribeDate != null">
    subscribe_date = #{subscribeDate,jdbcType=TIMESTAMP},
   </if>
   <if test="subscribeScene != null">
    subscribe_scene = #{subscribeScene,jdbcType=VARCHAR},
   </if>
   <if test="createDate != null">
    create_date = #{createDate,jdbcType=TIMESTAMP},
   </if>
  </set>
  where id = #{id,jdbcType=INTEGER}
 </update>
 <update id="updateByPrimaryKey" parameterType="com.pikaqiu.barber.entity.base.User">
  update t_user
  set user_name  = #{userName,jdbcType=VARCHAR},
   user_img  = #{userImg,jdbcType=VARCHAR},
   open_id   = #{openId,jdbcType=VARCHAR},
   phone   = #{phone,jdbcType=VARCHAR},
   sex    = #{sex,jdbcType=INTEGER},
   province  = #{province,jdbcType=VARCHAR},
   country   = #{country,jdbcType=VARCHAR},
   city   = #{city,jdbcType=VARCHAR},
   birth_date  = #{birthDate,jdbcType=VARCHAR},
   subscribe_date = #{subscribeDate,jdbcType=TIMESTAMP},
   subscribe_scene = #{subscribeScene,jdbcType=VARCHAR},
   create_date  = #{createDate,jdbcType=TIMESTAMP}
  where id = #{id,jdbcType=INTEGER}
 </update>
</mapper>

2.5 ExtUserMapper.xml

業務相關的sql,這里用不了自動生成mapper.xml里面的BaseResultMap這些東西

<?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.pikaqiu.barber.dao.ExtUserMapper">
 <resultMap id="BaseResultMap" type="com.pikaqiu.barber.entity.ExtUser">
  <id column="id" property="id" jdbcType="INTEGER"/>
  <result column="user_name" property="userName" jdbcType="VARCHAR"/>
  <result column="user_img" property="userImg" jdbcType="VARCHAR"/>
  <result column="open_id" property="openId" jdbcType="VARCHAR"/>
  <result column="phone" property="phone" jdbcType="VARCHAR"/>
  <result column="sex" property="sex" jdbcType="INTEGER"/>
  <result column="province" property="province" jdbcType="VARCHAR"/>
  <result column="country" property="country" jdbcType="VARCHAR"/>
  <result column="city" property="city" jdbcType="VARCHAR"/>
  <result column="birth_date" property="birthDate" jdbcType="VARCHAR"/>
  <result column="subscribe_date" property="subscribeDate" jdbcType="TIMESTAMP"/>
  <result column="subscribe_scene" property="subscribeScene" jdbcType="VARCHAR"/>
  <result column="create_date" property="createDate" jdbcType="TIMESTAMP"/>
 </resultMap>
 <update id="updateByOpenId" parameterType="com.pikaqiu.barber.entity.base.User" >
  update t_user
  <set>
   <if test="userName != null">
    user_name = #{userName,jdbcType=VARCHAR},
   </if>
   <if test="userImg != null">
    user_img = #{userImg,jdbcType=VARCHAR},
   </if>
   <if test="phone != null">
    phone = #{phone,jdbcType=VARCHAR},
   </if>
   <if test="sex != null">
    sex = #{sex,jdbcType=INTEGER},
   </if>
   <if test="province != null">
    province = #{province,jdbcType=VARCHAR},
   </if>
   <if test="country != null">
    country = #{country,jdbcType=VARCHAR},
   </if>
   <if test="city != null">
    city = #{city,jdbcType=VARCHAR},
   </if>
   <if test="birthDate != null">
    birth_date = #{birthDate,jdbcType=VARCHAR},
   </if>
   <if test="subscribeDate != null">
    subscribe_date = #{subscribeDate,jdbcType=TIMESTAMP},
   </if>
   <if test="subscribeScene != null">
    subscribe_scene = #{subscribeScene,jdbcType=VARCHAR},
   </if>
   <if test="createDate != null">
    create_date = #{createDate,jdbcType=TIMESTAMP},
   </if>
  </set>
  where open_id = #{openId,jdbcType=INTEGER}
 </update>
 <select id="selectUserByOpenId" parameterType="String" resultMap="BaseResultMap">
  select *
  from t_user
  where open_id = #{openId,jdbcType=VARCHAR}
 </select>

 <select id="existUserByOpenId" parameterType="String" resultType="Integer">
  select count(0)
  from t_user
  where open_id = #{openId,jdbcType=VARCHAR}
 </select>
</mapper>

2.6 UserServiceImpl.java

service層調用的時候直接調用擴展的mapper

/**
 * @author 呂梁山
 * @date 2019/4/23
 */
@Service("userService")
public class UserServiceImpl implements UserService {

 @Resource
 private ExtUserMapper extUserMapper;

 @Override
 public ExtUser getUserByOpenId(String openId) {
  return extUserMapper.selectUserByOpenId(openId);
 }
}

注:如果生成的mapper.xml和extmapper.xml不在同一個目錄,需要在application.yml將所有mapper.xml文件都添加到掃描中

mybatis:
 #掃描sql.xml文件
 mapper-locations: classpath:mapping/**/*.xml
 #自動掃描實體類
 type-aliases-package: com.pikaqiu.barber.entity

至此,每次更改數據庫結構后,直接重新生成文件對base文件進行替換即可,不需要再去將業務代碼復制重新粘貼

感謝各位的閱讀!關于“Mybatis如何逆向生成使用擴展類”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

汕尾市| 太湖县| 喀喇沁旗| 南昌县| 铜梁县| 兴仁县| 宜春市| 唐河县| 龙口市| 怀来县| 平定县| 屯门区| 岑巩县| 富锦市| 正宁县| 随州市| 天气| 信丰县| 墨脱县| 桦川县| 平昌县| 尚义县| 滕州市| 治县。| 彰武县| 防城港市| 出国| 铜山县| 武平县| 亚东县| 阿拉尔市| 盐城市| 巴东县| 蓬莱市| 宣城市| 乌鲁木齐县| 陆川县| 平南县| 大安市| 维西| 赤水市|