MyBatis Day2

SQL映射文件是什么?

SQL映射文件是在使用ORM(对象关系映射)框架时,用来定义数据库操作的配置文件。它通常是一个XML文件,其中包含了与数据库表、字段之间的映射关系,以及具体的SQL语句。通过SQL映射文件,我们可以将数据库的操作与具体的Java对象进行映射,简化了数据访问层(DAO)的开发工作。

SQL映射文件中主要包含以下信息:

  • 数据库表与Java对象的映射关系:这些映射关系包括表名、列名和Java对象的属性名之间的对应关系。
  • SQL语句:SQL映射文件中可以定义各种各样的SQL语句,例如增加、删除、修改、查询等,每个SQL语句都有一个唯一的ID来标识。
  • 参数映射:SQL语句中可能会包含一些参数,通过参数映射可以将方法参数与SQL语句中的参数进行绑定。
  • 结果映射:查询语句返回的结果可以是一个对象,也可以是一组对象,通过结果映射可以将查询结果映射到Java对象上。

ORM框架会根据SQL映射文件中的配置信息,自动生成相应的数据库操作代码,简化了程序开发过程,提高了开发效率。同时,SQL映射文件的存在也使得SQL语句与Java代码分离,提高了代码的可维护性和可读性。

SQL映射文件的几个顶级元素

  • mapper – SQL映射文件的根元素,有一个namespace属性
  • cache – 配置给定命名空间的缓存
  • cache-ref 从其他命名空间引用缓存配置
  • resultMap 用来描述数据库结果集和对象的对应关系
  • sql可以重用的SQL块,也可以被其他语句引用
  • insert – 映射插入语句
  • update – 映射更新语句
  • delete – 映射删除语句
  • select – 映射查询语句

Mapper

Mapper(映射器)是指在ORM(对象关系映射)框架中用于定义数据库操作的接口或类。它作为数据访问层(DAO)的一部分,负责实现与数据库之间的数据映射和交互。

在Java开发中,Mapper通常是指MyBatis框架中的映射器接口。映射器接口定义了对数据库的各种操作方法,例如插入、更新、删除、查询等。通过编写映射器接口,我们可以将数据库表与Java对象进行映射,并且可以定义一系列的SQL语句来操作数据库。

MyBatis框架根据映射器接口的定义,自动创建相应的SQL语句,并将其与具体的数据库操作绑定起来。通过调用映射器接口的方法,我们可以方便地执行数据库操作,而无需手动编写繁琐的SQL语句。

除了MyBatis,在其他ORM框架中,也有类似的概念和用法。不同的框架可能有不同的实现方式,但基本思想都是为了简化数据库操作和提高开发效率。

<mapper namespace="cn.cvs.dao.sysUser.SysUserMapper">
	<select id="getUserList" … >
		……
	</select>
</mapper>

SELECT

  • selectMyBatis中最常用的元素之一
  • select元素有很多属性可以详细配置每一条查询语句
  • id
  • 命名空间中唯一的标识符
  • 接口中的方法与映射文件中的SQL语句id一一对应
  • parameterType
  • 传入SQL语句的参数类型
  • uresultType
  • SQL语句返回值类型的完整类名或别名

  • parameterType
  • 使用复杂数据类型
  • Java实体类
  • Map
  • 通过 #{属性名} 或者 #{mapkeyName} 获取传入的值
  • 使用多个简单数据类型
  • intStringDate等,一个参数传递单一数值
  • 使用@Param注解为参数命名,通过 #{参数名} 获取传入的值

resultMap:数据库字段信息与对象属性不一致;复杂的联合查询

        resultMap自动映射匹配前提:字段名column与属性名property一致

        resultMap的自动映射级别(autoMappingBehavior)三个匹配级别:

        PARTIAL(默认):自动匹配所有属性,内部嵌套除外

        NONE:禁止自动匹配

        FULL:自动匹配所有

<settings>
	<setting  name="autoMappingBehavior" value="NONE"/>
</settings>

实例:

    <select id="selectSysUserById" resultType="com.mybatis.pojo.TSysUser" parameterType="integer" >
        select * from t_sys_user
        <where>
            <if test="id!=null">
                id=#{id}
            </if>
        </where>
    </select>

select元素通过resultMap属性引用resultMap元素定义的映射规则:

resultMap元素包含以下属性:

  • id:映射规则集的唯一标识,可以被select元素的resultMap属性引用。
  • type:映射的结果类型,这里指定封装成SysUser实例。

resultMap元素包含以下子元素: 

  • id:指定和数据表主键字段对应的标识属性。设置此项可以提升MyBatis框架的性能,特别是应用缓存和嵌套结果映射的时候。
  • result:指定结果集字段和实体类属性的映射关系。 

嵌套结果映射: 

1、association元素

  • association属性
  • resultMap:外部引用 值为id值
  • property:为你在这个类创建的类对象名称
  • javaType:为完整java类名或者别名

子元素

  • id:一般用于主键
  • result元素属性
  • property :属性名

column:数据库列名或者别名


	<resultMap type="User" id="userRoleResult">
		<result property="id" column="id"/>
		<result property="userCode" column="userCode"/>
		<result property="userName" column="userName"/>
		<result property="userRole" column="userRole"/>
		<association property="role" javaType="Role" resultMap="aaaa" />
	</resultMap>
	
	<resultMap type="Role" id="aaaa">
		<result property="id" column="r_id"/>
			<result property="roleCode" column="roleCode"/>
			<result property="roleName" column="roleName"/>
	</resultMap>

collection元素

1.collection属性

  • resultMap:外部引用 值为id值
  • property:为这个类内的集合名称
  • ofType:完整的类名或别名,就是集合包含的类型

2.子元素

  • id:一般用于主键
  • result元素属性
  • property :属性名
  • column:数据库列名或者别名

	<resultMap type="Provider" id="providerAndAllBillList">
		<id property="id" column="p_id"/>
		<collection property="billList" ofType="Bill" resultMap="billResult"/>
	</resultMap>
	<resultMap type="Bill" id="billResult">
		<id property="id" column="id"/>
		<result property="productName" column="productName"/>
	</resultMap>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值