mybatis需要注意的幾點
阿新 • • 發佈:2018-12-20
對於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 行數