Mybatis上路_03-简单关联数据查询
来源:互联网 发布:中易智联软件多少钱 编辑:程序博客网 时间:2024/05/18 02:31
1.示例数据库准备:
1)增加创建示例表单:
CREATE TABLE TB_JOB ( id INT PRIMARY KEY AUTO_INCREMENT, id_person INT NOT NULL, job VARCHAR(60) NOT NULL, company VARCHAR(60) NOT NULL);
2)插入示例条目:
INSERT INTO TB_JOB (id_person, job, company)VALUES (3, "Singer", "BadBoy");INSERT INTO TB_JOB (id_person, job, company)VALUES (3, "writer", "BadBoy2");INSERT INTO TB_JOB (id_person, job, company)VALUES (3, "Producer", "BadBoy3");
3)增加创建JavaBean类BeanJob:
package cn.cvu.domain;public class BeanJob { private Integer id; private BeanPerson person; private String job; private String company; public Integer getId() {...} public void setId(Integer id) {...} public BeanPerson getPerson() {...} public void setPerson(BeanPerson person) {...} public String getJob() {...} public void setJob(String job) {...} public String getCompany() {...} public void setCompany(String company) {...} public BeanJob(Integer id, BeanPerson person, String job, String company) { this.id = id; this.person = person; this.job = job; this.company = company; } public BeanJob() { } @Override public String toString() { return "BeanJob [id=" + id + ", person=" + person + ", job=" + job + ", company=" + company + "]"; }}
2.修改接口:
package cn.cvu.service;import java.util.List;import cn.cvu.domain.BeanJob;//接口,定义操作public interface IOperationBean { //根据Person的id得到他全部的工作 public List<BeanJob> getPersonJobs(int id);}
3.修改BeanPerson.xml文件:
1)方式一:
<?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"><!-- 命名空间 namespace=“接口的全路径” --><mapper namespace="cn.cvu.service.IOperationBean"><!-- 连接查询 --> <!-- 查询 Person --> <resultMap id="resultListPerson" type="cn.cvu.domain.BeanPerson"> <id column="id" property="id" /> <result column="name" property="name" /> <result column="country" property="country" /> <result column="address" property="address" /> </resultMap> <!-- Job联合Person 进行查询 --> <resultMap id="resultPersonJobs" type="cn.cvu.domain.BeanJob"> <id property="id" column="id" /> <result property="job" column="job" /> <result property="company" column="company" /> <association property="person" javaType="cn.cvu.domain.BeanPerson" resultMap="resultListPerson" /> </resultMap> <select id="getPersonJobs" parameterType="int" resultMap="resultPersonJobs"> SELECT <!-- 这里必须是tb_job在前 --> tb_job.id, tb_job.job, tb_job.company, tb_job.id_person, <!-- 必须是tb_person在后 --> tb_person.id, tb_person.name, tb_person.country, tb_person.address <!-- 否则只能查到第一条记录 --> FROM tb_person, tb_job WHERE tb_person.id=tb_job.id_person AND tb_person.id=#{id} </select></mapper>
2)方式二:
<?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"><!-- 命名空间 namespace=“接口的全路径” --><mapper namespace="cn.cvu.service.IOperationBean"> <!-- 连接查询 --> <resultMap id="resultPersonJobList" type="cn.cvu.domain.BeanJob"> <id property="id" column="id" /> <result property="job" column="job" /> <result property="company" column="company" /> <association property="person" javaType="cn.cvu.domain.BeanPerson"> <id property="id" column="id" /> <result property="name" column="name" /> <result property="country" column="country" /> <result property="address" column="address" /> </association> </resultMap> <select id="getPersonJobs" parameterType="int" resultMap="resultPersonJobList"> SELECT tb_job.id, tb_job.job, tb_job.company, tb_job.id_person, tb_person.id, tb_person.name, tb_person.country, tb_person.address FROM tb_person, tb_job WHERE tb_person.id=tb_job.id_person AND tb_person.id=#{id} </select></mapper>
4. 测试:
/** * 查询连接数据 * @throws Exception */ @Test public void testGetPersonJob() throws Exception { Reader reader = Resources.getResourceAsReader("Configuration.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession session = sqlSessionFactory.openSession(); IOperationBean operationBean = session.getMapper(IOperationBean.class); List<BeanJob> jobs = operationBean.getPersonJobs(3); for(BeanJob job:jobs){ System.out.println("人员ID:"+job.getPerson().getId()); System.out.println("姓名: "+job.getPerson().getName()); System.out.println("国家: "+job.getPerson().getCountry()); System.out.println("地址: "+job.getPerson().getAddress()); System.out.println("工作ID: "+job.getId()); System.out.println("工作: "+job.getJob()); System.out.println("公司: "+job.getCompany()); } session.close(); }
- end
- Mybatis上路_03-简单关联数据查询
- mybatis多级关联查询数据封装
- mybatis 关联查询只返回一条数据
- mybatis实现关联数据的查询
- mybatis多级关联查询数据封装
- mybatis关联查询
- mybatis表关联查询
- Mybatis关联表查询
- MyBatis关联查询
- Mybatis关联查询
- MyBatis 关联查询
- mybatis实现关联查询
- Mybatis如何关联查询
- mybatis 关联sql查询
- MyBatis关联查询(一对一)
- mybatis 关联查询
- MyBatis 关联查询
- mybatis一对一关联查询
- LWIP Sockets.c 主要函数分析
- 数据库并发问题
- 11个新鲜出炉的jQuery图像滑块插件
- HMM学习1之介绍(转)
- 约数的个数(数论中的计数问题) By ACReaper
- Mybatis上路_03-简单关联数据查询
- 关于计算机工作方向的几点想法
- 小于n且与n互素的个数(数论中的计数问题) By ACReaper
- 二分法排序算法
- linux 配置网络/sbin/ifup: configuration for eth0 not found
- 编码与解码(数论中的计数问题) By ACReaper
- 离散概率初步 By ACReaper
- tomcat配置双向认证,客户端证书pkcs12格式,方便导入浏览器
- POJ_2253(最短路问题变形)