首页 > 其他分享 >MyBatis的几个核心类和基本用法

MyBatis的几个核心类和基本用法

时间:2024-07-02 23:09:30浏览次数:23  
标签:映射 核心 resultMap 用法 resultType SQL MyBatis 查询 主键

1. SqlSessionFactoryBuilder:
读取配置信息创建 SqlSessionFactory,建造者模式,方法级别生命周期,方法结束生命周期结束;
重点是建造出SqlSessionFactory工厂对象

2. SqlSessionFactory:
SqlSession工厂对象,用于创建 Sqlsession,工厂单例模式,存在于程序的整个生命周期;

3. SqlSession:
代表一次数据库连接,一般通过调用 Mapper 访问数据库,也可以直接发送SQL 执行;
线程不安全,要保证线程独享(方法级);
4. SQL Mapper:
由一个 Java 接口和 XML 文件组成,包含了要执行的 SQL 语句和结果集映射规则。方法级别生命周期;
** 结果集映射规则:**
resultType 和 resultMap
resultType:当使用 resultType 做 SQL 语句返回结果类型映射时,对于 SQL 语句查询出的字段在相应的 pojo 中必须有和它相同的字段对应,而 resultType 中的内容就是 pojo 在本项目中的位置。
自动映射注意事项 :
1. 前提:SQL 列名和 JavaBean 的属性是一致的,或列名和 JavaBean 不一致,但列名符合单词下划线分割,Java 是驼峰命名法,则mapUnderscoreToCamelCase 可设置为 true;
config的xml中设置
2. 使用 resultType,如用简写需要配置 typeAliases (别名);
当使用resultMap,需要进行手工映射,pojo与数据库字段,需要一一对应,包括类型、名称:
resultMap 元素是 MyBatis 中最重要最强大的元素。它可以让你从 90% 的 JDBC ResultSets
数据提取代码中解放出来,在对复杂语句进行联合映射的时候,它很可能可以代替数千行的
同等功能的代码。 ResultMap 的设计思想是,简单的语句不需要明确的结果映射,而复杂
一点的语句只需要描述它们的关系就行了。

resultType与resultMap如何选择,
简单查询用resultType,复杂查询如多表关联查询和需要自定义转换规则的使用resultMap

resultMap多表查询配置
一对一查询:





一对多查询:
collecction,复杂关联查询集合。






阿里规范推荐使用resultMap,可以解耦,减少代码依赖度

参数传递方式
1.通过map方式,可读性差,避免使用
2.通过注解方式,非常直观,但参数不能超过5个
3.通过pojo方式,也直观,参数大于5个后使用比较方便。

主键获取
一、通过通过 insert/update 标签相关属性
1.通过设置 useGeneratedKeys=true自动开启获取主键
2.keyProperty=id 用于指定主键字段
二、 通过 selectKey 元素
Oracle 通过 sequnce 获取主键示例:

select SEQ_ID.nextval from dual

Mysql 通过自增长序号获取主键示例:

select LAST_INSERT_ID()
</selectKey
三、自定义ID,如UUID或雪花算法生成的ID,需要插入之前java代码提前设置

SQL参数传递

{},预编译参数,PrepareStatement,会对传入的参数进行预编译,并多增加单引号,优点是可以 防止sql注入

${},物预编译,底层用Statment,不会添加单引号,直接拼接sql,= 'xx' or 1=1,无法防止sql注入。
强制推荐#{}传参

标签:映射,核心,resultMap,用法,resultType,SQL,MyBatis,查询,主键
From: https://www.cnblogs.com/velloLei/p/18280717

