当前位置: 首页 > news >正文

做公司网站建设价格排名优化公司口碑哪家好

做公司网站建设价格,排名优化公司口碑哪家好,哪个选项不属于网络营销的特点,wordpress更新之后字体发生变化文章目录1.什么是MyBatis?2.#{}和${}的区别是什么?3.MyBatis的一级、二级缓存4.MyBatis的优缺点5.当实体类中的属性名和表中的字段名不一样 ,怎么办 ?6.模糊查询like语句该怎么写?7.Mybatis是如何进行分页的?分页插件的原理是什…

文章目录

    • 1.什么是MyBatis?
    • 2.#{}和${}的区别是什么?
    • 3.MyBatis的一级、二级缓存
    • 4.MyBatis的优缺点
    • 5.当实体类中的属性名和表中的字段名不一样 ,怎么办 ?
    • 6.模糊查询like语句该怎么写?
    • 7.Mybatis是如何进行分页的?分页插件的原理是什么?
    • 8.如何执行批量插入?
    • 9.Mybatis动态sql有什么用?执行原理?有哪些动态sql?
    • 10.Mapper.xml除了常见的select|insert|updae|delete标签之外,还有哪些标签?
    • 11.MyBatis的XML映射文件中,不同的XML映射文件,id是否可以重复?
    • 12.为什么说MyBatis是半自动ORM映射框架?它与全自动的区别在哪里?
    • 13.MyBatis实现一对一有几种方式?具体怎么操作的?
    • 14.MyBatis实现一对多有几种方式,具体怎么操作的?
    • 15.MyBatis是否支持延迟加载?如果支持,它的实现原理是什么?
    • 16.什么是MyBatis的接口绑定?有哪些实现方式?
    • 17.使用MyBatis的Mapper接口调用时有哪些要求?
    • 18.简述MyBatis的插件运行原理,以及如何编写一个插件?

1.什么是MyBatis?

  1. Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。
  2. MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO 映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
  3. 通过 xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java 对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 mybatis 框架执行 sql 并将结果映射为 java 对象并返回。(从执行 sql 到返回 result 的过程)。

2.#{}和${}的区别是什么?

1.#{}是预编译处理,KaTeX parse error: Expected 'EOF', got '#' at position 23: …换。 2.Mybatis在处理#̲{}时,会将sql中的#{}替…{}时,就是把${}替换成变量的值。
4.使用#{}可以有效的防止SQL注入,提高系统安全性。

3.MyBatis的一级、二级缓存

Mybatis一级缓存(默认开启)
是SqlSession级别的缓存
默认开启
在这里插入图片描述

一级缓存清除方法
执行SqlSession的commit(执行插入、更新、删除操作后)
执行SqlSession的close方法
执行SqlSession的clearCache方法
映射文件XML中添加flushCache=“true”

Mybatis二级缓存(默认关闭,一般不建议使用)

  • namspace/mapper级别(跨sqlSession)的缓存
  • 默认不开启
  • 二级缓存的开启需要进行配置,实现二级缓存的时候,MyBatis要求返回的POJO必须是可序列化的,也就是要求实现- - Serializable接口。配置方法很简单,只需要在映射XML文件配置 就可以开启 二级缓存了
  • 二级缓存因为是跨sqlSession的,会存在严重的脏读问题 (脏读问题解释)
  • 二级缓存的弊大于利,一般是设置为关闭二级缓存
  • 实际开发中,会使用第三方来缓存,比如redis

二级缓存清除方法
映射文件XML中添加flushCache=“true”

4.MyBatis的优缺点

优点

  1. 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML标签,支持编写动态 SQL 语句,并可重用。
  2. 与 JDBC 相比,减少了大量代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接;
  3. 很好的与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要JDBC 支持的数据库 MyBatis 都支持)。
  4. 够与 Spring 很好的集成;
  5. 提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射标签,支持对象关系组件维护。

缺点

  1. SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写SQL 语句的功底有一定要求。
  2. SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

5.当实体类中的属性名和表中的字段名不一样 ,怎么办 ?

