主页 > 新闻资讯 > 大数据开发基础之Mybatis

大数据开发基础之Mybatis

作者:游老师 浏览次数: 2021-03-31 14:46
今天就是关于大数据开基础JAVA部分的最后一节了,这一节学完,至此大数据开发基础JAVA就结束了,所以给大家带来的是大数据开发基础之Mybatis。
一、Mybatis
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis,实质上Mybatis对ibatis进行一些改进。
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
mybatis可以将向 preparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象。(输出映射)
MyBatis框架示意图:
 
注意点:
1.mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。
2.通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂
3.由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。
4.mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。
5.Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。
6.Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。
7.Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。
二、Mybatis的主要流程和核心概念之间的关系
(1)SqlSessionFactoryBuilder读取配置信息生成SqlSessionFacotry,配置信息主要是通过读取配置文件mybatis-config.xml得到的,也可以通过其他方式。
(2)通过SqlSessionFacotory可以获得SqlSession。
(3)SqlSession可以调用具体的sql语句进行执行,sql语句则通过读取mapper xml文件得到。
(4)最核心的地方就是sql语句的动态生成,以及参数的传入和查询结果的转化,这些都是Mybatis通过配置可以处理的,使用Mybatis主要在这三部分的编写。
三、Mybatis的配置文件mybatis-config.xml
通过xml配置文件的形式配置一些Mybatis的全局信息,例如数据源、typehandler之类的,可以再构造时指定文件路径,不过mybatis-config.xml是默认的名字,可配置的主要信息如下:
(1)properties,配置一些属性值,全局都可以使用。
(2)settings,配置Mybatis运行时一些关键属性的设置,包括设置缓存、懒加载、使用生成主键之类的,可以看文档了解。
(3)typeAliases,定义一些全局的别名。
(4)typeHandlers,配置一些全局的类型处理器,Mybatis在数据库类型和java类型进行值转化时所使用,主要是java类型参数传入转化为数据库类型,查询结果从数据库类型转化为java类型。Mybatis自带一些默认的typeHandler,处理常见的类型,例如字符串、布尔值、日期等等。该配置文件中用户自定义一些全局的typeHandler,Mybatis会在类型转化时自动寻找,typeHandler也可以在mapper xml文件中配置,不过只是针对具体字段起作用。typeHandler核心在于指定javaType,jdbcType和具体的处理器。
(5)plugins,Mybatis允许用插件的方式对sql语句的生成和执行进行拦截,做一些处理。其中ResultSetHandler,StatementHandler是在meet-mybatis中用来处理分页,对生成的sql语句进行处理。
(6)environments,和mavne中的profiles类似,都是定义一些environment,以ID区分,然后默认激活一种环境,environment中可以配置数据源datasource和事务管理器transactionManager。
(7)mappers:定义需要加载的mapper xml文件,只有定义了该标签SqlSession才能更具id找到对应的sql语句执行。在mybatis-spring使用方式中,可以直接以属性方式配置给SqlSessionFactory。
四、最核心文件Mapper XML
Mapper XML定义了具体执行的sql语句,缓存,定义传入参数和查询结果的转化方式
(1)select标签,定义查询语句,关键的属性包括:
(2)insert标签定义增加操作,核心在于参数的传入。除了和select一些公共属性外,关键属性还包括
(3)delete和update标签定义删改操作,核心在于参数的传入,除了公共属性,没有额外属性
 
(4)sql可以定义重用的sql代码段,供其他标签通过<include refid="XXX"/>导入
(5)参数的传入,主要采用parameterType定义,不仅可以指定基本类型,还可以指定自定义类型。主要格式就是#{参数,javaType,jdbcType,typeHandler},也可以定义numericScale主要是数值型进行转化时保留精确度,#{}会自动装入对应属性的值拼成sql,特殊需求下${}可以直接传入字符串而不会发生值替换,这种情况容易导致sql注入攻击,因此不提倡。
(6)最最核心的就是resultMap标签,查询是数据库最主要的功能,通常情况下,可以通过resultType指定返回结果类型,Mybatis会更具字段名称和类型,调用对应的typeHandler进行转换,但是对于复杂的查询结果,特别是多表关联查询时,比较复杂。在resultMap中id和result将具体字段和属性的值进行对应,它们可以自由的定义列的类型、属性的类型及处理器。其中比较有用的几个标签如下
 
(7)cache标签,定义缓存。Mybatis的缓存分为两种:session局部缓存,是在sqlSession生命周期中的缓存又称为本地缓存,cache相当于二级缓存,作用在当前Mapper XML范围内,默认不开启,开启只需添加<cache/>即可,
当前xml文件中所有select语句都将缓存,insert,update和delete语句都会刷新缓存,默认使用LRU算法,可以通过eviction来定义,刷新时间可通过flushInterval定义,size定义缓存的结果集的数量。
以上就是关于大数据开发基础之Mybatis的所有内容了,这也代表着大数据开发基础的JAVA部分已经学完了,希望大家在这期间都有学到知识,打好JAVA基础,后面才会有利于自己的发展。
希望大家点个关注,及时收取最新文章推送。
有问题的欢迎在评论区留言,如有侵权请告知。
热点排行
推荐文章
立即申请>>