欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

myBatis的mapper映射文件之批量處理方式

 更新時間:2021年09月30日 11:12:31   作者:曾衛(wèi)  
這篇文章主要介紹了myBatis的mapper映射文件之批量處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

#mybatis常見批量處理

在開發(fā)當中,可能經(jīng)常會遇到批量處理這種情況,一般都再在java層面進行,

其本質(zhì)是節(jié)省數(shù)據(jù)庫連接打開關(guān)閉的的次數(shù),占用更少的運行內(nèi)存。

mybatis批量插入

<insert id="saveFeeRuleList" useGeneratedKeys="true" parameterType="java.util.List">
  <selectKey resultType="java.lang.String" keyProperty="id" order="AFTER">
   SELECT
   LAST_INSERT_ID()
 </selectKey>
 INSERT INTO t_product_fee_rule(
  <include refid="Base_Column_List"/>
 )
 VALUES
 <foreach collection="list" item="item" index="index" separator=",">
  (
   #{item.id},#{item.productId},
   #{item.feeCode},#{item.feeValue},
   #{item.remarks}
  )
 </foreach>
</insert>

mybatis批量刪除

<delete id="removeProductAgent" parameterType="java.util.HashMap">
 <foreach collection="maps.agentIds" item="item" index="index" open="" close="" separator=";">
  DELETE FROM t_product_agent
  WHERE 1 = 1
  AND product_id = #{maps.productId}
  AND agent_id = #{item}
 </foreach>
</delete>

此處的maps接口中的@Param值對應,屬于自定義變量。

void removeProductAgent(@Param("maps")Map<String, Object> map);

mybatis批量修改

<update id="saveUpdateFeeRuleList" parameterType="java.util.List">
  <foreach collection="list" item="item" index="index" open="" close="" separator=";">
   UPDATE t_product_fee_rule
   SET
 fee_value = #{item.feeValue},
 remarks = #{item.remarks}
   WHERE id = #{item.id}
  </foreach>
 </update>

myBatis mapper文件詳解

本文的寫作目的主要是帶大家了解mapper的寫法

表結(jié)構(gòu):

