mapper层
其中的方法语句时直接对数据库中的数据进行操作的,mapper层的方法在mybatis中与 .xml文件一一对应
xml配置文件
namespace中写的类就是xml对应的mapper层文件
resultMap结果类型
mapper层
public ListfindAllResultaMap(); xml文件
select * from user column是数据库中的字段
property是要映射成的实体类中的字段
MyBatis获取参数值的两种方式
#{} 和 ${}
${}的本质是字符串拼接,#{}的本质是占位符赋值
#{}
${}
需要加上单引号
使用${}做字符串拼接的方式可能存在sql注入的问题
select * from user where username = ${username}如果传参是 “张三 or username = 李四”
select * from user where username = 张三 or username = 李四
什么时候用${}
$:可以替换表名或者列名,确定数据是安全的,可以使用$
注意事项:
传参的时候使用@Param("")注解,@Param注解是给参数命名,命名后根据名字得到参数值
为什么#{}可以防sql注入
mybatis的#{}底层会获取传递过来的每个字符,然后进行循环对比,如果发现有敏感字符(如:单引号,双引号等),则会在上面加一个'/'代表转义此符号,让其变成一个普通字符串,不参数sql语句的生成
动态sql
标签
select * from user where username=#{username} and sex=#{sex} 如果username等于null
那么查询语句为
select * from user where and sex=#{sex}where 后面直接跟and 不对
-- 标签 select * from user username=#{username} and sex=#{sex} 如果username为空
返回的内容是以AND 或OR 开头的,则它会剔除掉
select * from user where sex=#{sex}
标签 update user where id = #{id} username = #{username} , address = #{address}
、 和 标签 相当于java中的if.....else if.....else
标签是这个标签组合当中的父标签和标签都在标签内部。
标签就相当于是我们的 if 和 elseif
标签相当于是我们的 else
5、 标签
trim标记是一个格式化的标记,可以完成set或者是where标记的功能
①、用 trim 改写上面第二点的 if+where 语句
prefix:前缀
prefixoverride:去掉第一个and或者是or
②、用 trim 改写上面第三点的 if+set 语句
suffixOverrides去掉最后一个什么
update user where id = #{id} username = #{username}, sex = #{sex},
标签 1.批量删除
delete from user where id in #{id} mapper中
int delete(@Param("ids") Integer[] ids);2.批量添加
insert into user(id,username,birthday,sex,adress) values (null,#{user.username},#{user.birthday},#{user.sex},#{user.address}) mapper中
int insert(@Param("users") Listusers);
mybatis关联映射
学生表
老师表
一对一
实体类
public class Student { private Integer id; private String Sname; private String sex; private Integer age; private Integer t_id; //这个是重点 private Teacher teacher; }
public class Teacher { private Integer id; private String Tname; }
一对多
public class Student { private Integer id; private String Sname; private String sex; private Integer age; private Integer t_id; }public class Teacher { private Integer id; private String Tname; //这个一定要有 private Liststudents; }



