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