这样制作公司网站,广州信科做网站,经典网站域名,用wordpress做购物网站在使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式#xff0c;一种就是resultType另一种就是resultMap,下面说下我对这两者的认识和理解 resultType#xff1a;当使用resultType做SQL语句返回结果类型处理时#xff0c;对于SQL语句查询出的字段在相…在使用mybatis进行数据库连接操作时对于SQL语句返回结果的处理通常有两种方式一种就是resultType另一种就是resultMap,下面说下我对这两者的认识和理解 resultType当使用resultType做SQL语句返回结果类型处理时对于SQL语句查询出的字段在相应的pojo中必须有和它相同的字段对应而resultType中的内容就是pojo在本项目中的位置。 因此对于单表查询的话用resultType是最合适的。但是如果在写pojo时不想用数据库表中定义的字段名称也是可以使用resultMap进行处理对应的。多表连接查询时若是一对一的连接查询那么需要新建一个pojopojo中包括两个表中需要查询出的所有的字段这个地方的处理方式通常为创建一个继承一个表字段的pojo再在里面添加另外一个表内需要查询出的字段即可。若是一对多查询时若是使用内连接查询则很可能出现查询出的字段有重复。使用双重for循环嵌套处理即可。 resultMap当使用resultMap做SQL语句返回结果类型处理时通常需要在mapper.xml中定义resultMap进行pojo和相应表字段的对应。 1 !-- 订单查询关联用户的resultMap 2 3 将整个查询的结果映射到cn.itcast.mybatis.po.Orders中 4 5 -- 6 7 resultMap typecn.itcast.mybatis.po.Orders idOrdersUserResultMap 8 9 !-- 配置映射的订单信息 --
10
11 !-- id指定查询列中的唯 一标识订单信息的中的唯 一标识如果有多个列组成唯一标识配置多个id
12
13 column订单信息的唯 一标识 列
14
15 property订单信息的唯 一标识 列所映射到Orders中哪个属性
16
17 --
18
19 id columnid propertyid/
20
21 result columnuser_id propertyuserId/
22
23 result columnnumber propertynumber/
24
25 result columncreatetime propertycreatetime/
26
27 result columnnote propertynote/
28
29 /resultMap resultMap对于一对一表连接的处理方式通常为在主表的pojo中添加嵌套另一个表的pojo然后在mapper.xml中采用association节点元素进行对另一个表的连接处理。例如 1 !-- 订单查询关联用户的resultMap2 将整个查询的结果映射到cn.itcast.mybatis.po.Orders中3 --4 resultMap typecn.itcast.mybatis.po.Orders idOrdersUserResultMap5 !-- 配置映射的订单信息 --6 !-- id指定查询列中的唯 一标识订单信息的中的唯 一标识如果有多个列组成唯一标识配置多个id7 column订单信息的唯 一标识 列8 property订单信息的唯 一标识 列所映射到Orders中哪个属性9 --
10 id columnid propertyid/
11 result columnuser_id propertyuserId/
12 result columnnumber propertynumber/
13 result columncreatetime propertycreatetime/
14 result columnnote propertynote/
15
16 !-- 配置映射的关联的用户信息 --
17 !-- association用于映射关联查询单个对象的信息
18 property要将关联查询的用户信息映射到Orders中哪个属性
19 --
20 association propertyuser javaTypecn.itcast.mybatis.po.User
21 !-- id关联查询用户的唯 一标识
22 column指定唯 一标识用户信息的列
23 javaType映射到user的哪个属性
24 --
25 id columnuser_id propertyid/
26 result columnusername propertyusername/
27 result columnsex propertysex/
28 result columnaddress propertyaddress/
29
30 /association
31 /resultMap 若是一对多的表连接方式比如订单表和订单明细表即为一对多连接若是不对sql语句进行处理由于一个订单对应多条订单明细因此查询出的结果对于订单表数据来说将会出现重复例如 resultMap的处理方式为在订单表数据的pojo中添加一个list,list中为订单明细表的属性在mapper.xml中采用如下的处理方式 1 !-- 订单及订单明细的resultMap2 使用extends继承不用在中配置订单信息和用户信息的映射3 --4 resultMap typecn.itcast.mybatis.po.Orders idOrdersAndOrderDetailResultMap extendsOrdersUserResultMap5 !-- 订单信息 --6 !-- 用户信息 --7 !-- 使用extends继承不用在中配置订单信息和用户信息的映射 --8 9
10 !-- 订单明细信息
11 一个订单关联查询出了多条明细要使用collection进行映射
12 collection对关联查询到多条记录映射到集合对象中
13 property将关联查询到多条记录映射到cn.itcast.mybatis.po.Orders哪个属性
14 ofType指定映射到list集合属性中pojo的类型
15 --
16 collection propertyorderdetails ofTypecn.itcast.mybatis.po.Orderdetail
17 !-- id订单明细唯 一标识
18 property:要将订单明细的唯 一标识 映射到cn.itcast.mybatis.po.Orderdetail的哪个属性
19 --
20 id columnorderdetail_id propertyid/
21 result columnitems_id propertyitemsId/
22 result columnitems_num propertyitemsNum/
23 result columnorders_id propertyordersId/
24 /collection
25
26
27 /resultMap 在查询时虽然一条订单信息对应多条订单明细由于将多条信息明细存储到了list中因此查询后将不再出现重复数据达到了去重的效果 转载于:https://www.cnblogs.com/huangjianping/p/7112558.html