- 编写dao 接口和实现 daoImpl
- 在dao 实现类内注入SqlSessionFactory
- 创建daoMapper.xml 和daoMapper.java(dao 接口) 文件
- 将daoMapper.xml 的namespace 配置为daoMapper.java 的全路径
- 将daoMapper.java 内定义的方法名称于daoMapper.xml sql的statement 的id 保持一致
- 将daoMapper.java 的返回值和参数类型与daoMapper.xml 的resultType 和parameterType 的类型保持一致
- CardMapper.xml
- PersonMapper.xml
-----------使用延时加载----------------
------------------------------------
这里是association 使用的另一种方式
- pojo
- PojoVO.java(pojo 的视图层)
package com.pojo;
/**
* @ClassName PojoVO
* @Author 秃头的JJ
* Date 2019/5/17 0017 19:38
* Version 1.0
*/
public class PojoVO {
private Tb_idcard idcard;
private Tb_person person;
public Tb_idcard getIdcard() {
return idcard;
}
public void setIdcard(Tb_idcard idcard) {
this.idcard = idcard;
}
public Tb_person getPerson() {
return person;
}
public void setPerson(Tb_person person) {
this.person = person;
}
}
- Tb_idcard.java
package com.pojo;
/**
* @ClassName Tb_idcard
* @Author 秃头的JJ
* Date 2019/5/17 0017 19:34
* Version 1.0
*/
public class Tb_idcard {
private Integer id;
private String code;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Override
public String toString() {
return "Tb_idcard{" +
"id=" + id +
", code='" + code + '\'' +
'}';
}
}
- Tb_person.java
package com.pojo;
/**
* @ClassName Tb_person
* @Author 秃头的JJ
* Date 2019/5/17 0017 19:34
* Version 1.0
*/
public class Tb_person {
private Integer id;
private String name;
private Integer age;
private String sex;
// 关联证件
private Tb_idcard card;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Tb_idcard getCard() {
return card;
}
public void setCard(Tb_idcard card) {
this.card = card;
}
@Override
public String toString() {
return "Tb_person{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
", card=" + card +
'}';
}
}
- MybatisCfg.xml(Mybatis 配置文件)
- 测试方法
/**
* 对应的sql 语句
* select * from tb_person p, tb_idcard i where
* p.card_id = i.id and
* p.id in (
* SELECT id from tb_idcard where id = 2
* )
*/
@Test
public void testFindPersonById(){
SqlSession sqlSession = sessionFactory.openSession();
PersonMapper dao = sqlSession.getMapper(PersonMapper.class);
Tb_idcard idcard = new Tb_idcard();
idcard.setId(1);
PojoVO pojoVO = new PojoVO();
pojoVO.setIdcard(idcard);
Tb_person person = dao.findPersonById(pojoVO);
System.out.println(person.toString());
sqlSession.close();
}
UserMapper.xml
- USerMapper.java
package com.dao.oneToMoreDao;
import com.pojo.PojoVO;
import com.pojo.oneToMore.Tb_user;
import java.util.List;
/**
* @CInterfaceName UserMapper
* @Author 秃头的JJ
* Date 2019/5/17 0017 22:24
*/
public interface UserMapper {
Tb_user findUserWithOrders(PojoVO pojoVO);
}
- Pojo
package com.pojo.oneToMore;
/**
* @ClassName Tb_orders
* @Author 秃头的JJ
* Date 2019/5/17 0017 22:18
* Version 1.0
*/
public class Tb_orders {
private Integer id;
private String number;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
@Override
public String toString() {
return "Tb_orders{" +
"id=" + id +
", number='" + number + '\'' +
'}';
}
}
package com.pojo.oneToMore;
import java.util.List;
/**
* @ClassName Tb_user
* @Author 秃头的JJ
* Date 2019/5/17 0017 22:20
* Version 1.0
*/
public class Tb_user {
private Integer id;
private String username;
private String address;
private List orders;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public List getOrders() {
return orders;
}
public void setOrders(List orders) {
this.orders = orders;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Tb_user{" +
"id=" + id +
", username='" + username + '\'' +
", address='" + address + '\'' +
", orders=" + orders +
'}';
}
}
- 测试方法
@Test
public void testFindUserWithOrders(){
SqlSession sqlSession = sessionFactory.openSession();
UserMapper dao = sqlSession.getMapper(UserMapper.class);
Tb_user user = new Tb_user();
user.setId(1);
PojoVO pojoVO = new PojoVO();
pojoVO.setUser(user);
Tb_user u = dao.findUserWithOrders(pojoVO);
System.out.println(u.toString());
sqlSession.close();
}
- OrderMapper.xml
- ProductMapper.xml
- pojo
package com.pojo.moreToMore;
import java.util.List;
/**
* @ClassName Orders
* @Author 秃头的JJ
* Date 2019/5/18 0018 9:59
* Version 1.0
*/
public class Orders {
private Integer id;
private String number;
private List products;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNumber() {
return number;
}
public void setNumber(String number) {
this.number = number;
}
public List getProducts() {
return products;
}
public void setProducts(List products) {
this.products = products;
}
@Override
public String toString() {
return "Orders{" +
"id=" + id +
", number='" + number + '\'' +
", products=" + products +
'}';
}
}
package com.pojo.moreToMore;
import java.util.List;
/**
* @ClassName Product
* @Author 秃头的JJ
* Date 2019/5/18 0018 9:59
* Version 1.0
*/
public class Product {
private Integer id;
private String name;
private Double price;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public String toString() {
return "Product{" +
"id=" + id +
", name='" + name + '\'' +
", price=" + price +
'}';
}
}
package com.pojo.moreToMore;
import java.util.List;
/**
* @ClassName User
* @Author 秃头的JJ
* Date 2019/5/18 0018 9:59
* Version 1.0
*/
public class User {
private Integer id;
private String username;
private String address;
private List orders;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public List getOrders() {
return orders;
}
public void setOrders(List orders) {
this.orders = orders;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", address='" + address + '\'' +
", orders=" + orders +
'}';
}
}
- mapper接口
package com.dao.moreToMoreDao;
import com.pojo.PojoVO;
import com.pojo.moreToMore.Orders;
/**
* @InterfaceName OrdersMapper
* @Author 秃头的JJ
* Date 2019/5/18 0018 10:15
*/
public interface OrdersMapper {
Orders findOrdersWithProduct(PojoVO pojoVO);
Orders findOrdersWithProduct_(PojoVO pojoVO);
}
- 测试方法
@Test
public void testFindOrdersWithProduct(){
SqlSession sqlSession = sessionFactory.openSession();
OrdersMapper dao = sqlSession.getMapper(OrdersMapper.class);
Product product = new Product();
product.setId(1);
PojoVO pojoVO = new PojoVO();
pojoVO.setProduct(product);
Orders orders = dao.findOrdersWithProduct_(pojoVO);
Orders orders = dao.findOrdersWithProduct(pojoVO);
System.out.println(orders.toString());
sqlSession.close();
}
- 使用association — 查询信息映射到pojo 对象内pojo 属性
使用association 可以将关联查询的信息映射到一个pojo 对象内
- 使用collection — 查询信息映射到pojo 对象内List 属性
使用collection 可以将关联查询的信息映射到一个list 集合内
select * from tb_person p, tb_idcard i where
p.card_id = i.id and
p.id in (
SELECT id from tb_idcard where id = ?
)
@Test
public void testFindPersonById(){
/**
* 对应的sql 语句
* select * from tb_person p, tb_idcard i where
* p.card_id = i.id and
* p.id in (
* SELECT id from tb_idcard where id = 2
* )
*/
SqlSession sqlSession = sessionFactory.openSession();
PersonMapper dao = sqlSession.getMapper(PersonMapper.class);
Tb_idcard idcard = new Tb_idcard();
idcard.setId(2);
PojoVO pojoVO = new PojoVO();
pojoVO.setIdcard(idcard);
List tb_people = dao.findPersonById(pojoVO);
for (Tb_person p: tb_people
) {
System.out.println(p.getCard());
}
sqlSession.close();
}w