Mybatis映射文件SQL讲解
1、最简单的SQL语句
<!-- id的值必须与dao层的方法名相同才能实现dao层调用该条sql。resultType 返回类型是一个实体类,也就是查询出的表的数据赋值给对应的表的实体类。因为没有向SQL中传入参数所 以不用parameterType="Integer"(传入类型)-->
<
select
id
=
"SELECT_ALL"
resultType
=
"对应实体类的路径"
>
select * from 表名
</
select
>
2、带传入参数的SQL
<!-- 条件查询数据量 传入的参数类型parameterType="String" 为String类型 ,参数用#{参数名}代替 -->
<
select
id
=
"getCON"
parameterType
=
"String"
resultType
=
"Integer"
>
SELECT NVL(COUNT(*),0) FROM 表名 WHERE 字段名 LIKE CONCAT(CONCAT('%',#{字段对应的参数名}),'%')
</
select
>
对应的dao层的方法也是需要带参数的
int getCON(int 参数名)
|
如果查询的不是数量的SQL而是查询表中的数据,那么resultType="对应的实体类路径"
dao层的方法则是List<实体类名> getCon(String 参数名) 参数类型视情况而定,不一定是String类型
|
3、同种类型对应多个参数的情况
<!-- 传入的单数类型是Integer类型的一个集合#{0} 表示传入的第一个参数,依次类推-->
<
select
id
=
"selPage"
parameterType
=
"Integer"
resultType
=
"对应实体类的路径"
>
SELECT * FROM (SELECTh.* ,ROWNUM RN FROM 表名 h) WHERE RN
>
= #{0} and #{1}
>
= RN
</
select
>
dao层方法
public List<实体类名> selPage(int 参数1,int 参数2);//参数1和2的名字叫什么没有关系,只要类型正确就行mybatis.xml中会用#{0}表示第一个参数值,#{1}表示第二个,依次类推。
|
4、不同类型,多个参数
<!-- 将参数装到map中,在SQL中取key就等与传入的value值,参数的名字一定要与实现方法中map对象中赋予的key相同-->
拓展:
>
=代表>=因为在mybatis中>号是特殊字符所以需要进行转义,同样
<
=表示<=
<
select
id
=
"get_Select"
parameterType
=
"map"
resultType
=
"对应的实体类路径"
>
SELECT * FROM (SELECT h.* ,ROWNUM RN FROM 表名 h where CPH LIKE CONCAT(CONCAT('%',#{参数1}),'%')) WHERE RN
>
= #{参数2} and RN
<
=#{参数3}
</
select
>
dao层方法
public List<实体类名> get_Select(Map<String,Object> map);//实现方法中对map对象进行赋值
|
5、mybatis中的sql判断(SQL语句同4)
<
select
id
=
"get_Select"
parameterType
=
"map"
resultType
=
"对应的实体类路径"
>
SELECT * FROM (SELECT h.* ,ROWNUM RN FROM 表名 h where CPH LIKE CONCAT(CONCAT('%',#{参数1}),'%'))
<
if
test
=
"判断条件,判断的参数是同map中取的key值,或者其他类型的参数值"
>
WHERE RN
>
= #{参数2} and RN
<
=#{参数3}
</
if
>
</
select
>
6、mybatis创建表
map为传入的参数,第一个key是表名,第二个key是list类型里面存的是表的字段名字
<update
id=
"CreateTable"
parameterType=
"map"
>
create table ${tableName} (
<foreach
collection=
"createTable"
item=
"item"
index=
"index"
separator=
","
>
${item} VARCHAR2(500)
</foreach>
)
</update>
特别说明: 1、${}的方式来调用参数,用#{}无法获取参数值,原因现在还没有搞明白。
2、collection="createTable"中的createTable是map中的key,对应的value是字段值的list集合。
3、separator=","是在每个元素之间添加逗号