编写实体类junit junit4.11 test org.mybatis mybatis3.4.6 mysql mysql-connector-java5.1.45 log4j log4j1.2.17 org.mybatis mybatis3.4.6 test
public class Order {
private int id;
private Date ordertime; //下单时间
private double total; //总金额
private User user; //当前订单属于哪一个用户
}
public class User {
private int id; //用户id
private String username; //用户名称
private String password; //用户密码
private Date birthday; //用户生日
//当前用户存在那些订单
private List orderList;
//描述的是当前用户具备哪些角色
private List roleList;
}
public class Role {
private int id; //角色id
private String roleName; //角色名称
private String roleDesc; //角色描述
}
1、一对一查询
编写OrderMapper.xml文件(重点配置)
(1)方法一 使用associate标签(匹配)
SELECT *,o.id oid FROM orders o,user u WHERe o.uid=u.id
(2)方法二 直接引用
2、一对多查询 编写UserMapper.xml文件(重点配置)
3、多对多查询 编写UserMapper.xml文件(可以写在一对多配置文件中 重点配置)
4、测试代码如下:
package com.dhh.test;
import com.dhh.domain.Order;
import com.dhh.domain.User;
import com.dhh.mapper.OrderMapper;
import com.dhh.mapper.UserMapper;
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.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
public class MyBatisTest {
@Test //多对多查询测试
public void test3() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List userAndRoleAll= mapper.findUserAndRoleAll();
for (User user:userAndRoleAll) {
System.out.println(user);
}
sqlSession.close();
}
@Test //一对多查询测试
public void test2() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
UserMapper mapper=sqlSession.getMapper(UserMapper.class);
List userList= mapper.findAll();
for (User user:userList) {
System.out.println(user);
}
sqlSession.close();
}
@Test //一对一查询测试
public void test1() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
List orderList=mapper.findAll();
for (Order order:orderList) {
System.out.println(order);
}
sqlSession.close();
}
}
5、小结
MyBatis多表配置方式:
一对一:使用
一对多:使用
多对多:使用
总结:坚持很难,放弃容易,再接再厉,一起进步!



