使用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()); } } }
相关文章推荐
- mybatis 使用resultMap实现关联数据的查询(association 和collection )
- 查询数据库的数据,是个比较费时的工作,在使用线程查询的时候显示个进度条,并允许终止查询的实现
- 使用select实现数据库动态查询
- Mybatis实现数据库分页查询
- MyBatis中的动态SQL,实现不确定条件的CRUD-----使用Map来传递查询的参数
- kettle中使用javascript步骤和fireToDB函数实现自己定义数据库查询
- kettle中使用javascript步骤和fireToDB函数实现自定义数据库查询
- mybatis使用resultMap实现一对一查询
- 使用Oracle实现的MyBatis分页查询效果
- 使用框架实现多表查询,这里选择MyBatis
- mybatis使用resultMap实现一对多查询 (需求:查询订单以及订单明细)
- 利用javabean轻松实现对数据库的连接、查询以及增删改!------使用范例
- 初学JDBC(五)-使用ResultSet结果集对数据库表内容实现查询操作
- MyBatis学习(四):MyBatis使用代理方法(接口)实现数据库的操作
- MyBatis Review——使用resultType和resultMap实现一对一查询
- mybatis使用resultMap实现多对多查询 (需求:商品信息和订单明细有多对多的关系)
- 在使用mybatis时遇到查询结果返回为空的情况,但是查数据库能查到
- 第二章 mybatis使用注解实现in查询(mysql)
- mybatis 使用resultMap实现数据库的操作
- 使用select实现数据库动态查询