javabean:
package com.me.model; import java.io.Serializable; import java.util.Date; import java.util.List; public class User implements Serializable { /** * */ private static final long serialVersionUID = 1L; private int id; private String username; private Date birthday; private String sex; private String address; //一對一 放入對象 private Morder morder; //一對多 放入對象集合 private List<Home> homeList; public List<Home> getHomeList() { return homeList; } public void setHomeList(List<Home> homeList) { this.homeList = homeList; } public Morder getMorder() { return morder; } public void setMorder(Morder morder) { this.morder = morder; } public static long getSerialversionuid() { return serialVersionUID; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } 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 "User [id=" + id + ", username=" + username + ", birthday=" + birthday + ", sex=" + sex + ", address=" + address + ", morder=" + morder + ", homeList=" + homeList + "]"; } }
package com.me.model; public class Morder { private int orderId; private String orderName; private String orderMessage; public int getOrderId() { return orderId; } public void setOrderId(int orderId) { this.orderId = orderId; } public String getOrderName() { return orderName; } public void setOrderName(String orderName) { this.orderName = orderName; } public String getOrderMessage() { return orderMessage; } public void setOrderMessage(String orderMessage) { this.orderMessage = orderMessage; } }
package com.me.model;
public class Home {
private int homeId;
private String homeName;
public int getHomeId() {
return homeId;
}
public void setHomeId(int homeId) {
this.homeId = homeId;
}
public String getHomeName() {
return homeName;
}
public void setHomeName(String homeName) {
this.homeName = homeName;
}
}
mapper.xml 代码
<!-- collection :collection属性的值有三个分别是list、array、map三种, 分别对应的参数类型为:List、数组、map集合,我在上面传的参数为数组,所以值为array item : 表示在迭代过程中每一个元素的别名 index :表示在迭代过程中每次迭代到的位置(下标) open :前缀 close :后缀 separator :分隔符,表示迭代时每个元素之间以什么分隔 --> <delete id="deleteSome"> delete from user where id in <foreach collection="list" item="id" index="index" open="(" close=")" separator=","> #{id} </foreach> </delete> <!-- 关联查询 --> <!-- 關聯查詢 1對1 --> <select id="selectGL" resultMap="userRsultMap"> select * from user u,morder m WHERE u.oid=m.order_id </select> <resultMap type="com.me.model.User" id="userRsultMap"> <id property="id" column="id" /> <result column="username" property="username" /> <result column="birthday" property="birthday" /> <result column="sex" property="sex" /> <result column="address" property="address" /> <association property="morder" javaType="com.me.model.Morder"> <id column="order_id" property="orderId" /> <result column="order_name" property="orderName" /> <result column="order_message" property="orderMessage" /> </association> </resultMap> <!-- 關聯查詢 1對多 --> <select id="selectGL2" resultMap="userRsultMap2"> select * from user u,home h where u.hid=h.home_id; </select> <resultMap type="com.me.model.User" id="userRsultMap2"> <id property="id" column="id" /> <result column="username" property="username" /> <result column="birthday" property="birthday" /> <result column="sex" property="sex" /> <result column="address" property="address" /> <collection property="homeList" ofType="com.me.model.Home"> <id property="homeId" column="home_id" /> <result property="homeName" column="home_name" /> </collection> </resultMap>
图文解释:
测试:
//關聯查詢 1 to 多 @Test public void selectGL2(){ try { inputStream = Resources.getResourceAsStream(resource); // 创建会话工厂,传入MyBatis的配置文件信息 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder() .build(inputStream); // 通过工厂得到SqlSession sqlSession = sqlSessionFactory.openSession(); List<User> list = sqlSession.selectList("test.selectGL2"); for (User u : list) { System.err.println(u.getHomeList().get(0).getHomeName()); } } catch (IOException e) { e.printStackTrace(); } finally { // 释放资源 sqlSession.close(); } }
结果:
22:47:17.005 [main] DEBUG org.apache.ibatis.logging.LogFactory - Logging initialized using 'class org.apache.ibatis.logging.slf4j.Slf4jImpl' adapter.
22:47:17.140 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
22:47:17.140 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
22:47:17.140 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
22:47:17.140 [main] DEBUG o.a.i.d.pooled.PooledDataSource - PooledDataSource forcefully closed/removed all connections.
22:47:17.215 [main] DEBUG o.a.i.t.jdbc.JdbcTransaction - Opening JDBC Connection
22:47:17.420 [main] DEBUG o.a.i.d.pooled.PooledDataSource - Created connection 518522822.
22:47:17.420 [main] DEBUG o.a.i.t.jdbc.JdbcTransaction - Setting autocommit to false on JDBC Connection [com.mysql.jdbc.JDBC4Connection@1ee807c6]
22:47:17.421 [main] DEBUG test.selectGL2 - ==> Preparing: select * from user u,home h where u.hid=h.home_id;
22:47:17.444 [main] DEBUG test.selectGL2 - ==> Parameters:
22:47:17.461 [main] DEBUG test.selectGL2 - <== Total: 4
sasadasd
22:47:17.462 [main] DEBUG o.a.i.t.jdbc.JdbcTransaction - Resetting autocommit to true on JDBC Connection [com.mysql.jdbc.JDBC4Connection@1ee807c6]
22:47:17.462 [main] DEBUG o.a.i.t.jdbc.JdbcTransaction - Closing JDBC Connection [com.mysql.jdbc.JDBC4Connection@1ee807c6]
22:47:17.463 [main] DEBUG o.a.i.d.pooled.PooledDataSource - Returned connection 518522822 to pool.
更多可以参考:https://www.cnblogs.com/xdp-gacl/p/4264440.html