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

Java练习题1

1.什么是MyBatis?

MyBatis是一个支持普通SQL查询、存储过程以及高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,使用简单的XML或注解进行配置和原始映射,将接口和Java的POJO映射成数据库中的记录,使得Java开发人员可以使用面向对象的编程思想来操作数据库。

2.MyBatis的工作原理

(1)读取MyBatis配置文件mybatis-config.xml。

(2)由MyBatis配置文件加载映射文件Mapper.xml。

(3)通过MyBatis的环境等配置信息构建会话工厂SqlSessionFactory。

(4)由会话工厂创建SqlSession对象。

(5)MyBatis底层定义了一个Executor接口来操作数据库,它会根据SqlSession传递的参数动态的生成需要执行的SQL语句。

(6)在Executor接口的执行方法中,包含一个MappedStatement类型的参数,该参数是对映射信息的封装。

(7)在执行方法时,MappedStatement对象会对用户执行SQL语句的输入参数进行定义封装。

(8)在数据库中执行完SQL语句后,MappedStatement对象会对SQL执行输出的结果进行定义封装。

3.<mappers>元素引入映射文件的4种方式。

(1)使用类路径引入。

(2)使用本地文件路径引入。

(3)使用接口类引入。

(4)使用包名引入。

4.MyBatis映射文件中的常用元素及其作用。

<mapper>:映射文件的根元素,该元素只有一个namespace属性(命名空间),namespace属性作用如下。

(1)用于区分不同的mapper,全局唯一。

(2)绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的全限定名查找到对应的mapper配置来执行SQL语句,因此namespace的命名必须跟接口同名。

<cache>: 配置给定命名空间的缓存。

<cache-ref>:从其他命名空间引用缓存配置。

<resultMap>:描述数据库结果集和对象的对应关系。

<sql>:可以重用的SQL块,也可以被其他语句使用。

<insert>:用于映射插入语句。

<delete>:用于映射删除语句。

<update>:用于映射更新语句。

<select>:用于映射查询语句。

5.MyBatis动态SQL中的常用元素及其作用。

<if>:判断语句,用于单条件判断。

<choose>(<when>、<otherwise>):相当于Java中的switch...case...default语句,用于多条件判断。

<where>:简化SQL语句中where的条件判断。

<trim>:可以灵活地去除多余的关键字。

<set>:用于SQL语句的动态更新。

<foreach>:循环语句,常用于in语句等列举条件中。

6.在使用<foreach>时,collection属性需要注意的几点。

(1)如果传入的是单参数且参数类型是一个数组或者List的时候,collection属性值分别为array和list(或collection);

(2)如果传入的参数是多个的时候,就需要把它们封装成一个Map了,当然单参数也可以封装成Map集合,这时候collection属性值就为Map的键。

(3)如果传入的参数是POJO包装类的时候,collection属性值就为该包装类中需要进行遍历的数组或集合的属性名。

7.<collection>子元素的常用属性及其作用。

property:指定映射到的实体类对象属性,与表字段一一对应;

column:指定表中对应的字段;

ofType:它用于指定实体对象中集合类属性所包含的元素类型;

select:指定引入嵌套查询的子SQL语句,该属性用于关联映射中的嵌套查询;

fetchType:指定在关联查询时是否启用延迟加载。fetchType属性有lazy和eager两个属性值,默认值为lazy(即默认关联映射延迟加载)。

8.MyBatis关联查询映射的两种处理方式。

MyBatis在映射文件中加载关联关系对象主要通过嵌套查询和嵌套结果两种方式。

嵌套查询是指通过执行另外一条SQL映射语句来返回预期的复杂类型;

嵌套结果是使用嵌套结果映射来处理重复的联合结果的子集。

9.MyBatis的常用注解及其作用。

@Select:用于映射查询语句,其作用等同于xml配置文件中的<select>元素。

@Insert:用于映射插入语句,其作用等同于xml配置文件中的<insert>元素。

@Update:用于映射更新语句,其作用等同于xml配置文件中的<update>元素。

@Delete:用于映射删除语句,其作用等同于xml配置文件中的<delete>元素。@Param:用于指定SQL语句中的参数,通常用于SQL语句中参数比较多的情况。

@One:用于实现数据表的一对一关联查询,其作用等同于xml配置文件中的<assocation>元素。

@Many:用于实现数据表的一对多关联查询,@Many注解的作用等同于xml配置文件中的<collection>元素。

@Results:用于映射查询结果。

@Result:用于完成实体类中属性和数据表中字段的映射。

10.@Result注解中的常用属性及其作用。

property:用于指定关联属性。

column:用于指定关联的数据库表中的字段。

one:用于一对一配置的关联查询。

many:用于一对多配置的关联查询。

相关文章:

  • Java数据结构与算法——稀疏数组和队列
  • Webrtc支持FFMPEG硬解码之NVIDA(二)
  • golang:对struct排序的方法
  • 简述为什么Vue采用异步渲染 ?
  • idea 创建properties文件,解决乱码
  • 【Java】已解决java.sql.SQLTimeoutException异常
  • React-Redux学习笔记(自用)
  • Java Stream流应用
  • Android SurfaceFlinger——概述(一)
  • (3) cmake编译多个cpp文件
  • [AI aider] 打造终端AI搭档:Aider让编程更智能更有趣!
  • WPF 一个执行耗时任务,页面更新等待时间的例子
  • 【计算机毕业设计】211校园约拍微信小程序
  • Vue跨标签页数据通信
  • 广告变现小游戏对接广告流量变现平台开发 源码搭建
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 03Go 类型总结
  • Akka系列(七):Actor持久化之Akka persistence
  • const let
  • Java知识点总结(JavaIO-打印流)
  • nfs客户端进程变D,延伸linux的lock
  • PermissionScope Swift4 兼容问题
  • python docx文档转html页面
  • vue--为什么data属性必须是一个函数
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 深度学习在携程攻略社区的应用
  • 使用权重正则化较少模型过拟合
  • 无服务器化是企业 IT 架构的未来吗?
  • 赢得Docker挑战最佳实践
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • #DBA杂记1
  • (02)Unity使用在线AI大模型(调用Python)
  • (11)iptables-仅开放指定ip访问指定端口
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (PADS学习)第二章:原理图绘制 第一部分
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (十七)Flask之大型项目目录结构示例【二扣蓝图】
  • (四)【Jmeter】 JMeter的界面布局与组件概述
  • (四)js前端开发中设计模式之工厂方法模式
  • (一)Java算法:二分查找
  • (转)LINQ之路
  • ***监测系统的构建(chkrootkit )
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .net core 的缓存方案
  • .net core 外观者设计模式 实现,多种支付选择
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .Net6 Api Swagger配置
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .NET版Word处理控件Aspose.words功能演示:在ASP.NET MVC中创建MS Word编辑器
  • .NET业务框架的构建
  • /bin/rm: 参数列表过长"的解决办法