mapperXML标签总结

news/2024/7/7 21:00:25

MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。

SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):

  • insert – 映射插入语句。
  • update – 映射更新语句。
  • delete – 映射删除语句。
  • select – 映射查询语句。

select标签:

MyBatis 在查询和结果映射做了相当多的改进。一个简单查询的 select 元素是非常简单:

<select id="selectPerson" 
resultType="hashmap" resultMap="自定义映射"> SELECT * FROM PERSON WHERE ID = #{id} </select>

这个语句名为 selectPerson,接受一个 int(或 Integer)类型的参数,并返回一个 HashMap 类型的对象,其中的键是列名,值便是结果行中的对应值。

注意参数符号:#{id} ${key}

MyBatis 创建一个预处理语句(PreparedStatement)参数,在 JDBC 中,这样的一个参数在 SQL 中会由一个“?”来标识,并被传递到一个新的预处理语句中,就像这样:

// 近似的 JDBC 代码,非 MyBatis 代码...
String selectPerson = "SELECT * FROM PERSON WHERE ID=?";
PreparedStatement ps = conn.prepareStatement(selectPerson);
ps.setInt(1,id);

select 元素允许你配置很多属性来配置每条语句的行为细节:

属性描述
id在命名空间中唯一的标识符,可以被用来引用这条语句。
resultType期望从这条语句中返回结果的类全限定名或别名。 注意,如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身的类型。 resultType 和 resultMap 之间只能同时使用一个。
resultMap对外部 resultMap 的命名引用。结果映射是 MyBatis 最强大的特性,如果你对其理解透彻,许多复杂的映射问题都能迎刃而解。 resultType 和 resultMap 之间只能同时使用一个。
timeout这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为未设置(unset)(依赖数据库驱动)。
statementType可选 STATEMENT,PREPARED 或 CALLABLE。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。

insert, update 和 delete标签:

数据变更语句 insert,update 和 delete 的实现非常接近:

<insert
  id="insertAuthor"
  statementType="PREPARED"
  keyProperty=""
  keyColumn=""
  useGeneratedKeys=""
  timeout="20">

<update
  id="updateAuthor"
  statementType="PREPARED"
  timeout="20">

<delete
  id="deleteAuthor"
  statementType="PREPARED"
  timeout="20">
属性描述
id在命名空间中唯一的标识符,可以被用来引用这条语句。
timeout这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为未设置(unset)(依赖数据库驱动)。
statementType可选 STATEMENT,PREPARED 或 CALLABLE。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED。
useGeneratedKeys(仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段),默认值:false。
keyProperty(仅适用于 insert 和 update)指定能够唯一识别对象的属性,MyBatis 会使用 getGeneratedKeys 的返回值或 insert 语句的 selectKey 子元素设置它的值,默认值:未设置(unset)。如果生成列不止一个,可以用逗号分隔多个属性名称。
keyColumn(仅适用于 insert 和 update)设置生成键值在表中的列名,在某些数据库(像 PostgreSQL)中,当主键列不是表中的第一列的时候,是必须设置的。如果生成列不止一个,可以用逗号分隔多个属性名称。

http://lihuaxi.xjx100.cn/news/2090397.html

相关文章

NVIDIA相关工具

模型profile相关 nvvp&#xff0c;nvprof是cuda toolkit集成的工具&#xff0c;用于生成GPU timeline的工具。nvprof是命令行工具&#xff0c;我们的模型常常是运行在远端的服务器上&#xff0c;我们需要把输出的监测数据拷贝至本地查看&#xff0c;这个时候需要用到nvvp进行可…

算法D45 | 动态规划7 | 70. 爬楼梯 (进阶) 322. 零钱兑换 279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 这道题目 爬楼梯之前我们做过&#xff0c;这次再用完全背包的思路来分析一遍 代码随想录 Python: 翻译成背包问题&#xff0c;即&#xff1a;在容量为n的背包里&#xff0c;装入重量为1/2的物品&#xff0c;可以重复利用物品&#x…

RabbitMQ学习笔记——声明队列和交换机的方式(Config配置方式)

1.config配置文件方式 Config配置这种方式的缺点就是队列绑定交换机时设置的routingKey&#xff0c;需要一个个的创建方法去绑定&#xff0c;如下就需要绑定两次&#xff0c;太麻烦了&#xff0c;如下&#xff1a;

AOP-注解实现-记录日志到数据库

概念解释 AOP&#xff1a;Aspect Oriented Programming Aspect&#xff1a;方面Oriented&#xff1a;面向…的Programming编程 之前我对模块化编程的认识&#xff0c;主要是局限在布局结构、目录结构上。比如Vue的template模板。 对方法的模块化编程&#xff0c;我之前的认识…

Ansible运维自动化

什么是 Ansible&#xff1f; Ansible 是一款开源的自动化工具&#xff0c;由 Red Hat 公司推出。它基于 Python 编写&#xff0c;旨在简化系统配置、部署和管理。Ansible 的核心思想是使用简单易懂的 YAML 格式的 Playbooks 来描述自动化任务。与其他自动化工具相比&#xff0…

快手,得物,蓝月亮,蓝禾,奇安信,三七互娱,顺丰,康冠科技,金证科技24春招内推

快手&#xff0c;得物&#xff0c;蓝月亮&#xff0c;蓝禾&#xff0c;奇安信&#xff0c;三七互娱&#xff0c;顺丰&#xff0c;康冠科技&#xff0c;金证科技24春招内推 ①得物 【岗位】技术&#xff0c;设计&#xff0c;供应链&#xff0c;风控&#xff0c;产品&#xff0c;…

使用动态ip上网稳定吗?

随着互联网的普及&#xff0c;越来越多的用户开始关注网络隐私和安全。代理IP服务应运而生&#xff0c;为广大用户提供了一个有效的解决方案。许多用户在使用代理IP时可能会担心其稳定性问题&#xff0c;本文将为您详细解答。 一、什么是动态IP&#xff1f; 动态IP是指由DHCP…

进制转换概念及例题

进制转换是一种数字表示方法之间的转换。在计算机科学和数学中,常见的进制包括十进制(基数为 10)、二进制(基数为 2)、八进制(基数为 8)和十六进制(基数为 16)。 进制转换的基本概念是将一个数从一种进制表示转换为另一种进制表示。例如,将十进制数 15 转换为二进制…