第1种,通过在查询的 sql 语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。
在这里插入图片描述

第2种,通过来映射字段名和实体类属性名的一 一对应的关系。

在这里插入图片描述

6.模糊查询like语句该怎么写?

  1. 在Java代码中添加sql通配符。
    在这里插入图片描述

  2. 在sql语句中拼接通配符,会引起sql注入。
    在这里插入图片描述

  3. 使用bind动态标签拼接通配符,不会引起sql注入。

在这里插入图片描述

7.Mybatis是如何进行分页的?分页插件的原理是什么?

1.Mybatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理分页。可以在 sql 内直接书写带有物理分页的参数来完成物理分页功能,也可以使用分页插件来完成物理分页。
2.分页插件的基本原理是使用 Mybatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦截待执行的 sql,然后重写sql,根据 dialect 方言,添加对应的物理分页语句和物理分页参数。

8.如何执行批量插入?

  1. 使用MyBatis foreach动态sql
    在这里插入图片描述

在这里插入图片描述

  1. 使用Java代码

9.Mybatis动态sql有什么用?执行原理?有哪些动态sql?

1.MyBatis的动态sql可以写在Mapper.xml内,以标签的形式编写动态sql,执行原理是根据表达式的值完成逻辑判断并动态拼接sql。
2.Mybatis 提供了 9 种动态 sql 标签:
trim | where | set | foreach | if | choose| when | otherwise | bind 。

10.Mapper.xml除了常见的select|insert|updae|delete标签之外,还有哪些标签?

1.、、、、,加上动态 sql 的 9 个标签,
2.其中 为 sql 片段标签,通过 标签引入 sql 片段, 为不支持自增的主键生成策略标签。

11.MyBatis的XML映射文件中,不同的XML映射文件,id是否可以重复?

1.不同的 XML 映射文件,如果配置了 namespace,那么 id 可以重复;如果没有配置 namespace,那么 id 不能重复。
2.原因就是 namespace+id 是作为Map <String, MapperStatement>的 key使用的,如果没有 namespace,就剩下 id,那么,id 重复会导致数据互相覆盖。有了 namespace,自然 id 就可以重复,namespace 不同,namespace+id 自然也就不同。

12.为什么说MyBatis是半自动ORM映射框架?它与全自动的区别在哪里?

1.Hibernate 属于全自动 ORM 映射框架,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。
2.Mybatis在查询关联对象或关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动 ORM 映射框架。

13.MyBatis实现一对一有几种方式?具体怎么操作的?

  1. 有联合查询和嵌套查询两种方式。
  2. 联合查询是几个表联合查询,只查询一次, 通过在标签里面配置标签配置一对一的类就可以完成。

SysUserMapper接口
在这里插入图片描述

SysUserMapper.xml
在这里插入图片描述

IdCardMapper.xml
在这里插入图片描述

  1. 嵌套查询是先查一个表,根据这个表里面的结果的外键 id,再去另外一个表里面查询数据,也是通过标签配置,但另外一个表的查询通过标签的select属性配置。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

14.MyBatis实现一对多有几种方式,具体怎么操作的?

  1. 有联合查询和嵌套查询两种方式。
  2. 联合查询是几个表联合查询,只查询一次,通过在标签里面的标签配置一对多的类就可以完成。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 嵌套查询是先查一个表,根据这个表里面的结果的外键id,再去另外一个表里面查询数据,也是通过配置,但另外一个表的查询通过标签的select属性配置。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

15.MyBatis是否支持延迟加载?如果支持,它的实现原理是什么?

  1. Mybatis仅支持association关联对象和collection关联集合对象的延迟加载,association指的就是一对一,collection指的就是一对多查询。
  2. lazyLoadingEnabled:延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。
  3. aggressiveLazyLoading:当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载(参考lazyLoadTriggerMethods)。
  4. lazyLoadTriggerMethods:指定哪个对象的方法触发一次延迟加载。用逗号分隔的方法列表,默认执行下面方法就触发延迟加载:equals,clone,hashCode,toString。
  5. fetchType:为每一次查询决定是否延迟加载,可以覆盖lazyLoadingEnabled配置。lazy:延迟加载;eager:积极加载。

