Mybatis框架2

回顾:
	Mybatis操作数据库的步骤:
1.	创建工程导入坐标
2.	配置mybatis核心配置文件
3.	配置SQL语句的映射文件
4.	编写dao中的方法
5.	配置对应的sql语句
Mybatis中的核心API对象
	Resources: 加载配置文件
	SqlSessionFactoryBuilder: 创建SqlSessionFactory
	SqlSessionFactory: 工厂模式,线程安全的,单例对象
	SqlSession: 执行SQL语句,创建代理对象,不是线程安全,多例对象
#{}和${}区别:
	使用方式:
		#{}:传入对象:#{属性名},基本数据类型:#{随便写}
		${}:传入对象:${属性名},基本数据类型:${value}
	处理过程:
		#{}:占位符,内部经过preparStatment处理,经过预编译,没有SQL注入风险
		${}:SQL字符串拼接.内部经过statement处理.有SQL注入风险

  1. 多参数查询
    根据用户名和性别查询
    1.1 方式一(了解)
    1.1.1 接口
    在这里插入图片描述
    1.1.2 Sql映射文件
    在这里插入图片描述
    1.2 方式二
通过@Param注解自定义别名
	@Param:定义到方法参数之前,自定义别名
		Value属性:别名

1.2.1 接口
在这里插入图片描述
1.2.2 SQL映射文件
在这里插入图片描述
1.3 方式三(重点)
将多个参数封装到一个对象中!
1.3.1 接口
在这里插入图片描述
1.3.2 SQL映射文件
在这里插入图片描述
2. 获取保存主键
保存之后,获取保存的主键ID
2.1 方式一
使用条件: 只能获取数据库中自动增长的id
在这里插入图片描述
2.2 方式二
先保存,再查询
Mysql函数: select last_insert_id() (获取最后保存id)
在这里插入图片描述
3. 动态SQL(重点)
在sql语句中完成判断,循环等java功能
3.1 if标签
判断标签
案例: 多条件查询
在这里插入图片描述
3.2 where标签
在这里插入图片描述
3.3 choose,when,otherwise标签
判断:获取唯一的条件
相当于java代码中的:if() elseif() else





在这里插入图片描述
在这里插入图片描述
3.4 set标签
在这里插入图片描述
3.5 trim标签(了解)
trim标签主要作用:替换where和set标签
用于sql代码的优化
在这里插入图片描述
3.6 foreach标签
案例: 多个id查询用户
作用: 在sql映射文件中循环迭代数组或者集合
3.6.1 传入集合
在这里插入图片描述
3.6.2 传入数组在这里插入图片描述
3.6.3 传入对象
在这里插入图片描述
4. Mybatis中的多表操作
4.1 表关系
一对一
一对多: 通过外键描述
案例: 用户和账户
在这里插入图片描述
多对多: 通过中间表描述
案例: 用户和角色
在这里插入图片描述
4.2 一对多查询
4.2.1 账户到用户的多对一关系(一对一关系)

案例: 查询所有的账户以及每个账户所属的用户
SQL: SELECT a.id aid,a.uid,a.money,u.* FROM account a,USER u WHERE a.uid=u.id

4.2.1.1 接口
在这里插入图片描述4.2.1.2 映射文件
在这里插入图片描述
4.2.2 用户到账户的一对多关系

案例: 查询所有用户,以及每个用户的所有账户
SQL: SELECT u.*, a.id aid,a.uid,a.money FROM USER u LEFT JOIN account a ON u.id=a.uid

4.2.2.2 接口
在这里插入图片描述
4.2.2.3 映射文件
在这里插入图片描述
4.3 多对多查询
4.3.1 用户到角色的一对多

案例: 查询所有用户以及每个用户的所有角色
SQL: SELECT u.*,r.id rid,r.role_desc ,r.role_name FROM USER u LEFT JOIN user_role ur ON u.id=ur.uid LEFT JOIN role r ON ur.rid=r.id

4.3.1.1 接口
在这里插入图片描述
4.3.1.2 映射文件
在这里插入图片描述
4.3.2 角色到用户的一对多(作业)

面试问题
	主键获取方式: (selectKey)
	动态SQL 
		If,where,set,foreach
作业
1.	完成今日代码
2.	研究一对多查询的其他两种方式
3.	角色到用户的一对多

猜你喜欢

转载自blog.csdn.net/AdamCafe/article/details/90648786
今日推荐