CREATE TABLE customer (
id int(11) NOT NULL COMMENT ‘企業(yè)用戶ID',
name varchar(45) DEFAULT NULL COMMENT ‘名稱',
logo varchar(80) DEFAULT ‘' COMMENT ‘企業(yè)標識',
describe varchar(500) DEFAULT ‘' COMMENT ‘企業(yè)班車說明',
is_enable tinyint(1) DEFAULT ‘0' COMMENT ‘是否啟用 1=啟用 0=不啟用',
phone varchar(20) DEFAULT NULL COMMENT ‘客服電話',
admin varchar(50) DEFAULT NULL COMMENT ‘管理員賬號',
password varchar(80) DEFAULT NULL COMMENT ‘管理員密碼',
uuid varchar(80) DEFAULT NULL COMMENT ‘企業(yè)唯一ID',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;

Mapper映射文件是在實際開發(fā)過程中使用最多的。

Mapper文件中包含的元素有

  • cache – 配置給定命名空間的緩存。
  • cache-ref – 從其他命名空間引用緩存配置。
  • resultMap – 映射復雜的結(jié)果對象。
  • sql – 可以重用的 SQL 塊,也可以被其他語句引用。
  • insert – 映射插入語句
  • update – 映射更新語句
  • delete – 映射刪除語句
  • select – 映射查詢語句

本文的代碼都是用mybatis-generator生成的注釋部分是博主自己加的:

<?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">
<!--
  namespace綁定了與之對應的接口,值是該接口的全限定名;這個參數(shù)有且只有一個
-->
<mapper namespace="cn.rainbowbus.dao.CustomerMapper">

  <!--
    用來描述select語句返回字段與java屬性的映射關(guān)系。
    可以有多個resultMap標簽,用不同id區(qū)分不同標簽。
    可以實現(xiàn)一對多,多對多關(guān)系
  -->
  <resultMap id="BaseResultMap" type="cn.rainbowbus.entity.Customer">
    <!--
     column是表中的字段名。
     property是對應的java屬性。
     jdbcTyep: 數(shù)據(jù)庫中字段類型,它與Java中屬性類型有對應關(guān)系,詳情看下表。
     id:數(shù)據(jù)庫主鍵字段。
     result:普通字段。
     一對多標簽 : 
     collection> property:對應的java屬性名  ofType:對應的java屬類型
     	<id property="java屬性" column="author_third_id" jdbcType="BIGINT"/>
		<result property="java屬性" column="account_id" jdbcType="VARCHAR"/>
    -->
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" javaType="string"  property="name" />
    <result column="logo" jdbcType="VARCHAR" property="logo" />
    <result column="describe" jdbcType="VARCHAR" property="describe" />
    <result column="is_enable" jdbcType="BIT" property="isEnable" />
    <result column="phone" jdbcType="VARCHAR" property="phone" />
    <result column="admin" jdbcType="VARCHAR" property="admin" />
    <result column="password" jdbcType="VARCHAR" property="password" />
    <result column="uuid" jdbcType="VARCHAR" property="uuid" />
  </resultMap>
  <!--
  可以重用的 SQL 塊,也可以被其他語句引用。

  -->
  <sql id="Example_Where_Clause">
    <where>/* where 可以自動去除sql語句where關(guān)鍵字后的and關(guān)鍵字*/
    /*
      向sql傳遞數(shù)組或List,  mybatis使用foreach解析,可以做批量處理。
      collection:傳入的集合的變量名稱(要遍歷的值)。
      item:每次循環(huán)將循環(huán)出的數(shù)據(jù)放入這個變量中。
      open:循環(huán)開始拼接的字符串。
      close:循環(huán)結(jié)束拼接的字符串。
      separator:循環(huán)中拼接的分隔符。
    */
      <foreach collection="oredCriteria" item="criteria" separator="or">
        /*
        判斷語句,test值等于true執(zhí)行等于false跳過
        test可以是一個值為Boolean型的計算語句
        */
        <if test="criteria.valid">
        /*
          前綴'and' 被'('  替換
          prefix:前綴覆蓋并增加其內(nèi)容 不寫的話默認替換為空
          suffix:后綴覆蓋并增加其內(nèi)容 不寫的話默認替換為空
          prefixOverrides:前綴判斷的條件
          suffixOverrides:后綴判斷的條件
        */
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              /*
                choose 是或(or)的關(guān)系。
                choose標簽是按順序判斷其內(nèi)部when標簽中的test條件出否成立,如果有一個成立,則 choose 結(jié)束。
                當 choose 中所有 when 的條件都不滿則時,則執(zhí)行 otherwise 中的sql。
                類似于Java 的 switch 語句,choose 為 switch,when 為 case,otherwise 則為 default。
              */
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Update_By_Example_Where_Clause">
    <where>
      <foreach collection="example.oredCriteria" item="criteria" separator="or">
        <if test="criteria.valid">
          <trim prefix="(" prefixOverrides="and" suffix=")">
            <foreach collection="criteria.criteria" item="criterion">
              <choose>
                <when test="criterion.noValue">
                  and ${criterion.condition}
                </when>
                <when test="criterion.singleValue">
                  and ${criterion.condition} #{criterion.value}
                </when>
                <when test="criterion.betweenValue">
                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
                </when>
                <when test="criterion.listValue">
                  and ${criterion.condition}
                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
                    #{listItem}
                  </foreach>
                </when>
              </choose>
            </foreach>
          </trim>
        </if>
      </foreach>
    </where>
  </sql>
  <sql id="Base_Column_List">
    <if test="fields == null">
      id, name, logo, describe, is_enable, phone, admin, password, uuid
    </if>
    <if test="fields != null">
      ${fields}
    </if>
  </sql>

  <!--
  select查詢語句標簽
  id: 與namespace接口中的方法名對應
  parameterType: 參數(shù)類型
  resultMap : 返回值類型
  自增IDset到對象中: useGeneratedKeys="true" keyProperty="id" keyColumn="id" 
  支持類型簡寫,詳情看下表
  -->
  <select id="selectByExample" useGeneratedKeys="true" keyProperty="id" keyColumn="id" parameterType="cn.rainbowbus.entity.CustomerExample" resultMap="BaseResultMap">
    select
    <if test="distinct">
      distinct
    </if>
    <include refid="Base_Column_List" />/*引入一個SQL模塊*/
    from customer
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null">
      order by ${orderByClause}
    </if>
    <if test="startRow != null">
      limit #{startRow} , #{pageSize}
    </if>
  </select>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select 
    id,name,logo,describe,is_enable,phone,admin,password,uuid
    from customer
    where id = #{id,jdbcType=INTEGER}
  </select>
  <!--
  delete刪除語句標簽
  id: 與namespace接口中的方法名對應
  parameterType: 參數(shù)類型
  -->
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    delete from customer
    where id = #{id,jdbcType=INTEGER}
  </delete>
  <delete id="deleteByExample" parameterType="cn.rainbowbus.entity.CustomerExample">
    delete from customer
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
  </delete>

  <!--插入語句-->
  <insert id="insert" parameterType="cn.rainbowbus.entity.Customer">
    insert into customer (id, name, logo, 
      describe, is_enable, phone, 
      admin, password, uuid
      )
    values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{logo,jdbcType=VARCHAR}, 
      #{describe,jdbcType=VARCHAR}, #{isEnable,jdbcType=BIT}, #{phone,jdbcType=VARCHAR}, 
      #{admin,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{uuid,jdbcType=VARCHAR}
      )
  </insert>
  <insert id="insertSelective" parameterType="cn.rainbowbus.entity.Customer">
    insert into customer
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="id != null">
        id,
      </if>
      <if test="name != null">
        name,
      </if>
      <if test="logo != null">
        logo,
      </if>
      <if test="describe != null">
        describe,
      </if>
      <if test="isEnable != null">
        is_enable,
      </if>
      <if test="phone != null">
        phone,
      </if>
      <if test="admin != null">
        admin,
      </if>
      <if test="password != null">
        password,
      </if>
      <if test="uuid != null">
        uuid,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="id != null">
        #{id,jdbcType=INTEGER},
      </if>
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="logo != null">
        #{logo,jdbcType=VARCHAR},
      </if>
      <if test="describe != null">
        #{describe,jdbcType=VARCHAR},
      </if>
      <if test="isEnable != null">
        #{isEnable,jdbcType=BIT},
      </if>
      <if test="phone != null">
        #{phone,jdbcType=VARCHAR},
      </if>
      <if test="admin != null">
        #{admin,jdbcType=VARCHAR},
      </if>
      <if test="password != null">
        #{password,jdbcType=VARCHAR},
      </if>
      <if test="uuid != null">
        #{uuid,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <select id="countByExample" parameterType="cn.rainbowbus.entity.CustomerExample" resultType="java.lang.Long">
    select count(*) from customer
    <if test="_parameter != null">
      <include refid="Example_Where_Clause" />
    </if>
  </select>
  <update id="updateByExampleSelective" parameterType="map">
    update customer
    <set>
      <if test="record.id != null">
        id = #{record.id,jdbcType=INTEGER},
      </if>
      <if test="record.name != null">
        name = #{record.name,jdbcType=VARCHAR},
      </if>
      <if test="record.logo != null">
        logo = #{record.logo,jdbcType=VARCHAR},
      </if>
      <if test="record.describe != null">
        describe = #{record.describe,jdbcType=VARCHAR},
      </if>
      <if test="record.isEnable != null">
        is_enable = #{record.isEnable,jdbcType=BIT},
      </if>
      <if test="record.phone != null">
        phone = #{record.phone,jdbcType=VARCHAR},
      </if>
      <if test="record.admin != null">
        admin = #{record.admin,jdbcType=VARCHAR},
      </if>
      <if test="record.password != null">
        password = #{record.password,jdbcType=VARCHAR},
      </if>
      <if test="record.uuid != null">
        uuid = #{record.uuid,jdbcType=VARCHAR},
      </if>
    </set>
    <if test="_parameter != null">
      <include refid="Update_By_Example_Where_Clause" />
    </if>
  </update>
  <update id="updateByExample" parameterType="map">
    update customer
    set id = #{record.id,jdbcType=INTEGER},
      name = #{record.name,jdbcType=VARCHAR},
      logo = #{record.logo,jdbcType=VARCHAR},
      describe = #{record.describe,jdbcType=VARCHAR},
      is_enable = #{record.isEnable,jdbcType=BIT},
      phone = #{record.phone,jdbcType=VARCHAR},
      admin = #{record.admin,jdbcType=VARCHAR},
      password = #{record.password,jdbcType=VARCHAR},
      uuid = #{record.uuid,jdbcType=VARCHAR}
    <if test="_parameter != null">
      <include refid="Update_By_Example_Where_Clause" />
    </if>
  </update>
  <update id="updateByPrimaryKeySelective" parameterType="cn.rainbowbus.entity.Customer">
    update customer
    <set>
      <if test="name != null">
        name = #{name,jdbcType=VARCHAR},
      </if>
      <if test="logo != null">
        logo = #{logo,jdbcType=VARCHAR},
      </if>
      <if test="describe != null">
        describe = #{describe,jdbcType=VARCHAR},
      </if>
      <if test="isEnable != null">
        is_enable = #{isEnable,jdbcType=BIT},
      </if>
      <if test="phone != null">
        phone = #{phone,jdbcType=VARCHAR},
      </if>
      <if test="admin != null">
        admin = #{admin,jdbcType=VARCHAR},
      </if>
      <if test="password != null">
        password = #{password,jdbcType=VARCHAR},
      </if>
      <if test="uuid != null">
        uuid = #{uuid,jdbcType=VARCHAR},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="cn.rainbowbus.entity.Customer">
    update customer
    set name = #{name,jdbcType=VARCHAR},
      logo = #{logo,jdbcType=VARCHAR},
      describe = #{describe,jdbcType=VARCHAR},
      is_enable = #{isEnable,jdbcType=BIT},
      phone = #{phone,jdbcType=VARCHAR},
      admin = #{admin,jdbcType=VARCHAR},
      password = #{password,jdbcType=VARCHAR},
      uuid = #{uuid,jdbcType=VARCHAR}
    where id = #{id,jdbcType=INTEGER}
  </update>
  <update id="batchUpdateByKeys" parameterType="java.util.List">
    update customer 
    <trim prefix="set" suffixOverrides=",">
      <trim prefix="id =case id" suffix="end,">
        <foreach collection="recordList" index="index" item="item">
          <if test="item.id !=null ">
            when #{item.id,jdbcType=INTEGER} then #{item.id,jdbcType=INTEGER}
          </if>
          <if test="item.id ==null ">
            when #{item.id,jdbcType=INTEGER} then customer.id
          </if>
        </foreach>
      </trim>
      <trim prefix="name =case id" suffix="end,">
        <foreach collection="recordList" index="index" item="item">
          <if test="item.name !=null ">
            when #{item.id,jdbcType=INTEGER} then #{item.name,jdbcType=VARCHAR}
          </if>
          <if test="item.name ==null ">
            when #{item.id,jdbcType=INTEGER} then customer.name
          </if>
        </foreach>
      </trim>
      <trim prefix="logo =case id" suffix="end,">
        <foreach collection="recordList" index="index" item="item">
          <if test="item.logo !=null ">
            when #{item.id,jdbcType=INTEGER} then #{item.logo,jdbcType=VARCHAR}
          </if>
          <if test="item.logo ==null ">
            when #{item.id,jdbcType=INTEGER} then customer.logo
          </if>
        </foreach>
      </trim>
      <trim prefix="describe =case id" suffix="end,">
        <foreach collection="recordList" index="index" item="item">
          <if test="item.describe !=null ">
            when #{item.id,jdbcType=INTEGER} then #{item.describe,jdbcType=VARCHAR}
          </if>
          <if test="item.describe ==null ">
            when #{item.id,jdbcType=INTEGER} then customer.describe
          </if>
        </foreach>
      </trim>
      <trim prefix="is_enable =case id" suffix="end,">
        <foreach collection="recordList" index="index" item="item">
          <if test="item.isEnable !=null ">
            when #{item.id,jdbcType=INTEGER} then #{item.isEnable,jdbcType=BIT}
          </if>
          <if test="item.isEnable ==null ">
            when #{item.id,jdbcType=INTEGER} then customer.is_enable
          </if>
        </foreach>
      </trim>
      <trim prefix="phone =case id" suffix="end,">
        <foreach collection="recordList" index="index" item="item">
          <if test="item.phone !=null ">
            when #{item.id,jdbcType=INTEGER} then #{item.phone,jdbcType=VARCHAR}
          </if>
          <if test="item.phone ==null ">
            when #{item.id,jdbcType=INTEGER} then customer.phone
          </if>
        </foreach>
      </trim>
      <trim prefix="admin =case id" suffix="end,">
        <foreach collection="recordList" index="index" item="item">
          <if test="item.admin !=null ">
            when #{item.id,jdbcType=INTEGER} then #{item.admin,jdbcType=VARCHAR}
          </if>
          <if test="item.admin ==null ">
            when #{item.id,jdbcType=INTEGER} then customer.admin
          </if>
        </foreach>
      </trim>
      <trim prefix="password =case id" suffix="end,">
        <foreach collection="recordList" index="index" item="item">
          <if test="item.password !=null ">
            when #{item.id,jdbcType=INTEGER} then #{item.password,jdbcType=VARCHAR}
          </if>
          <if test="item.password ==null ">
            when #{item.id,jdbcType=INTEGER} then customer.password
          </if>
        </foreach>
      </trim>
      <trim prefix="uuid =case id" suffix="end,">
        <foreach collection="recordList" index="index" item="item">
          <if test="item.uuid !=null ">
            when #{item.id,jdbcType=INTEGER} then #{item.uuid,jdbcType=VARCHAR}
          </if>
          <if test="item.uuid ==null ">
            when #{item.id,jdbcType=INTEGER} then customer.uuid
          </if>
        </foreach>
      </trim>
    </trim>
    where id in(
    <foreach collection="recordList" index="index" item="item" separator=",">
      #{item.id,jdbcType=INTEGER}
    </foreach>
    )
  </update>
  <insert id="batchInsert" parameterType="cn.rainbowbus.entity.Customer">
    insert into customer (id, 
      name, logo, describe, 
      is_enable, phone, admin, 
      password, uuid)
    values <foreach collection="list" item="item" index="index" separator="," > (#{item.id,jdbcType=INTEGER}, 
      #{item.name,jdbcType=VARCHAR}, #{item.logo,jdbcType=VARCHAR}, #{item.describe,jdbcType=VARCHAR}, 
      #{item.isEnable,jdbcType=BIT}, #{item.phone,jdbcType=VARCHAR}, #{item.admin,jdbcType=VARCHAR}, 
      #{item.password,jdbcType=VARCHAR}, #{item.uuid,jdbcType=VARCHAR})</foreach>
  </insert>
  <delete id="batchDeleteByKeys" parameterType="java.lang.Integer">
    delete from customer where id in (
    <foreach collection="ids" index="index" item="id" separator=",">
      #{id}
    </foreach>
    )
  </delete>
</mapper>

注意

#{}占位符: 占位

如果傳入的是基本類型,那么#{}中的變量名稱可以隨意寫

如果傳入的參數(shù)是pojo類型,那么#{}中的變量名稱必須是pojo中的屬性.屬性名(user.username)

$ {}拼接符: 字符串原樣拼接(有sql注入的風險)

如果傳入的是基本類型,那么中 的 變 量 名 必 須 是 v a l u e 如 果 傳 入 的 參 數(shù) 是 p o j o 類 型 , 那 么 {}中的變量名必須是value 如果傳入的參數(shù)是pojo類型,那么中的變量名必須是value如果傳入的參數(shù)是pojo類型,那么{}中的變量名稱必須是pojo中的屬性.屬性名(user.username)

注意:使用拼接符有可能造成sql注入,在頁面輸入的時候可以加入校驗,不可輸入sql關(guān)鍵字,不可輸入空格

注意:如果是取簡單數(shù)量類型的參數(shù),括號中的值必須為value

例: select * from user where username like ‘%${value}%'

可以這樣寫來解決sql注入:select * from user where username like ‘%' #{name}'%'(開發(fā)經(jīng)常使用)

動態(tài)SQL

Mybatis提供了9種動態(tài)sql標簽:trim | where | set | foreach | if | choose | when | otherwise | bind。

1.判斷語句if

判斷語句,test值等于true執(zhí)行等于false跳過,test可以是一個值為Boolean型的計算語句

 <if test="true">  </if>

2.修剪語句:trim

  • 前綴'and' 被'(' 替換
  • prefix:前綴覆蓋并增加其內(nèi)容 不寫的話默認替換為空
  • suffix:后綴覆蓋并增加其內(nèi)容 不寫的話默認替換為空
  • prefixOverrides:前綴判斷的條件
  • suffixOverrides:后綴判斷的條件
 <trim prefix="(" suffix=")" prefixOverrides="and" ></trim>

3.循環(huán)語句:foreach

  • 向sql傳遞數(shù)組或List, mybatis使用foreach解析,可以做批量處理。
  • collection:傳入的集合的變量名稱(要遍歷的值)。
  • item:每次循環(huán)將循環(huán)出的數(shù)據(jù)放入這個變量中。
  • open:循環(huán)開始拼接的字符串。
  • close:循環(huán)結(jié)束拼接的字符串。
  • separator:循環(huán)中拼接的分隔符。
<foreach collection="oredCriteria" item="criteria" separator="or"></foreach>

4.選擇語句:choose

類似于Java 的 switch 語句,choose 為 switch,when 為 case,otherwise 則為 default。

choose 是或(or)的關(guān)系。choose標簽是按順序判斷其內(nèi)部when標簽中的test條件出否成立,如果有一個成立,則 choose 結(jié)束。當 choose 中所有 when 的條件都不滿則時,則執(zhí)行 otherwise 中的sql。

    <choose>
                <when test="false">
                  ...
                </when>
                <when test="true">
     ...
                </when>
                <otherwise>
     ...同樣這不是必須的
                </otherwise>               
              </choose>

mapper對應的Java接口文件:

package cn.rainbowbus.dao;
import cn.rainbowbus.entity.Customer;
import cn.rainbowbus.entity.CustomerExample;
import java.util.List;
import org.apache.ibatis.annotations.Param;
public interface CustomerMapper {
    long countByExample(CustomerExample example);
    int deleteByExample(CustomerExample example);
    int deleteByPrimaryKey(Integer id);
    int insert(Customer record);
    int insertSelective(Customer record);
    List<Customer> selectByExample(CustomerExample example);
    Customer selectByPrimaryKey(Integer id);
    int updateByExampleSelective(@Param("record") Customer record, @Param("example") CustomerExample example);
    int updateByExample(@Param("record") Customer record, @Param("example") CustomerExample example);
    int updateByPrimaryKeySelective(Customer record);
    int updateByPrimaryKey(Customer record);
    int batchUpdateByKeys(@Param("recordList") List<Customer> recordList);
    void batchInsert(List<Customer> recordLst);
    int batchDeleteByKeys(@Param("ids") Integer[] ids);
}

mybatis支持別名:

別名 映射類型
_byte byte
_long long
_short short
_int int
_integer int
_double double
_float float
_boolean boolean
string String
byte Byte
long Long
short Short
int Integer
integer Integer
double Double
float Float
boolean Boolean
date Date
decimal BigDecimal
bigdecimal BigDecimal
map Map

jdbcType與JavaType的映射關(guān)系

jdbcType Java Type
CHAR String
ARCHAR String
ONGVARCHAR String
UMERIC java.math.BigDecimal
ECIMAL java.math.BigDecimal
IT boolean
OOLEAN boolean
INYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
DISTINCT mapping of underlying type
STRUCT Struct
REF Ref
DATALINK java.net.URL[color=red][/color]

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • springboot發(fā)布dubbo服務注冊到nacos實現(xiàn)方式

    springboot發(fā)布dubbo服務注冊到nacos實現(xiàn)方式

    這篇文章主要介紹了springboot發(fā)布dubbo服務注冊到nacos實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • java中構(gòu)造方法及this關(guān)鍵字的用法實例詳解(超詳細)

    java中構(gòu)造方法及this關(guān)鍵字的用法實例詳解(超詳細)

    大家都知道,java作為一門內(nèi)容豐富的編程語言,其中涉及的范圍是十分廣闊的,下面這篇文章主要給大家介紹了關(guān)于java中構(gòu)造方法及this關(guān)鍵字用法的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • SpringBoot自動裝配之@Import深入講解

    SpringBoot自動裝配之@Import深入講解

    由于最近的項目需求,需要在把配置類導入到容器中,通過查詢,使用@Import注解就能實現(xiàn)這個功能,@Import注解能夠幫我們吧普通配置類(定義為Bean的類)導入到IOC容器中
    2023-01-01
  • SpringBoot 使用hibernate validator校驗

    SpringBoot 使用hibernate validator校驗

    這篇文章主要介紹了SpringBoot 使用hibernate validator校驗,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • SpringBoot自動配置深入探究實現(xiàn)原理

    SpringBoot自動配置深入探究實現(xiàn)原理

    在springboot的啟動類中可以看到@SpringBootApplication注解,它是SpringBoot的核心注解,也是一個組合注解。其中@SpringBootConfiguration、@EnableAutoConfiguration、@ComponentScan三個注解尤為重要。今天我們就來淺析這三個注解的含義
    2022-08-08
  • java 刪除數(shù)組元素與刪除重復數(shù)組元素的代碼

    java 刪除數(shù)組元素與刪除重復數(shù)組元素的代碼

    在java中刪除數(shù)組元素與過濾重復數(shù)組元素我們都會需要去遍歷數(shù)組然后根據(jù)我們設(shè)置的值或方法進行去除數(shù)組
    2013-10-10
  • Java枚舉的使用與反射應用方式

    Java枚舉的使用與反射應用方式

    枚舉類型是一種特殊的類,限定為固定實例集合,且是類型安全和線程安全的,枚舉類型不可繼承,但可以添加屬性和方法,支持單例模式,枚舉常量可以通過反射獲取和操作,提供了靈活性和擴展性
    2024-09-09
  • 詳解Spring中bean的幾種注入方式

    詳解Spring中bean的幾種注入方式

    這篇文章主要介紹了詳解Spring中bean的幾種注入方式,主要介紹了4種注入,主要有屬性注入、構(gòu)造函數(shù)注入、工廠方法注入,非常具有實用價值,需要的朋友可以參考下
    2018-06-06
  • 使用okhttp替換Feign默認Client的操作

    使用okhttp替換Feign默認Client的操作

    這篇文章主要介紹了使用okhttp替換Feign默認Client的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java跳出多重嵌套循環(huán)過程解析

    Java跳出多重嵌套循環(huán)過程解析

    這篇文章主要介紹了Java跳出多重嵌套循環(huán)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12

最新評論