ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

了解MyBatis映射文件

2021-06-04 20:33:48  阅读:118  来源: 互联网

标签:文件 映射 符名 占位 SQL MyBatis 符的值


 3.1 认识映射文件:

介绍:
    MyBatis的映射文件主要用于定义业务操作命令,实现对象与数据表字段的映射,并控制对最终结果的封装.MyBatis是针对SQL构建,相对具有相同功能的JDBC代码,减少了95%的代码量
说明:

  1.     映射文件名称和位置任意,不要求必须与POJO类在同一位置
  2.     MyBatis未提供源码和案例,配置和映射内容参考官网或使用指南
  3.     MyBatis映射文件顶层结构如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

基本格式:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="匿名空间">
    <select/insert/update/delete等等 id="业务标识名" resultType="封装结果的对象[实体类全名]" parameterType="占位符的来源">
        SQL命令
    </select/insert/update/delete等等>
</mapper>

说明:

  1.     namespace: 表示命名空间,类似Java包的作用.[在旧版中可选,在新版中必须配置]
  2.     id: 设置业务操作匿名,方便程序中调用.
  3.     parameterType: 指出将要传入SQL命令中的占位符的类型,可以是普通类型或自定义类.
  4.     resultType: 指出SQL命令执行结果的类型.若结果为集合,该属性值为元素的类型名.
  5.     statementType: 设置SQL执行对象的类型: STATEMENT,PREPARED[默认值],CALLABLE.
  6.     SQL命令末尾后的分号,可选


3.2 占位符:

介绍:
    Mybatis映射文件中的SQL命令,支持以占位符方式设置字段的值.同JDBC那样,当执行SQL命令时需要额外指出占位符的值.


格式:
    #{占位符名}


说明:

  1. 占位符的值可以来自实体对象,Map集合,普通数据
  2. 若占位符的值来自普通数据,占位符名 任意. [仅1个占位符,比如 id]
  3. 若占位符的值来自实体对象,占位符名 必须为对象的属性名
  4. 若占位符的值来自Map集合,占位符名 必须为键名

3.3 结果映射

介绍:
    MyBatis自动将POJO对象的属性与查询结果集中字段名或添加/修改/删除中占位符名映射,实现对象与表的映射关系.
    同时,MyBatis提供了手动设置POJO对象属性与执行结果映射的方式: <resultMap>.

解决字段名与属性名不同,无法映射:


方式1: 设置字段匿名——as

 select id,username as name,sex,age,address from user


方式2: 自定义映射——<resultMap>

    <select id="" resultType="" resultMap="resultMap匿名A">
        SQL命令
    </select>
    <!--自定义映射规则-->
    <resultMap id="resultMap匿名A" type="实体类全名">
        <id property="主键属性" column="主键字段名" />
        <result property="普通属性" column="字段名" />
    </resultMap>

自动映射原理图

标签:文件,映射,符名,占位,SQL,MyBatis,符的值
来源: https://blog.csdn.net/NeiHan2020/article/details/117572542

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有