JavaEE第四次实验
学会在Mapper映射文件里使用动态SQL以达到灵活对数据库操作的目的
复习常用SQL语句
-
数据查询-单表(select)
- 查询表中全部数据
select * from 表名;
- 查询表中指定列的信息
select 列1,列2 from 表名;
- 条件查询
select 列… from 表名 where 条件;
- 集合查询
where 列 in(值1,值2);
- 模糊查询
%:表示0到多个字符,示例:
where 列 like '%0'; //表示以0结尾 where 列 like '0%'; //表示以0开头 where 列 like '%0%'; //表示数据中包含0
_:表示一个字符,可多次使用,示例:
where 列 like '%0_'; //数据结尾第二位是0
- 交叉查询
select * from 表1 别名1,表2 别名2 where 条件
-
插入数据(insert)
- 按字段对应插入
insert into 表名(字段1,字段2..) values(值1,值2…);
- 全表插入
insert into 表名 values(值1,值2);
-
修改数据(update)
update 表 set 字段=值 where 条件; //带条件修改指定数据,否则修改全表
-
删除数据(delete)
delete from 表 where 条件; //删除数据带条件指定数据,否则删除全表数据
动态SQL
<if>
标签<choose>
标签<set>
标签<trim>
标签
1、<if>
标签
可以把标签理解为
if(user_name!=null && user_name!=''){
AND user_name=#{user_name}
}
if(password!=null && password!=''){
AND password=#{password}
}
2、<choose>
标签
可以把标签理解为
if(user_name!=null && user_name!=''){
AND user_name=#{user_name}
}else if(password!=null && password!=''){
AND password=#{password}
}else{
user_id=#{user_id}
}
3、<set>
标签(用于update),不建议使用
可以把标签理解成
if(login_name!=null && login_name!=''){
login_name=#{login_name},
}
if(user_name!=null && user_name!=''){
user_name=#{user_name},
}
if(password!=null && password!=''){
password=#{password},
}
if(user_type!=null && user_type!=''){
user_type=#{user_type}
}
4、<trim>
标签
- 实现
SELECT
*
FROM
sys_user
WHERE
AND user_name=#{user_name}
//如果不在上面加prefixOverrides="and",上面这句的前缀就会多个and出来就会报错
AND password=#{password}
- 实现
UPDATE
sys_user
SET
login_name=#{login_name},
user_name=#{user_name},
password=#{password},
user_type=#{user_type},
//如果不在上面加suffixOverrides=",",上面这句的后缀就会多个,(逗号)而报错
WHERE
user_id=#{user_id}
r_name},
password=#{password},
user_type=#{user_type},
//如果不在上面加suffixOverrides=",",上面这句的后缀就会多个,(逗号)而报错
WHERE
user_id=#{user_id}