Mybatis中的一对多和一对一

Mybatis使得java代码与SQL语句分离,下面列举使用Mybatis来实现数据库表名的对应

    一对一:

        含义:在Java中的vo类中有一个类其囊括了数据库中的一个表的参数,要将其使用Mybatis技术转换到Java队形中:

只需要在配置的xml配置的mapper-->select语句中进行查询,并且查询的结果与表名

        遇到的问题:

            一、此时表中的属性名和对象中的属性名不匹配:

                (1)As SQL 语句将查询回来的数据属性名进行修改

               (2)xml 文件中的resultMap标签,其中select中的标签使用resultMap-->与resultMap标签中的id对应

               column-->查询结果   property-->type中的属性

<?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="com.jd.userinfo.dao.IUserInfoDao">
	<resultMap type="com.jd.vo.UserInfo" id="ui">
		<id column="ui_id" property="id" />
		<result column="ui_real_name" property="realName"/>
		<result column="user_name" property="userName"/>
		<result column="age" property="age"/>
		<result column="password" property="password"/>
		<collection property="list" ofType="com.jd.vo.Address">
			<result column="addr_id" property="id"/>
			<result column="user_id" property="userId"/>
			<result column="addr_real_name" property="realName"/>
		</collection>
	</resultMap>
	<select id="getById" resultMap="ui">
		select 
		ui.id ui_id,user_name,password,ui.real_name ui_real_name,age ,
		addr.id addr_id,user_id,addr.real_name addr_real_name, mobile,address
		from user_info ui 
		LEFT JOIN address addr on  ui.id=addr.user_id
		where ui.id=#{id}
	</select>
</mapper>

                方法中传入多个值时

                一、在xml文件中的内部参数argx,x为索引,从零开始一次递增;会这是paramx.,x是索引,其中其值从1开始

                二、传入对象时,直接适用对象中的属性名即可

    一对多:使用一个对象对应多个表结构,要是用多表查询中的外连接(因为一定有用户名但是他可能没有填写地址)和list集合的概念,可以将第二个表的对象存放在list集合中,从了可以表示一个表中的多个外键

               方法:上边的代码中的resltType的另一个标签 <collection>-->中的property对应对象中的集合名,oftype表示的是集合中的泛型

若是其中一个为自定义类,那么可以使用的是<assoication>标签,其中的依旧是property和JavaType

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值