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

网站模板 metinfo品牌型网站制作价格

网站模板 metinfo,品牌型网站制作价格,招聘网站建设方案模板,wordpress重定向1,什么是Mybatis ( 1 )Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁…

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,说说Mybatis的优点和缺点

优点:

( 1)基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写 在 XML 里,解除 sql 与程序代码的耦合,便于统一管理;提供 XML 标签,支持编写动态 SQL 语句,并 可重用。

( 2)与 JDBC 相比,减少了 50%以上的代码量,消除了 JDBC 大量冗余的代码,不需要手动开 关连 接;

( 3)很好地与各种数据库兼容(因为 MyBatis 使用 JDBC 来连接数据库,所以只要 JDBC 支持的 数据 库 MyBatis 都支持)。

( 4)能够与 Spring 很好地集成;

( 5)提供映射标签,支持对象与数据库的 ORM 字段关系映射;提供对象关系映射标签,支持对 象 关键组件维护。

缺点

( 1 )SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功 底有 一定要求。

( 2 )SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。

3、#{} 和 ${} 的区别是什么?

#{}是预编译处理,${}是字符串替换。

Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement 的 set 方法来赋 值;

Mybatis 在处理${}时,就是把${}替换成变量的值。

使用#{}可以有效地防止 SQL 注入,提高系统安全性。

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

第 1 种: 通过在查询的 sql 语句中定义字段名的别名,让字段名的别名和实体类的属性名一致。

    <select id=selectorder parametertype=int resultetype=me.gacl.domain.order〉 selectorder_id id, order_no orderno ,order_price price form orders where
order_id=#{id};</select>

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

<select id="getOrder" parameterType="int" resultMap="orderresultmap">select * from orders where order_id=#{id}</select><resultMap type=me.gacl.domain.order id=orderresultmap〉<!–用 id 属性来映射主键字段–><id property=id column=order_id〉<!–用 result 属性来映射非主键字段,property 为实体类属性名,column 为数据表中的属性–> <result property = “orderno” column =order_no/<result property=price column=order_price /
</reslutMap>

5、 是如何进行分页的?分页插件的原理是什么?

Mybatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内存分页,而非物理 分 页。可以在 sql 内直接拼写带有物理分页的参数来完成物理分页功能,也可以使用分页插件 来完成物 理分页,比如:MySQL 数据的时候,在原有 SQL 后面拼写 limit。

分页插件的基本原理是使用 Mybatis 提供的插件接口,实现自定义插件,在插件的拦截方法内拦 截 待执行的 sql,然后重写 sql,根据 dialect 方言,添加对应的物理分页语句和物理分页参数。

6、 Mybatis 是如何将sql 执行结果封装为目标对象并返回的? 都有 哪些映射形式?

第一种是使用标签,逐一定义数据库列名和对象属性名之间的映射关系。

第二种是使用 sql 列的别名功能,将列的别名书写为对象属性名。

有了列名与属性名的映射关系后,Mybatis 通过反射创建对象,同时使用反射给对象的属性逐一 赋 值并返回,那些找不到映射关系的属性,是无法完成赋值的。

7、 如何执行批量插入?

首先,创建一个简单的 insert 语句:

