一:搭建mybatis框架
二:创建数据库
三:创建查询映射 与 代码补齐
1:创建Orders实体
2:创建mapper
3:创建映射
4:写测试类
5:运行结果
一:搭建原始框架
二:数据库准备(一对多查询)
USE mybatis;
# 创建一个名称为tb_user的表
CREATE TABLE tb_user (
id int(32) PRIMARY KEY AUTO_INCREMENT,
username varchar(32),
address varchar(256)
);
# 插入3条数据
INSERT INTO tb_user VALUES ('1', '小明', '北京');
INSERT INTO tb_user VALUES ('2', '李华', '上海');
INSERT INTO tb_user VALUES ('3', '李刚', '上海');
# 创建一个名称为tb_orders的表
CREATE TABLE tb_orders (
id int(32) PRIMARY KEY AUTO_INCREMENT,
number varchar(32) NOT NULL,
user_id int(32) NOT NULL,
FOREIGN KEY(user_id) REFERENCES tb_user(id)
);
# 插入3条数据
INSERT INTO tb_orders VALUES ('1', '1000011', '1');
INSERT INTO tb_orders VALUES ('2', '1000012', '1');
INSERT INTO tb_orders VALUES ('3', '1000013', '2');
三:创建查询映射 与 代码补齐
(
1:创建Orders实体 2:创建mapper 3:创建映射 4:写测试类 5:运行结果)
1:创建Orders实体
package com.biem.pojo;
import lombok.*;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Orders {
private Integer id;
private String number;
}
创建Users实体
package com.biem.pojo;
import lombok.*;
import java.util.List;
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class Users {
private Integer id;
private String username;
private String address;
private List<Orders> ordersList;
}
2:创建mapper
orders
package com.biem.Mapper;
import com.biem.pojo.Orders;
public interface OrdersMapper {
public Orders findOrdersById(int id);
}
Users
package com.biem.Mapper;
import com.biem.pojo.Users;
public interface UsersMapper {
public Users findUserById(int id);
}
3:创建映射
orders
<?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为映射的根节点-->
<!-- mapper为映射的根节点,namespace指定Dao接口的完整类名
mybatis会依据这个接口动态创建一个实现类去实现这个接口,
而这个实现类是一个Mapper对象-->
<mapper namespace="com.biem.Mapper.OrdersMapper">
<select id="selectOrders" parameterType="Integer" resultType="Orders">
select * from tb_orders where user_id=#{userId}
</select>
</mapper>
users
<?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为映射的根节点-->
<!-- mapper为映射的根节点,namespace指定Dao接口的完整类名
mybatis会依据这个接口动态创建一个实现类去实现这个接口,
而这个实现类是一个Mapper对象-->
<mapper namespace="com.biem.Mapper.UsersMapper">
<resultMap id="usersWithOrders1" type="Users">
<id property="id" column="id"></id>
<result property="username" column="username"/>
<result property="address" column="address"/>
<collection property="ordersList" javaType="ArrayList" ofType="orders" select="com.biem.Mapper.OrdersMapper.selectOrders" column="id"/>
</resultMap>
<!-- public Users findUserById(Integer id); -->
<select id="findUserById" parameterType="Integer" resultMap="usersWithOrders1">
select * from tb_user where id = #{id}
</select>
</mapper>
4:写测试类
package com.biem.test;
import com.biem.Mapper.UsersMapper;
import com.biem.Util.MybatisUtil;
import com.biem.pojo.Users;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
public class UsersTest {
@Test
public void testFindUserById() {
SqlSession session = MybatisUtil.openSession();
UsersMapper mapper = session.getMapper(UsersMapper.class);
Users user = mapper.findUserById(1);
System.out.println("user = " + user);
session.close();
}
}
5:查看运行结果