JavaEE_Mybatis_SpringMVC_Mybatis_lesson11_一对一关联映射(ResultMap/ResultType)
2015-12-02 19:10
681 查看
项目代码
http://pan.baidu.com/s/1c01BLvi
下面演示Mybatis的一对一关联映射, ResultType 与ResultMap 两种形式
整体的配置文件
Mybatis的一对一关联映射ResultType形式
Mapper.xml
Mapper.java
UserCustom.java(利用扩展类)
Mybatis的一对一关联映射ResultMap形式
Mapper.xml
Mapper.java
Orders.java
测试类
http://pan.baidu.com/s/1c01BLvi
下面演示Mybatis的一对一关联映射, ResultType 与ResultMap 两种形式
整体的配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 加载属性文件 --> <properties resource="db.properties"></properties> <!-- <settings></settings> --> <typeAliases> <!-- <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/> --> <!-- 批量定义别名 --> <package name="cn.itcast.mybatis.po"/> </typeAliases> <!-- 和spring整合后 environments配置将废除--> <environments default="development"> <environment id="development"> <!-- 使用jdbc事务管理--> <transactionManager type="JDBC" /> <!-- 数据库连接池--> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="sqlmap/User.xml"/> <!-- <mapper resource="mapper/UserMapper.xml"/> --> <!-- <mapper class="cn.itcast.mybatis.mapper.UserMapper"/> --> <package name="cn.itcast.mybatis.mapper"/> </mappers> </configuration>
Mybatis的一对一关联映射ResultType形式
Mapper.xml
<?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="cn.itcast.mybatis.mapper.UserCustomMapper">
<select id="findOrderUser" resultType="OrdersCustom"> SELECT o.*, u.username, u.sex, u.address FROM user AS u, orders AS o WHERE o.user_id = u.id </select> </mapper>
Mapper.java
package cn.itcast.mybatis.mapper; import java.util.List; import cn.itcast.mybatis.po.Orders; import cn.itcast.mybatis.po.OrdersCustom; public interface UserCustomMapper { // 根据订单查询用户信息 // 主表:Orders // 从表:User List<OrdersCustom> findOrderUser() throws Exception; // 利用ResultMap进行关联映射 List<Orders> findOrderUserResultMap() throws Exception; }
UserCustom.java(利用扩展类)
package cn.itcast.mybatis.po; public class OrdersCustom extends Orders { /* * SELECT o.*, u.username, u.sex, u.address FROM user AS u, orders AS o * WHERE o.user_id = u.id */ private String username; private String sex; private String address; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } @Override public String toString() { return "OrdersCustom [username=" + username + ", sex=" + sex + ", address=" + address + ", toString()=" + super.toString() + "]"; } }Orders.java
package cn.itcast.mybatis.po; import java.util.Date; import java.util.List; public class Orders { private Integer id; private Integer userId; private String number; private Date createtime; private String note; //用户信息 private User user; //订单明细 private List<Orderdetail> orderdetails; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number == null ? null : number.trim(); } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } public String getNote() { return note; } public void setNote(String note) { this.note = note == null ? null : note.trim(); } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public List<Orderdetail> getOrderdetails() { return orderdetails; } public void setOrderdetails(List<Orderdetail> orderdetails) { this.orderdetails = orderdetails; } @Override public String toString() { return "Orders [id=" + id + ", userId=" + userId + ", number=" + number + ", createtime=" + createtime + ", note=" + note + ", user=" + user + ", orderdetails=" + orderdetails + "]"; } }
Mybatis的一对一关联映射ResultMap形式
Mapper.xml
<?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="cn.itcast.mybatis.mapper.UserCustomMapper">
<resultMap type="Orders" id="OrdersUserResultMap">
<id column="id" property="id"/>
<result column="user_id" property="userId"/>
<result column="number" property="number"/>
<result column="createtime" property="createtime"/>
<result column="note" property="note"/>
<!-- 配置映射的关联的用户信息 -->
<!-- association: 用于映射关联查询单个对象的信息 -->
<!-- property: 要将关联查询用户信息映射到Orders中的那个属性 -->
<association property="user" javaType="User">
<id column="user_id" property="id"/>
<result column="username" property="username"/>
<result column="sex" property="sex"/>
<result column="address" property="address"/>
</association>
</resultMap>
<select id="findOrderUserResultMap" resultMap="OrdersUserResultMap"> SELECT o.*, u.username, u.sex, u.address FROM user AS u, orders AS o WHERE o.user_id = u.id </select> </mapper>
Mapper.java
package cn.itcast.mybatis.mapper; import java.util.List; import cn.itcast.mybatis.po.Orders; import cn.itcast.mybatis.po.OrdersCustom; public interface UserCustomMapper { // 根据订单查询用户信息 // 主表:Orders // 从表:User List<OrdersCustom> findOrderUser() throws Exception; // 利用ResultMap进行关联映射 List<Orders> findOrderUserResultMap() throws Exception; }
Orders.java
package cn.itcast.mybatis.po; import java.util.Date; import java.util.List; public class Orders { private Integer id; private Integer userId; private String number; private Date createtime; private String note; //用户信息 private User user; //订单明细 private List<Orderdetail> orderdetails; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public String getNumber() { return number; } public void setNumber(String number) { this.number = number == null ? null : number.trim(); } public Date getCreatetime() { return createtime; } public void setCreatetime(Date createtime) { this.createtime = createtime; } public String getNote() { return note; } public void setNote(String note) { this.note = note == null ? null : note.trim(); } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public List<Orderdetail> getOrderdetails() { return orderdetails; } public void setOrderdetails(List<Orderdetail> orderdetails) { this.orderdetails = orderdetails; } @Override public String toString() { return "Orders [id=" + id + ", userId=" + userId + ", number=" + number + ", createtime=" + createtime + ", note=" + note + ", user=" + user + ", orderdetails=" + orderdetails + "]"; } }
测试类
package cn.itcast.mybatis.mapper; import java.io.InputStream; 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 org.junit.Before; import org.junit.Test; import cn.itcast.mybatis.po.Orders; import cn.itcast.mybatis.po.OrdersCustom; public class UserCustomMapperTest { private SqlSessionFactory sqlSessionFactory; @Before public void setUp() throws Exception { String resource = null; InputStream inputStream = null; try { // 读取Mybatis配置信息 resource = "SqlMapConfig.xml"; inputStream = Resources.getResourceAsStream(resource); // 根据Mybatis配置信息,创建会话工厂 this.sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); } catch (Exception e) { e.printStackTrace(); } } @Test public void testFindOrderUser() { SqlSession sqlSession = null; try { sqlSession = sqlSessionFactory.openSession(); UserCustomMapper userCustomMapper = sqlSession .getMapper(UserCustomMapper.class); List<OrdersCustom> ordersCustomsList = userCustomMapper .findOrderUser(); for (OrdersCustom tmp : ordersCustomsList) { System.out.println(tmp); } } catch (Exception e) { sqlSession.close(); } } @Test public void testFindOrderUserResultMap() { SqlSession sqlSession = null; try { sqlSession = sqlSessionFactory.openSession(); UserCustomMapper userCustomMapper = sqlSession .getMapper(UserCustomMapper.class); List<Orders> list = userCustomMapper.findOrderUserResultMap(); for (Orders tmp : list) { System.out.println(tmp); } } catch (Exception e) { sqlSession.close(); } } }
相关文章推荐
- 在cmd窗口运行需要加载含驱动的java程序
- java web sql注入测试(1)---概念概述
- java中的懒汉单例模式和饿汉单例模式
- java中static和final关键字
- java设计模式之单例模式
- 用Intellij IDEA 14.1创建Java Web项目
- java 实现断点续传
- Java运算符
- JAVA构造方法与方法是啥意思,方法重载方法覆盖俗谈
- JAVA构造函数(方法)与方法是啥意思
- 使用Spring JdbcTemplate实现CLOB和BLOB的存取
- 01-2安装离线springsource-tool-suite的时候非常缓慢问题解决方案
- Springfox swagger-ui 覆盖默认request host
- java解析中国行政区域并在页面显示实现动态逐级筛选
- JAVA代码 运算符
- 01-SpringMVC-HelloWorld
- 第三方包jintellitype实现Java设置全局热键
- java.lang.ClassCastException: java.lang.NoClassDefFoundError cannot be cast to java.lang.RuntimeException
- No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK
- SpringMVC Maven项目 java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServle