DAY04
-
where就是我们以前使用where 关键字,自动去除多余逻辑运算符
<where> </where> -
if条件成立,执行if块中的内容
<if test=”属性名!=null and 属性名!=’’ ”> and 列名 关系运算符 #{属性名} </if> <if test=”属性名=null or 属性名=’’ ”> and 列名 关系运算符 #{属性名} </if> -
choose多选一的情况
-
foreach常用的属性
- index:表示下标
- collection:表示遍历的类型 array、list
- item:表示每次获取的数据
- separate:分隔符,每次获取数据后添加的符号
- open:生成sql语句以什么开头
- close:生成sql语句以什么结尾
-
set用于修改操作,就是 set关键字
Mybatis中的关联映射查询
-
通过表链接查询的数据如何使用po类进行存放;使用表链接查询获取的数据肯定来自于多张表,一张表对应一个po类
不管数据来自几张表,最终一行数据只能对应一个po对象
-
思考:
-
如何把部门表中的数据使用员工类的对象存放
-
如果我们能把部门类的对象放入到员工类中
public class Dept{ //存放部门表中的数据 } //存放员工表中的数据 public class Emp{ private Dept dept; }- 在映射文件中进行配置,指明列与属性的对应关系
-
如何编写,依据是表与表的主外键关系;在从表对应的类中创建主表对应类的对象即可
-
关联映射的使用
-
编写表连接的sql语句
select e.ename, d.dname, s.grade from emp e, dept d, salgrade s where e.deptno = d.deptno and e.sal between s.losal and s.hisal <if test="loSal != null and loSal != ''"> and losal >= #{loSal} </if> <if test="hiSal != null and hiSal != ''"> and hisal <= #{hiSal} </if> -
在java的po类中添加关联表映射类的对象

-
编写映射关联,结果集中的列与类中属性的对应关系
<!-- 配置关联关系 --> <resultMap id="empMap" type="com.upc.mybatis_01.po.Emp"> <id column="empno" property="empno"/> <result column="ename" property="ename"/> <result column="job" property="job"/> <result column="mgr" property="mgr"/> <result column="hiredate" property="hiredate"/> <result column="sal" property="sal"/> <result column="comm" property="comm"/> <!-- 其他类中的属性和列以此匹配 --> <association property="dept" javaType="com.upc.mybatis_01.po.Dept"> <id column="deptno" property="deptno"/> <result column="dname" property="dname"/> <result column="loc" property="loc"/> </association> <association property="grade" javaType="com.upc.mybatis_01.po.Salgrade"> <id column="grade" property="grade"/> <result column="losal" property="losal"/> <result column="hisal" property="hisal"/> </association> </resultMap>type:表示结果集中一行数据最终构建的对象
association:表示关联的对象配置信息
-
在select节点中使用resultMap属性关联我们定义的resultMap映射
分页:分页插件
-
在pom文件中添加插件的依赖
-
在java的业务逻辑中添加分页操作
PageInfo.startPage(页数,每页的条数); -
如果需要返回分页的详细信息:总页数、当前页数、总的记录数等,需要进一步设置
需要使用PageInfo对象对查询的数据进行二次封装
List<Emp> emps = managerMapper.findAll(); //根据查询的数据获取总页数、总条数等 PageInfo<Emp> page = new PageInfo<>(emps); System.out.println(page);
-
同步完成前后端分离的demo
需要开发web项目
-
以前使用的技术
- jsp
- servlet
-
Spring mvc
- 主要功能实现控制器的操作
- 把页面提交的数据自动封装为对象
- 把我们后端查询的数据自动转为json对象
-
掌握
- 如何编写控制器
- 在控制器中编写处理客户端请求的方法
- 如何启动springboot的web程序
- 如何访问
-
步骤
-
创建使用springboot的项目
-
配置服务器的相关参数
-
端口 8080
-
项目的目录 默认 /
如果默认配置,服务器启动后
http://localhost:8080
-
-
创建控制器,接收客户端的请求并且把处理的结果响应给客户端
- 创建一个普通的类
- 添加注解**@RestController**
- 在类中添加方法,返回类型任意,根据需要设置相应的参数
- 在方法上添加**@RequestMapping**注解,设置对应的访问路径
- 在方法中实现功能
-
本文介绍了MyBatis中动态SQL的使用,如where标签简化逻辑,if条件判断以及choose多选一的选择。同时,讲解了如何进行关联映射,包括在PO类中嵌套关联类,映射文件中的resultMap配置,以及association配置。此外,还提及了分页查询,通过分页插件实现,并展示了SpringMVC在Web项目中的应用,强调了控制器的创建和响应客户端请求的方法。

488

被折叠的 条评论
为什么被折叠?