相关文章

  • MyBatis2(MyBatis基础配置 动态代理 映射器 select 元素 insert 元素 update 元素和del
    目录一、MyBatis基础配置1.MyBatis配置文件2.<configuration>元素3.<enviroments>元素4.<properties>元素5.<typeAliases>元素6.<mappers>元素二、动态代理三、映射器1.映射器与接口2. 映射器的引入 3.映射器的组成 四、select元素参数传递多......
  • timezone包的用法
    文章目录1.概念介绍2.使用方法2.1获取所有时区2.2转换时区时间3.示例代码4.内容总结我们在上一章回中介绍了"分享一些好的Flutter站点"相关的内容,本章回中将介绍timezone包.闲话休提,让我们一起TalkFlutter吧。1.概念介绍我们在前面章回中介绍了获取当前......
  • 集中式DTU站所终端2021版-主控核心单元
    适用范围:APT-6600J集中式DTU站所终端产品适用于10KV、35KV及以下的配电站、室内开闭所、配电房、户外环网柜、环网箱、箱变等。可实现数据实时采集,远程控制、故障就地动作、主站加密通讯、北斗/GPS对时,并集成线损测量、远程通讯模块、就地通讯模块、标准化运维等功能,最大支......
  • 数据分表——使用 Mybatis-Plus插件实现动态表名分表(按年份分表、按月份分表)
    本博客适合Mybatis-Plus3.4以上版本,笔者使用版本为3.5.3。分库与分表的原因1.业务场景:日志、交易流水表或者其他数据量大的表,通过日期进行了水平分表,需要通过日期参数,动态的查询数据。实现思路:利用MybatisPlus的动态表名插件DynamicTableNameInnerInterceptor,实现Sql执行......
  • 北大核心和科技核心代表了什么?
    在中国学术期刊评价体系中,"北大核心"和"科技核心"是两种不同的期刊评价指标:北大核心期刊(PekingUniversityCoreJournals):北大核心期刊是指被北京大学图书馆认定为高质量、学术水平较高的中文期刊。这些期刊经过北京大学图书馆的评估和收录,被认为对学术研究具有重要的参......
  • C# new关键字的三种用法
    在C#中,new关键字具有多种不同的用途,主要包括以下三个:1.作为运算符:创建对象和调用构造函数:这是最常见的用法,用于在堆上分配内存并初始化一个类的新实例。例如:Personperson=newPerson();//调用默认构造函数PersonanotherPerson=newPerson("Alice",30);//调用带参......
  • MyBatis是什么以及为什么需要ORM框架、快速搭建
    MyBatis是什么MyBatis的前身是Ibatis,本质是一款半自动化的ORM框架,除了能对POJO进行ORM映射之外,还可以编写SQL脚本语句。主要是为了解决我们平时开发中经常写的JDBC代码,将繁琐的JDBC代码封装起来,化繁为简。MyBatis映射文件四要素:1.SQL语句2.映射规则3.POJO4.Mapper接口为......
  • 钟馗之眼ZoomEye用法介绍
    认识ZoomEyeZoomEye是一个网络空间搜索引擎,专门用于发现和分析互联网设备和服务的公开信息。它由中国安全公司Knownsec开发,广泛用于安全研究、漏洞评估和网络监控。以下是ZoomEye的主要功能介绍: 1.设备搜索ZoomEye可以扫描和搜索互联网上公开的设备,包括服务器、路由器、摄......
  • 【产品运营】Saas的核心六大数据
    国内头部软件公司的一季度表现惨不忍睹,为啥美国的还那么赚钱呢?其实核心是,没几个Saas产品经理是看数据的,也不知道看啥数据。SaaS行业,天天抛头露面、名头叫的响的SaaS产品,真没有几个赚钱的。那为啥美国的SaaS产品,个个估值高,且还相当赚钱呢?首先从产品侧来说,核心有......
  • termsrv.dll 是实现 Windows 远程桌面服务的核心组件,它通过上述机制和功能,支持了在企
    远程桌面协议(RemoteDesktopProtocol,RDP)是由微软开发的一种专用协议,用于在网络上进行远程桌面会话和远程应用程序的访问。它允许用户从一个计算机(称为客户端)远程控制另一个计算机(称为服务器),而无需物理上位于服务器旁边。WindowsRDP的底层原理:客户端-服务器架构:客户端:用户......