OrderMapping.xml 中的配置 :
<mapper namespace="mybatis.mapper.OrderMapper">
<resultMap id="orderMap" type="order">
<id column="oid" property="id"/>
<association property="user" javaType="user">
<id column="uid" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
association>
resultMap>
<select id="findAll" resultMap="orderMap">
SELECT *,o.id oid FROM orders o,user1 u WHERE o.`uid`=u.`id`
select>
测试的代码 :
@Test
public void test3() throws IOException {
//获得核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session会话对象
SqlSession sqlSession = build.openSession();
OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
List<Order> all = mapper.findAll();
for(Order uk:all){
System.out.println(uk);
}
}
UserMapping.xml 中的配置 :
<mapper namespace="mybatis.mapper.UserMapper">
<resultMap id="userMap" type="user">
<id column="uid" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<collection property="orderList" ofType="order">
<id column="oid" property="id"/>
<result column="ordertime" property="ordertime"/>
<result column="total" property="total"/>
collection>
resultMap>
<select id="findAll" resultMap="userMap">
select *,o.id oid from user u,orders o where u.id=o.uid
select>
mapper>
测试使用的代码 :
@Test
public void test2() throws IOException {
//获得核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session会话对象
SqlSession sqlSession = build.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> all = mapper.findAll();
for(User uk:all){
System.out.println(uk);
}
}
UserMapping.xml 中的配置 :
<mapper namespace="mybatis.mapper.UserMapper">
<resultMap id="userRoleMap" type="user">
<id column="userId" property="id"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<collection property="roleList" ofType="role">
<id column="roleId" property="id"/>
<result column="roleName" property="roleName"/>
<result column="roleDesc" property="roleDesc"/>
collection>
resultMap>
<select id="findRole" resultMap="userRoleMap">
SELECT * FROM USER u,sys_user_role ur,sys_role r WHERE u.id=ur.userid AND ur.roleid=r.id
select>
mapper>
测试使用的代码 :
@Test
public void test1() throws IOException {
//获得核心配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
//获得session工厂对象
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获得session会话对象
SqlSession sqlSession = build.openSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> all = mapper.findRole();
for(User uk:all){
System.out.println(uk);
}
}
UserMapper接口中的注解使用
public interface UserMapper {
@Insert( "insert into user1 values(#{id},#{username},#{password},#{birthday})")
public void insert(User user);
@Select("select * from user1 where id=#{id}")
public User select(int id);
@Select("select * from user1")
public List<User> findAll();
}
sqlMapConfig.xml 中的配置 :
<mappers>
<package name="mybatis.mapper">package>
mappers>
一对一查询 :
Order实体的成员变量:
public class Order {
private int id;
private Date ordertime;
private double total;
private User user;
}
OrderMapper.java 一个接口类:
public interface OrderMapper {
// @Select("select *,o.id oid from orders o, user u where o.uid=u.id")
// @Results({
// @Result(column = "oid",property = "id"),
// @Result(column = "ordertime",property = "ordertime"),
// @Result(column = "total",property = "total"),
// @Result(column = "uid",property = "user.id"),
// @Result(column = "username",property = "user.username"),
// @Result(column = "password",property = "user.password")
// })
// public List findAll();
@Select("select * from orders")
@Results({
@Result(column = "oid",property = "id"),
@Result(column = "ordertime",property = "ordertime"),
@Result(column = "total",property = "total"),
@Result(
property = "user",//要封装的属性名称
column = "uid",//根据那个字段去查询user表的数据
javaType = User.class, //要封装的实体类型
one = @One(select = "mybatis.mapper.UserMapper.select")
)
})
public List<Order> findAll();
}
测试类:
public class MyBatisTest2 {
private OrderMapper mapper;
@Before
public void before() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession(true);
mapper = sqlSession.getMapper(OrderMapper.class);
}
@Test
public void test(){
List<Order> all = mapper.findAll();
System.out.println(all);
}
}
一对多查询 :
User实体成员变量:
public class User {
private int id;
private String username;
private String password;
//描述当前用户具有的订单
private List<Order> orderList;
}
UserMapper.java 接口:
@Select("select * from user")
@Results({
@Result(id = true ,column = "id",property = "id"),
@Result(column = "username", property = "username"),
@Result(column = "password", property = "password"),
@Result(
property = "orderList",
column = "id",
javaType = List.class,
many = @Many(select = "mybatis.mapper.OrderMapper.findByUid")
)
})
public List<User> findRall();
OrderMapper.java接口:
public interface OrderMapper {
@Select("select * from orders where uid=#{uid}")
public List<Order> findByUid(int uid);
}
测试类 :
public class MyBatisTest2 {
private OrderMapper mapper;
@Before
public void before() throws IOException {
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession(true);
mapper = sqlSession.getMapper(OrderMapper.class);
}
@Test
public void test(){
List<Order> all = mapper.findAll();
System.out.println(all);
}
}
多对多查询:
User实体中的数据成员 :
public class User {
private int id;
private String username;
private String password;
// //描述当前用户具有的订单
// private List orderList;
private List<Role> rolelist;
}
新建一个RoleMapper接口类 :
public interface RoleMapper {
@Select("select * from sys_user_role ur,sys_role r where ur.roleId=r.id and ur.userId=#{uid}")
public List<Role> findByRId(int uid);
}
UserMapper接口中的实现 :
@Select("select * from user")
@Results({
@Result(id = true,column = "id",property = "id"),
@Result(column = "username",property = "username"),
@Result(column = "password",property = "password"),
@Result(
property = "rolelist",
column = "id",
javaType = List.class,
many =@Many(select = "mybatis.mapper.RoleMapper.findByRId")
)
})
public List<User> findURall();
测试类 :
public class MyBatisTest {
private UserMapper mapper;
@Before
public void before() throws IOException{
InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession(true);
mapper = sqlSession.getMapper(UserMapper.class);
}
@Test
public void test(){
List<User> rall = mapper.findURall();
for (User uk:rall){
System.out.println(uk);
}
}
}