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名称。
 

扫描二维码关注公众号,回复: 2399850 查看本文章

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

猜你喜欢

转载自blog.csdn.net/lxhqm/article/details/81223268