MyBatis入门-中
发布日期:2022-02-10 11:36:55
浏览次数:43
分类:技术文章
本文共 4756 字,大约阅读时间需要 15 分钟。
MyBatis接口代理方式实现Dao层
-
接口代理方式-实现规则
- 传统方式实现 Dao 层,我们既要写接口,还要写实现类。而 MyBatis 框架可以帮助我们省略编写 Dao 层接口实现类的步骤。我们只需要编写接口,由 MyBatis 框架根据接口的定义来创建该接口的动态代理对象。
- 实现规则
- 映射配置文件中的名称空间必须和 Dao 层接口的全类名相同。
- 映射配置文件中的增删改查标签的 id 属性必须和 Dao 层接口的方法名相同。
- 映射配置文件中的增删改查标签的 parameterType 属性必须和 Dao 层接口方法的参数相同。
- 映射配置文件中的增删改查标签的 resultType 属性必须和 Dao 层接口方法的返回值相同。
- 接口代理方式-代码实现
- 删除 mapper 层接口的实现类。
- 修改映射配置文件
- 修改 service 层接口的实现类,采用接口代理方式实现功能。
-
核心配置文件(MyBatisConfig.xml)
-
映射配置文件(StudentMapper.xml)
SELECT * FROM student -
mapper层(StudentMapper)
package com.xxxxxxx.mapper;/* 持久层接口 */public interface StudentMapper { //查询全部 public abstract List
selectAll(); //省略其他方法,} 小结
- 接口代理方式可以让我们只编写接口即可,而实现类对象由 MyBatis 生成
- 实现规则(如上 实现规则)
- 获取动态代理对象
- SqlSession 功能类中的 getMapper() 方法
MyBatis 映射配置文件 – 动态 SQL
动态 SQL 介绍
-
MyBatis 映射配置文件中,前面我们的 SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的 SQL 就是 动态变化的,此时简单的 SQL 就不能满足要求了。
-
多条件查询
-
动态SQL标签
- :条件判断标签
- :循环遍历标签
-
标签
- :条件标签。如果有动态条件,则使用该标签代替 where 关键字。
- :条件判断标签。 *
-
:循环遍历标签
- :循环遍历标签。适用于多个参数或者的关系。
- 属性
- collection:参数容器类型,(list-集合,array-数组)。
- open:开始的 SQL 语句。
- close:结束的 SQL 语句。
- item:参数变量名。
- separator:分隔符。
- :循环遍历标签。适用于多个参数或者的关系。
-
SQL片段抽取
- :条件标签。如果有动态条件,则使用该标签代替 where 关键字。
- :条件判断标签。 *
-
举例
SELECT * FROM student
MyBatis 核心配置文件 – 分页插件
-
分页插件介绍
- 在企业级开发中,分页也是一种常见的技术。而目前使用的 MyBatis 是不带分页功能的,如果想实现分页的功能,需要我们手动编写 LIMIT 语句。但是不同的数据库实现分页的 SQL 语句也是不同的。这个时候就可以借助分页插件来帮助我们实现分页功能。
- PageHelper:第三方分页助手。将复杂的分页操作进行封装,从而让分页功能变得非常简单。
-
分页插件实现步骤
-
导入jar包
-
在核心配置文件中集成分页助手插件
-
-
分页插件相关
- 分页:可以将很多条结果进行分页显示。
- 分页插件 jar 包:pagehelper-5.1.10.jar jsqlparser-3.1.jar
- :集成插件标签。
- 分页助手相关 API
- PageHelper:分页助手功能类。
- startPage():设置分页参数
- PageInfo:分页相关参数功能类。
- getTotal():获取总条数
- getPages():获取总页数
- getPageNum():获取当前页
- getPageSize():获取每页显示条数
- getPrePage():获取上一页
- getNextPage():获取下一页
- isIsFirstPage():获取是否是第一页
- isIsLastPage():获取是否是最后一页
MyBatis 多表操作
多表模型
-
在实际开发中,随着业务难度的加深,肯定是需要多表操作的
-
多表模型分类
- 一对一:在任意一方建立外键,关联对方的主键。
- 一对多:在多的一方建立外键,关联一的一方的主键。
- 多对多:借助中间表,中间表至少两个字段,分别关联两张表的主键。
-
一对一
- 一对一模型:例如人和身份证,一个人只有一个身份证。
- :配置字段和对象属性的映射关系标签。
- id 属性:唯一标识
- type 属性:实体对象类型
- :配置主键映射关系标签。
- :配置非主键映射关系标签。
- column 属性:表中字段名称
- property 属性: 实体对象变量名称
- :配置被包含对象的映射关系标签。
- property 属性:被包含对象的变量名
- javaType 属性:被包含对象的数据类型
-
一对多
- 一对多模型:班级和学生,一个班级可以有多个学生
- :配置字段和对象属性的映射关系标签。
- id 属性:唯一标识
- type 属性:实体对象类型
- :配置主键映射关系标签。
- :配置非主键映射关系标签
- column 属性:表中字段名称
- property 属性: 实体对象变量名称
- :配置被包含集合对象的映射关系标签。
- property 属性:被包含集合对象的变量名
- ofType 属性:集合中保存的对象数据类型
-
多对多
- 多对多模型:学生和课程,一个学生可以选择多门课程、一个课程也可以被多个学生所选择。
-
:配置字段和对象属性的映射关系标签。
- id 属性:唯一标识
- type 属性:实体对象类型
-
:配置主键映射关系标签
-
:配置非主键映射关系标签。
- column 属性:表中字段名
- property 属性: 实体对象变量名称
-
:配置被包含集合对象的映射关系标签。
-
property 属性:被包含集合对象的变量名
-
ofType 属性:集合中保存的对象数据类型
-
sc
WHERE sc.sid=s.id AND sc.cid=c.id*:配置字段和对象属性的映射关系标签。 * id 属性:唯一标识 * type 属性:实体对象类型* :配置主键映射关系标签* :配置非主键映射关系标签。 * column 属性:表中字段名 * property 属性: 实体对象变量名称 * :配置被包含集合对象的映射关系标签。 * property 属性:被包含集合对象的变量名 * ofType 属性:集合中保存的对象数据类型
转载地址:https://blog.csdn.net/drug1910951117/article/details/106887634 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
哈哈,博客排版真的漂亮呢~
[***.90.31.176]2024年03月31日 13时35分27秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
iOS UILabel根据字符串长度自动适应宽度和高度
2021-06-29
细说JVM内存模型
2021-06-29
谈谈设计模式:建造者模式在jdk中的体现,它和工厂模式区别?
2021-06-29
走进Java架构!找工作,去小公司好,还是大公司好-
2021-06-29
趁热打铁!想要轻松搞定MySQL事务?一招解决分布式一致性
2021-06-29
改造RequestMappingHandlerMapping,使spring boot2的controller可以继承夫类的@RequestMapping 并追加路径到当前mapping前
2021-06-29
我的世界Bukkit服务器插件开发---快速开发框架---快速开发自己的服务器插件
2021-06-29
我的世界Bukkit服务器插件开发---用java 10分钟快速开发一个自己的服务器插件
2021-06-29
搭建Spring cloud项目---搭建Consul
2021-06-29
搭建docker私有镜像仓库(帐号密码登录)
2021-06-29
冰蝎V3.0Beta9-fixed客户端JAVA源码与配套服务端
2021-06-29
图片后缀和ContentType大全
2021-06-29
卸载notpad++,改用vscode,将VS Code添加到右键文件菜单
2021-06-29
JAVA反编译工具(界面版本的)-JAR反编译-war反编译-war逆向工程
2021-06-29
快速搭建SDN开发环境:ONOS开发环境
2021-06-29
OpenCV图像处理技术(Python)——几何变换
2021-06-29