MyBaits中SQL映射文件用法總結

parameterType和resultType

1.parameterType:指定傳入的參數類型,傳遞的參數類型可以是簡單數據類型、pojo類型和map類型。

2.resultType: MyBaits會將sql查詢結果中的每一行記錄映射成resultType指定的類型然後返回。

resultType指定的類型有兩種:1.pojo類型  2.基本類型。

如果sql語句查詢的結果集是一行一列的話,那麼resultType指定的類型是基本類型;

<select id="findUserCount" resultType="java.lang.Integer">
	select count(*) from user
</select>

或者使用別名int代替java.lang.Integer
<select id="findUserCount" resultType="java.lang.int">
	select count(*) from user
</select>

如果sql語句查詢的結果集是一行多列的話,那麼resultType指定的類型是對應的pojo類型;

<select id="findUserById" parameterType="int" resultType="cn.tomble.pojo.User">
	select * from user where id=#{id}
</select>

如果sql語句查詢的結果集是多行的話,即返回的是List或其他集合類型,那麼resultType指定的類型應該是集合的泛型類型,因爲MyBaits是將SQL語句查詢結果的每一行記錄映射成指定的類型,並且MyBaits通過SQL語句可以判斷出返回的結果集對應的是集合類型,但無法判斷集合中的泛型類型是什麼,所以需要我們在resultType中指定集合中的泛型類型;

 

<select id="findUserbyVo" parameterType="cn.tomble.pojo.QueryVo" resultType="cn.tomble.pojo.User">
	select * from user where username like '%${user.username}%' and sex=#{user.sex}
</select>

#{}和${}

1.在MyBaits的Sql映射文件#{}表示的是一個佔位符號,通過#{}可以實現JDBC編程中的向佔位符設置值,並會自動進行java類型和jdbc類型的轉換。#{}可以接收簡單類型值或pojo屬性值。

1-1如果parammeterType指定的類型是基本數據類型(String long double等),那麼#{}中的變量名稱可以隨意編寫;

1-2 如果parameterType指定的類型是pojo類型,那麼#{}中的寫的是pojo對象的屬性名稱或屬性.屬性…;

<select id="findUserbyVo" parameterType="cn.tomble.pojo.QueryVo" resultType="cn.tomble.pojo.User">
	select * from user where username like '%${user.username}%' and sex=#{user.sex}
</select>

因爲是根據QueryVo對象中的user對象中的username屬性和sex屬性進行模糊查詢,所以在#{}用了屬性.屬性的形式

1-3 如果parameterType指定的類型是Map類型,那麼#{}中寫的是Map中對應的key名稱。
 

2.在MyBaits的SQL映射文件的SQL語句中,${}表示來拼接字符串,通過${}可以將傳入的參數拼接在SQL中且不進行java類型和jdbc類型的轉換,${}可以接收簡單類型值和pojo對象的屬性值。

2-1如果parameterType中指定的是簡單數據類型,那麼${}中只能是value;

<select id="findUserByUserName" parameterType="java.lang.String"     resultType="cn.tomble.pojo.User">
    select * from user where username like '%${value}%'
</select>

2-2 如果parameterType中指定的是pojo類型,那麼${}中填寫的是pojo對應的屬性值。

 

3 小結:

#{}起到佔位符的作用,#{}可以有效防止sql注入問題;

${}起到字符串拼接的左右,但${}有sql注入的風險,所以要慎重使用;

當SQL語句中條件爲“=”時,使用佔位符#{};

當SQL語句中條件爲“like”時,使用拼接符${}。

 

MyBaits中支持別名

別名

映射的java中類型

_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

 

在MyBaits的sql映射文件中,就可以使用int來對應代替java中的java.lang.Integer

使用string來對應代替java中的java.lang.String

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章