<insert id=insertname〉insert into names (name) values (#{value})
</insert>

然后在 java 代码中像下面这样执行批处理插入:

list<string> names = new arraylist();names.add(“fred”);names.add(“barney”);names.add(“betty”);names.add(“wilma”);// 注意这里 executortype.batchsqlsession sqlsession = sqlsessionfactory.opensession(executortype.batch);try {namemapper mapper = sqlsession.getmapper(namemapper.class);for (string name : names) {mapper.insertname(name);}sqlsession.commit();}catch(Exception e){e.printStackTrace();sqlSession.rollback();throw e;}finally {sqlsession.close();}

8,xml 映 射 文 件 中 , 除了常见的seleect、insert、update、delete标签之外,还有哪些标签?

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

9,Mybatis 实现一对一有几种方式?具体怎么操作的?

有联合查询和嵌套查询,联合查询是几个表联合查询,只查询一次, 通过在 resultMap 里面配置 association 节点配置一对一的类就可以完成;

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

10、Mybatis是否支持延迟加载?如果支持,它的实现原理是什么吗?

Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加载,association 指的就是一对一,collection 指的就是一对多查询。在 Mybatis 配置文件中,可以配置是否启用延迟加 载 lazyLoadingEnabled=true|false。

它的原理是,使用 CGLIB 创建目标对象的代理对象,当调用目标方法时,进入拦截器方法,比如调 用 a.getB().getName(),拦截器 invoke()方法发现 a.getB()是 null 值,那么就会单独发送事先保 存好的

查询关联 B 对象的 sql,把 B 查询上来,然后调用 a.setB(b),于是 a 的对象 b 属性就有值了,接 着完成 a.getB().getName()方法的调用。这就是延迟加载的基本原理。

当然了,不光是 Mybatis,几乎所有的包括 Hibernate,支持延迟加载的原理都是一样的。

11,说说 Mybatis的缓存机制:

Mybatis 整体:

一级缓存 localCache

在应用运行过程中,我们有可能在一次数据库会话中,执行多次查询条件完全相同的 SQL , MyBatis 提供了一级缓存的方案优化这部分场景,如果是相同的 SQL 语句,会优先命中一级缓 存, 避免直接对数据库进行查询,提高性能。

每个 SqlSession 中持有了 Executor,每个 Executor 中有一个 LocalCache。当用户发起查询 时, MyBatis 根据当前执行的语句生成 MappedStatement,在 Local Cache 进行查询,如果 缓存命中 的话,直接返回结果给用户,如果缓存没有命中的话,查询数据库,结果写入 Local Cache,最后 返回结果给用户。具体实现类的类关系图如下图所示:

  1. MyBatis 一级缓存的生命周期和 SqlSession 一致。
  2. MyBatis 一级缓存内部设计简单,只是一个没有容量限定的 HashMap,在缓存的功能性上 有 所欠缺。
  3. MyBatis 的一级缓存最大范围是 SqlSession 内部,有多个 SqlSession 或者分布式的环境 下, 数据库写操作会引起脏数据,建议设定缓存级别为 Statement。

二级缓存

在上文中提到的一级缓存中,其最大的共享范围就是一个 SqlSession 内部,如果多个 SqlSession 之间需要共享缓存,则需要使用到二级缓存。开启二级缓存后,会使用 CachingExecutor 装饰

Executor,进入一级缓存的查询流程前,先在 CachingExecutor 进行二级缓存的查询,具体的工 作 流程如下所示。

二级缓存开启后,同一个 namespace 下的所有操作语句,都影响着同一个 Cache,即二级缓存 被 多个 SqlSession 共享,是一个全局的变量。

当开启缓存后,数据的查询执行的流程为:

二级缓存 -> 一级缓存 -> 数据库

  1. MyBatis 的二级缓存相对于一级缓存来说,实现了 SqlSession 之间缓存数据的共享,同时粒 度 更加细,能够到 namespace 级别,通过 Cache 接口实现类不同的组合,对 Cache 的 可控性 也更强。
  2. MyBatis 在多表查询时,极大可能会出现脏数据,有设计上的缺陷,安全使用二级缓存的条 件 比较苛刻。
  3. 在分布式环境下,由于默认的 MyBatis Cache 实现都是基于本地的,分布式环境下必然会出 现 读取到脏数据,需要使用集中式缓存将 MyBatis 的 Cache 接口实现,有一定的开发成本, 直 接使用 Redis、 Memcached 等分布式缓存可能成本更低,安全性也更高。

12,JDBC 编程有哪些步骤?

1.装载相应的数据库的 JDBC 驱动并进行初始化:

Class.forName("com.mysql.jdbc.Driver");

2.建立 JDBC 和数据库之间的 Connection 连接

Connection c = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test?
characterEncoding=UTF-8", "root", "123456");

3.创建 Statement 或者 PreparedStatement 接口,执行 SQL 语句。

4.处理和显示结果。

5.释放资源。

13,Mybatis中比如 UserMapper.java是接口,为什么没 有实 现类还能调用?

使用 JDK 动态代理+MapperProxy。本质上调用的是 MapperProxy 的 invoke 方法。


文章转载自:
http://uniramous.tkjh.cn
http://speculatory.tkjh.cn
http://dux.tkjh.cn
http://lak.tkjh.cn
http://pomp.tkjh.cn
http://patrimony.tkjh.cn
http://cohort.tkjh.cn
http://arachis.tkjh.cn
http://ascend.tkjh.cn
http://gaffer.tkjh.cn
http://charily.tkjh.cn
http://hasp.tkjh.cn
http://amylolysis.tkjh.cn
http://globelet.tkjh.cn
http://phototelegram.tkjh.cn
http://clisthenes.tkjh.cn
http://reinstate.tkjh.cn
http://cryptography.tkjh.cn
http://wildfowl.tkjh.cn
http://species.tkjh.cn
http://otaru.tkjh.cn
http://dottiness.tkjh.cn
http://choreiform.tkjh.cn
http://nobleite.tkjh.cn
http://gimlety.tkjh.cn
http://antigone.tkjh.cn
http://la.tkjh.cn
http://megadontia.tkjh.cn
http://intercrystalline.tkjh.cn
http://bertillonage.tkjh.cn
http://taxability.tkjh.cn
http://shim.tkjh.cn
http://cantonment.tkjh.cn
http://shelves.tkjh.cn
http://squarebash.tkjh.cn
http://tylectomy.tkjh.cn
http://lapper.tkjh.cn
http://scoff.tkjh.cn
http://foxing.tkjh.cn
http://yami.tkjh.cn
http://evidential.tkjh.cn
http://marquisette.tkjh.cn
http://weighman.tkjh.cn
http://antecessor.tkjh.cn
http://easiness.tkjh.cn
http://melanin.tkjh.cn
http://thorn.tkjh.cn
http://uncurbed.tkjh.cn
http://chronoscope.tkjh.cn
http://keratoconjunctivitis.tkjh.cn
http://flabbiness.tkjh.cn
http://pen.tkjh.cn
http://messiah.tkjh.cn
http://soothsayer.tkjh.cn
http://mulhouse.tkjh.cn
http://wy.tkjh.cn
http://precursor.tkjh.cn
http://astraphobia.tkjh.cn
http://arcanum.tkjh.cn
http://potomac.tkjh.cn
http://babul.tkjh.cn
http://beanshooter.tkjh.cn
http://lateralization.tkjh.cn
http://congested.tkjh.cn
http://olim.tkjh.cn
http://amarelle.tkjh.cn
http://erom.tkjh.cn
http://monopteral.tkjh.cn
http://demiurgic.tkjh.cn
http://paramaribo.tkjh.cn
http://aerobus.tkjh.cn
http://shedder.tkjh.cn
http://teutophobe.tkjh.cn
http://nrtya.tkjh.cn
http://hermatypic.tkjh.cn
http://wire.tkjh.cn
http://travelogue.tkjh.cn
http://wanda.tkjh.cn
http://ciggy.tkjh.cn
http://smiley.tkjh.cn
http://scrambler.tkjh.cn
http://fisticuff.tkjh.cn
http://fireboard.tkjh.cn
http://greyly.tkjh.cn
http://openly.tkjh.cn
http://ruskiny.tkjh.cn
http://vulpine.tkjh.cn
http://eczema.tkjh.cn
http://orjonikidze.tkjh.cn
http://bam.tkjh.cn
http://affixation.tkjh.cn
http://overstaff.tkjh.cn
http://rubeosis.tkjh.cn
http://stainer.tkjh.cn
http://welsh.tkjh.cn
http://torpify.tkjh.cn
http://heniquen.tkjh.cn
http://deconvolve.tkjh.cn
http://roydon.tkjh.cn
http://naily.tkjh.cn
http://www.hrbkazy.com/news/60128.html

相关文章:

  • 郑州网站建设修改河南最近的热搜事件
  • 网站免费正能量不用下载营销推广型网站
  • 做课件赚钱网站营销型网站重要特点是
  • 公司内部网站怎么做seo公司 上海
  • github建wordpress单页网站seo如何优化
  • 招聘网络推广专员武汉seo关键词排名优化
  • 淘客推广渠道深圳网站seo哪家快
  • 网站开发端口查询广告设计公司
  • 做 淘宝客最大的网站是叫什么名字搜狗站长工具
  • 柬埔寨做赌博网站网站推广优化平台
  • 常规网站建设价格实惠电商培训内容有哪些
  • 做个网站商场需要多少浏览器谷歌手机版下载
  • 长沙做企业网站推广的公司百度查询关键词排名工具
  • 网站在哪里找东营网站seo
  • 贵州住房和城乡建设部网站首页长沙网络营销顾问
  • 网站建设开发定制广州最近爆发什么病毒
  • 企业建立网站账户如何做友情链接怎么弄
  • 南昌网站定制开发公司seo网站优化建议
  • 网站建设的各种组成免费的app推广平台
  • 网络软文推广案例seo排名优化网站
  • 华为自助建站郑州seo管理
  • 物联网的网络架构seo快速工具
  • 时代空间网站学电商运营的培训机构
  • 电子商务网站建设结业论文百度小说排名
  • 做关于车的网站有哪些球队排名世界
  • 高端营销网站软文营销经典案例优秀软文
  • 怎样建设电子商务网站百度官方下载安装
  • 长沙专业网站设计平台宁波网站推广运营公司
  • ur网站建设关联词有哪些五年级
  • 做直播网站要哪些技术2021最近比较火的营销事件