16.什么是MyBatis的接口绑定?有哪些实现方式?

  1. 接口绑定,就是在 MyBatis 中任意定义接口,然后把接口里面的方法和 SQL 语句绑定, 我们直接调用接口方法就可以,这样比起原来了 SqlSession 提供的方法我们可以有更加灵活的选择和设置。
  2. 接口绑定有两种实现方式,一种是通过注解绑定,就是在接口的方法上面加上@Select、@Update 等注解,里面包含 Sql 语句来绑定。
  3. 另外一种就是通过 xml里面写 SQL 来绑定, 在这种情况下,要指定 xml 映射文件里面的 namespace 必须为接口的全路径名。当 Sql 语句比较简单时候,用注解绑定, 当 SQL 语句比较复杂时候,用 xml 绑定,一般用 xml 绑定的比较多。

17.使用MyBatis的Mapper接口调用时有哪些要求?

  1. Mapper 接口方法名和 Mapper.xml 中定义的每个 sql 的 id 相同;
  2. Mapper 接口方法的输入参数类型和 Mapper.xml 中定义的每个 sql 的parameterType 的类型相同;
  3. Mapper 接口方法的输出参数类型和 mapper.xml 中定义的每个 sql 的resultType 的类型相同;
  4. Mapper.xml 文件中的 namespace 即是 mapper 接口的类路径。

18.简述MyBatis的插件运行原理,以及如何编写一个插件?

  1. Mybatis 仅可以编写针对 ParameterHandler、ResultSetHandler、StatementHandler、Executor 这 4 种接口的插件,Mybatis 使用 JDK 的动态代理,为需要拦截的接口生成代理对象以实现接口方法拦截功能,每当执行这 4 种接口对象的方法时,就会进入拦截方法,具体就是 InvocationHandler 的 invoke()方法,当然,只会拦截那些你指定需要拦截的方法。
  2. 编写插件:实现 Mybatis 的 Interceptor 接口并复写 intercept()方法,然后在给插件编写注解,指定要拦截哪一个接口的哪些方法即可,最后,需要在配置文件中配置你编写的插件。
http://www.hrbkazy.com/news/17202.html

相关文章:

  • 武汉企业建站程序免费注册网站
  • 深圳办公室软装兰州seo新站优化招商
  • 淘宝网站的建设目标网站推广的方式有
  • 豪华跑车网站建设广告招商
  • 宝塔 怎么做网站网站自然排名工具
  • 品牌网站制作报价宁波正规seo快速排名公司
  • 磁县邯郸网站建设手游推广平台
  • 大型门户网站模板qq推广引流怎么做
  • 小说网站静态模板最有效的100个营销方法
  • 光明新区做网站百度地图导航网页版
  • 河南省住房和城乡建设厅投诉网站企业网站推广方案设计
  • 北京做网站的公司拟软文标题例子
  • 天津专门做网站的公司营销推广费用预算表
  • 家居企业网站建设渠道最近国际时事热点事件
  • 衡阳县住房和城乡建设局网站竞价推广的企业
  • asp.net网站和空网站有什么区别宁德市人民医院
  • 成都网站建设赢展最新军事报道
  • 手机模板网站模板下载网站有哪些友情链接互换网站
  • 软件公司网站模板下载十大经典案例
  • 办公用品网站建设市场定位盐城seo排名
  • 西安网站开发公司电话网站死链检测工具
  • 英德市城乡建设局网站湖南网站排名
  • 资料库网站应该怎么做免费外链发布
  • 科普重庆网站互联网项目
  • 郑州哪有做网站的公司怎么开网站平台
  • wordpress office插件单页关键词优化费用
  • 黑色炫酷的监控网站html引流app推广软件
  • 网站背景css宁波优化网页基本流程
  • 如何使用axure做网站手机百度seo怎么优化
  • 自己如何做棋牌网站线上网络平台推广