您的位置:首页 > 数据库

使用Mybatis实现数据库一对多查询

2017-11-13 19:41 393 查看

首先创建数据表数据表格式如下:

CREATE TABLE `pser` (`id` int(11) NOT NULL AUTO_INCREMENT,`phon` varchar(255) DEFAULT NULL,`mobel` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`))

CREATE TABLE `uost` ( `uost_id` int(11) NOT NULL AUTO_INCREMENT,`pser_id` int(11) DEFAULT NULL,`name` varchar(255) DEFAULT NULL,`Shijian` varchar(255) DEFAULT NULL, PRIMARY KEY (`uost_id`)

)

然后创建两个实体类个:

pser:

package com.zhiyuan.bean;

import java.io.Serializable;
import java.util.List;

public class Pser implements Serializable {
public int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPhon() {
return phon;
}
public void setPhon(String phon) {
this.phon = phon;
}
public String getMobel() {
return mobel;
}
public void setMobel(String mobel) {
this.mobel = mobel;
}
public List<Uost> getUost() {
return Uost;
}
public void setUost(List<Uost> uost) {
Uost = uost;
}
public String phon;
public String mobel;
public List<Uost> Uost;
}

uost:

package com.zhiyuan.bean;

import java.io.Serializable;

public class Uost implements Serializable {
public int Uost_id;
public int Pser_id;
public String name;
public int getUost_id() {
return Uost_id;
}
public void setUost_id(int uost_id) {
Uost_id = uost_id;
}
public int getPser_id() {
return Pser_id;
}
public void setPser_id(int pser_id) {
Pser_id = pser_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}

public String getShijian() {
return Shijian;
}
public void setShijian(String shijian) {
Shijian = shijian;
}

public String Shijian;

}

编写Pser对应的映射文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.zhiyuan">

<resultMap type="Pser" id="resultPserMap">
<result property="id" column="user_id"/>
<result property="phon" column="phon"/>
<result property="mobel" column="mobel"/>
<collection property="uost" ofType="com.zhiyuan.bean.Uost" column="pser_id">
<id property="uost_id" column="uost_id" javaType="int" jdbcType="INTEGER"/>
<result property="name" column="name" javaType="string" jdbcType="VARCHAR"/>
<result property="Shijian" column="Shijian" javaType="string" jdbcType="VARCHAR"/>
</collection>
</resultMap>
<select id="getPser" resultMap="resultPserMap" parameterType="int">
SELECT p.*,u.*
FROM pser p,uost u
WHERE p.id=u.pser_id and p.id=#{id}
</select>
</mapper>

编写config主配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD config 3.0//EN" "mybatis-3-config.dtd" >
<configuration>
<typeAliases>
<typeAlias alias="Pser" type="com.zhiyuan.bean.Pser"/>
<typeAlias alias="Uost" type="com.zhiyuan.bean.Uost"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://127.0.0.1:3306/loop" />
<property name="username" value="root" />
<property name="password" value=" " />
</dataSource>
</environment>
</environments>

<mappers>

<mapper resource="com/zhiyuan/bean/Pser.xml" />
</mappers>

</configuration>

编写测试类:

package com.zhiyuan.mapp;

import java.io.IOException;
import java.io.Reader;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.zhiyuan.bean.Pser;
import com.zhiyuan.bean.Uost;

public class Mapper {

public static SqlSessionFactory sql;
public static Reader rea;
static{
try {
//读取xml配置文件
rea=Resources.getResourceAsReader("config.xml");
//获取SqlSessionFactory对象
sql=new SqlSessionFactoryBuilder().build(rea);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}
public static void main(String[] args) {
//获取sqlsession对象
SqlSession sqll=sql.openSession();
int id=1;
//执行xml配置里面的sql语句并传入条件查询的值,并将查询结果赋值给op
Pser op=sqll.selectOne("com.zhiyuan.getPser", id);
//输出表中phon的值(由于懒所以只输出数据表里的一个数据作为示范@^_^@)
System.out.println(op.getPhon());
//将pser的对象获取的uost记录返回传给List集合
List<Uost> uo=op.Uost;
//将集合里的uost值一一输出
for (Uost uoo: uo) {
//输出Uost表中name的值
System.out.println(uoo.getName());
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息