Mapper接口和XML配置|学习笔记

简介: 快速学习Mapper接口和XML配置

开发者学堂课程【高校精品课-厦门大学 -JavaEE 平台技术Mapper接口和XML配置学习笔记,与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/80/detail/15922


Mapper接口和XML配置


内容简介:

一、SELRECT Goods标记

二、INSERT标记

 

一、SELRECT Goods标记

以 Mapper的插面文件为例来验证MXl的标记是如何使用的

文件在工程的 ResultMap的目录下,并在此建立了目录集便于进行打包

1.首先查看怎样用标记来实现对象模型和关系模型的映射

2.查看 SELRECT Goods标记

3.SELRECT 标记是从数据库中查询数据返回给对象模型

4.SELRECT 标记定义了 select id=“find”的 id 加上 napper namespace 对应到Mapper 接口中的 findGoods 接口

5.paraneterType 表示传过来的参数是什么样的。因为传参数使用对象,所以不需特别对其进行定义。若想传输多个参数且不使用对象传输,则需要 paraneterType进行定义

6.result Type refid 直接返回的是一个对象,所以直接将对象作为它的一个result Type

7.在SELRECT 标记中是一个 select 语句,可以看到运用了 include标签,其中有名为"Goods_Column_List"的 sql片段

<sql id="Goods_Column_List">

id,

goods_sn,

name,

category_id,

brand_id,

brief,

spec_list,

pic_url,

unit,

state,

add_time,

update_tine,

nodi_user

以上是用sql标记定义的一段语句,为避免重复使用所以使用 sql,使用时用 include引进进来。进行修改时若修改sql里的内容时,所有的内容都会进行修改。

8. 在 sql中用了if的动态语句标记

SELECT

<include refid="Goods_Colunn_List"/>

FROM oomall_goods

WHERE

state != 2

<if test="id!=null">and id = #{id} </if>

<iftest="goodsSn!=null andgoodsSn!='"">and gaods_sn= #{goodsSn} </if>

<iftest="name!=null andnane!=''">and nane = #{nam}</if>

<if test="categoryId!=null">andcategory_id

=#{categoryId}</1f>

<if test="state!=null">andbrand_Id=#{brandId}</1f>

<iftest="state!=null">and state = #{state} </if>

</select>

需要查看传件的参数中间不为空的属性作为参与条件,所以要用多个条件进行查询,需要用 if 去判断字段的属性是否为空,若不是空或空格则作为查询条件组合到

语句中去。

#{ }这个标记表示里面的值是来自于参数,因为 paraneterType=“GoodsPo”所以id 就成为 GoodsPo的一个属性,将语句进行一个预编译,将#里的东西作为一个参

数在执行的时候与预编译的sql语句进行了绑定,相对比较安全

select 的返回类型是 GoodsPo,它会将返回的字段名称与 GoodsPo进行对应

 

二、INSERT标记

<insertid="createGoods" parameterType="GoodsPo" keyProperty="id"useGeneratedKeys="true">

INSERT INTO oonalt_goods(<include refid="Goods_Insert_List"/>)

VALUES(#(goodsSn),#(name》,#(categoryId),#(brandId),#(brief),#(specList),#(picUrl),#(unit),8,CURRENT_TIMESTAHP)

</insert>

1.传入商品信息 createGoods,传过来的信息为 GoodsPo

2.定义一个 keyProperty=“id”说明这个字段是要用字针的方式来自动产生

3.set 语句是根据 UPDATE传过来的语句不为空来设置的同样结合 if 语句判断动态语句是否为空,不为空才将其组入 set语句中。

<resultMap type="GoodsPo" id="GoodsProductResultMap"autoMapping="true">

<id property =id"/>

1.GoodsPo 是一个有关联的对象,一个商品里面含有多个规格,所以 GoodsPo有个属性 ProductList作为商品关联的规格对象

2.resultMap 的作用是当查询表时会形成一个有商品关联的规格对象并返回

3.autoMapping 可以进行简化不用一个个的写属性和字段自建的关系,有些可以进行自动映射。

<collection property="productList" ofType="cn.edu.xmu.restfuldeno.model.ProductPo"autoMapping="true">

<id property="id" colunn:"product_1d"/>

<result property="nane" column:"product_name"/s

cDesuTnnonontun"ctatom

1. productList 的属性是 List类型中的每一个元素是 ProductPo对于后面定义的ofTypecollection中的每一个元素的类型是 ProductPo。注意整个的包名要写全。

2. 同样使用了 autoMapping,由于存在某些字段的名字和属性名字是不能做autoMapping的。

<select id="findGoods"paraneterType="GoodsPo"resultTypet"GoodsPo"...>

eselect id:"findGoodsWithProduct"parareterType="GoodsPo”resultMap="GoodsProductResultMap">

1.resultMap 不是简单的返回一个 GoodsPo对象,而是返回了一个带关联的GoodsPo 对象,里面有 productListGoodsPo对象。

也可做成延迟加载的模式

2、返回的类型用 ResultMap装返回值,返回的对象仍然是 GoodsPo对象。

FROM oomall_goods q LEFT JOIN oonall_product p

DN 9.1d = p.goods_1d

WHERE

1.LEFT JOIN 的作用是左链接用 Goods的表去链接 Product的表

条件是 Goods的id一致

2.连表查询出来的语句会出现多条记录因为一个 Goods有多个 Product,但定义了返回的值是 ResultMap后,多条记录的返回集映射成一对多的对象关系模型。

相关文章
|
1月前
|
Java 数据库连接 数据库
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
hibernate正向生成数据库表以及配置——Teacher.hbm.xml
13 1
|
5月前
|
缓存
web.xml中配置:通用的用户登录过滤器(SessionFilter)
web.xml中配置:通用的用户登录过滤器(SessionFilter)
|
4月前
|
存储 Java 测试技术
JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)
JAVA-MAVEN初学者教程(配置、pom.xml、依赖管理等)
236 0
|
1月前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
15 1
|
1月前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
10 0
|
1月前
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
最全三大框架整合(使用映射)——applicationContext.xml里面的配置
7 0
|
1月前
|
XML Java Apache
Apache Flink自定义 logback xml配置
Apache Flink自定义 logback xml配置
152 0
|
2月前
|
Java
logback配置,命名为logback-spring.xml
logback配置,命名为logback-spring.xml
|
2月前
|
XML Java 测试技术
【SpringBoot】基于 Maven 的 pom.xml 配置详解
【SpringBoot】基于 Maven 的 pom.xml 配置详解
229 0
【SpringBoot】基于 Maven 的 pom.xml 配置详解
|
2月前
log4j2.xml的日志打印配置
log4j2.xml的日志打印配置
30 0