Mybatis学习笔记(6)--一对一的关联使用resultType输出类型
2018-01-15 10:12
495 查看
1.说明
2.实体类
/** * @文件名称: Order.java * @描述: TODO * @作者: 一叶扁舟(skiff) * @时间:2018年1月9日 下午4:26:29 * @版本:V1.0 */ package com.skiff.www.domain; import java.util.Date; import org.apache.ibatis.type.Alias; /** * @类功能说明: * @作者: 一叶扁舟 (skiff) * @创建时间:2018年1月9日 下午4:26:29 * @版本:V1.0 */ public class Order { // 订单id private int id; // 用户id private Integer userId; // 订单号 private String number; // 订单创建时间 private Date createtime; // 备注 private String note; //order和user映射时一对一映射,即一张order对应一个用户 private User user; /** * @return the user */ public User getUser() { return user; } /** * @param user the user to set */ public void setUser(User user) { this.user = user; } /** * @return the id */ public int getId() { return id; } /** * @param id the id to set */ public void setId(int id) { this.id = id; } /** * @return the userId */ public Integer getUserId() { return userId; } /** * @param userId the userId to set */ public void setUserId(Integer userId) { this.userId = userId; } /** * @return the number */ public String getNumber() { return number; } /** * @param number the number to set */ public void setNumber(String number) { this.number = number; } /** * @return the createtime */ public Date getCreatetime() { return createtime; } /** * @param createtime the createtime to set */ public void setCreatetime(Date createtime) { this.createtime = createtime; } /** * @return the note */ public String getNote() { return note; } /** * @param note the note to set */ public void setNote(String note) { this.note = note; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Order [id=" + id + ", number=" + number + ", createtime=" + createtime + ", note=" + note + ", userName=" + user.getName() + ", userId=" + user.getId() + "]"; } }
3.mapper文件
<?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.skiff.www.mapper.OrderMapper"> <!-- id:statement的id 或者叫做sql的id --> <!-- parameterType:声明输入参数的类型 --> <!-- resultType:声明输出结果的类型,应该填写pojo的全路径 --> <!-- #{}:输入参数的占位符,相当于jdbc的? --> <select id="findOrderById" parameterType="int" resultType="com.skiff.www.domain.Order"> select * from orders where id = #{id} </select> <!-- 注意:resultMap中type为权限定名,即type="Order",如果 在纳入spring管理后,在Order对象上面添加@Alias("order"),那么type可以写为type="order" --> <resultMap type="com.skiff.www.domain.Order" id="orders"> <id column="id" property="id"/> <result column="number" property="number" /> <result column="createtime" property = "createtime"/> <!-- association :配置一对一属性 --> <!-- property:order里面的User属性名 --> <!-- javaType:属性类型 --> <association property="user" javaType="com.skiff.www.domain.User"> <!-- id:声明主键,表示id是关联查询对象的唯一标识--> <!-- 特别注意:column中的名字要和sql语句中的列要一致,如sql中是o.username那么column就为username 如果在sql语句中起别名,那么column就为别名名,而property必须为实体对象User中的属性 --> <id property="id" column="id" /> <result property="name" column="xxxx" /> <result property="address" column="address" /> <result property="sex" column="sex" /> </association> </resultMap> <select id = "findOrderAndUser" resultMap="orders"> select o.id, o.number , o.createtime, o.note , o.user_id, u.username as xxxx from orders o left join user u on o.user_id = u.id </select> </mapper>
4.mapper接口
/** * @文件名称: UserMapper.java * @描述: TODO * @作者: 一叶扁舟(skiff) * @时间:2018年1月9日 下午3:18:05 * @版本:V1.0 */ package com.skiff.www.mapper; import java.util.List; import com.skiff.www.domain.Order; import com.skiff.www.domain.User; /** * @类功能说明: * @作者: 一叶扁舟 (skiff) * @创建时间:2018年1月9日 下午4:29:34 * @版本:V1.0 */ public interface OrderMapper { //遵循四个原则 //接口 方法名 == User.xml 中 id 名 //返回值类型 与 Mapper.xml文件中返回值类型要一致 //方法的入参类型 与Mapper.xml中入参的类型要一致 //命名空间 绑定此接口 public Order findOrderById(Integer id); // 获取所有的数据 public List<Order> findOrderAll(); //一对一的查询 public List<Order> findOrderAndUser(); }
5.测试方法
@Test public void findOrderAndUser() { //创建SqlSessionFactory //创建SqlSession SqlSession sqlSession = sqlSessionFactory.openSession(); //SqlSEssion帮我生成一个实现类 (给接口) OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class); List<Order> orders = orderMapper.findOrderAndUser(); for (Order order : orders) { System.out.println(order); } }
相关文章推荐
- Mybatis学习笔记(7)--一对一的关联使用resultType输出类型
- Mybatis学习笔记(8)--一对多的关联使用resultMap输出类型
- 【MyBatis学习07】输出类型resultType及输出参数映射resultMap
- JavaWeb学习笔记-mybatis-19-一对一使用resultMap
- iOS学习笔记:instancetype关联返回类型
- 框架学习系列 mybatis 第十八篇 高级结果一对一结果映射之resultMap的使用
- MyBatis学习笔记(三)——parameterType为基本类型时的使用方法
- 表一对一关联([尚硅谷]_张晓飞_Mybatis 学习笔记三)
- MyBatis Review——使用resultType和resultMap实现一对一查询
- 知了堂学习笔记--mybatis学习_resultMap的使用
- (JAVA SE 学习笔记)Java.SE.第003讲.原生数据类型使用陷阱.Pitfall.of.Primitive.Data.Type
- struts2学习笔记-2----result的type几个类型
- JavaEE_Mybatis_SpringMVC_Mybatis_lesson11_一对一关联映射(ResultMap/ResultType)
- JavaWeb学习笔记-mybatis-12-mybatis配置-类型处理typeHandlers
- mybatis学习之路----输出映射之resultType resultMap
- MyBatis一对一查询使用ResultType映射
- Mybatis输入映射parameterType与输出映射ResultMap是Map类型的解决方案
- Mybatis学习笔记-一对一关联
- mybatis进阶(2)--一对一查询(使用resultType)
- mybatis学习笔记(四) --- 一对一关联