1. 程式人生 > >mybatis需要注意的幾點

mybatis需要注意的幾點

對於mybatis中欄位名和model中名不一致的問題:

1.select user_name as username from users;

2.<resultMap id=“userResultMap” type="user">

<id column="user_name" property="username"/>

</resultMap>

3.mybatis 對於欄位user_name 到屬性 username ,mybatis能自動識別裝配 。

<setting name="mapUnderscoreToCamelCase" value="true"/> 
<!--設定啟用資料庫欄位下劃線對映到java物件的駝峰式命名屬性,預設為false-->

@Param註解

int updateUserById (@Param("id") Integer id,@Param("name") String name);
<update id="updateUserById"> <!--註解之後不需要指定引數-->
  update
    users
  set
    name = #{name}
  where id = #{id}
</update>

int updateUser(Map<String,Object> params);
<update id="updateUser"  parameterTYpe="map"> 
  update
    users
  set
    name = #{name}
  where id = #{id}
</update>

4.<sql ></sql>

<sql id="selectBaseField">
  id as id,
  user_name as userName,
  password as password,
  age as age,
  create_time as createTime
</sql>

<select id = "selUser" resultType="User">
  select
  <include refid="selectBaseField"/>
  from
  users
</select>

5.動態sql

<select id="selectUser" resultType="user">
  select
  <include refid="selectFields"/>
  from
  user
  <where>
    <if test="user_name != null and user_name !='' ">
        and user_name = #{username}          <!--會自動去掉第一個符合條件的 and-->
    </if>
    <if test="age != null and age !='' ">
        and age = #{age}         
    </if>
  </where>
</select>


<update id="updateUser"  parameterTYpe="user"> 
  update
    users
  <set>
     <if test="age != null and age > 18 ">
        and age = #{age} ,        <!--會自動去掉最後一個 ,-->
    </if>
  </set>  
</update>


<insert id="addUser" parameterType="java.util.List">
    insert into users
    (
    user_name,
    age,
    password
    )values
    <foreach collection="list" item="item" separator=","> 
    <!-- <foreach collection="list" item="item" separator="," close=")" open="(">-->
        (
        #{item.username},
        #{item.age},
        #{item.password},
        )
    </foreach>
</insert>

6.關於邏輯分頁和物理分頁

邏輯分頁是一次查詢出所有結果,然後對resultSet 結果進行處理,設計演算法去分頁

物理分頁是通過 查表的時候 limit 行數