定义一个id,引入AA
1.if
万能注解 @Param("")
&是&的实体符号
where本质是拼接字符串
2.choose when otherwise
前提:
表结构
User.java 无变化
UserMapper.java的方法
UserMapper.xml的配置
如下:
目录:
-
if
-
choose (when, otherwise)
-
trim (where, set)
-
foreach
一:if :where :可以自动去除多余的and 或者or 注意;and 和 or 必选放在前面
这里1=1的意思是,如果输入的用户名和密码为null,那么就打印出所有的信息
<select id="getUserByUserNameAndPassword" resultMap="BaseResultMap">
select * from user where 1=1
<if test="userName != null && password != null">
and user_name =#{userName} and password =#{password}
</if>
</select>
如图:输入为null
这里遇见一个问题:
我查询的是user表,
但是貌似是因为内联了order表
所以查询的时候,会在查询getUserByUserNameAndPassword()的方法的时候,根据用户名和密码查到了
用户的id是7,这时候就又调用了order的getOrderByUid()方法 .
令我不解的是:如果查询的String里包含了中文
是查询不到的.返回结果集为0(网上说:字符集不对应)
二:choose
用户名为空
用户名不为空
三:trim(定制功能,主要用来去掉逗号等替换字符)
根据id来修改信息
当输入的id不存在的时候,会返回false
四:foreach:通常用于in语法,如只查询id为2,5的 in(2,5)