废话不多说,直接上实例
实体类代码
seckill.java
public class SecKill {
private long seckillId;
private String name;
private int number;
private Date startTime;
private Date endTime;
private Date createTime;
//get and set 省略
}
successkilled.java
public class SuccessKilled {
private long seckillId;
private long userPhone;
private short state;
private Date createTime;
private SecKill seckill; //包含了SecKill实体类
//get set 省略
}
DAO接口
SuccessKilledDao.java
public interface SuccessKilledDao {
/*
* 插入购买明细, 可过滤重复
* @param seckillId
* @param userPhone
* @return 如果影响行数>1 表示更新成功
* */
int insertSuccessKilled(long seckillId,long userPhone);
/*
* 根据Id查询SuccessKilled冰携带m秒杀产品对象实体。
* @param seckillId
**/
SuccessKilled queryByIdWithSeckill(long seckillId);
}
DAO接口实现xml
SuccessKilledMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.seckill.dao.SuccessKilledDao">
<!-- 目的:为DAO接口方法提供SQL语句配置 -->
<insert id="insertSuccessKilled">
<!-- 主键冲突报错 -->
insert ignore into
successkilled (seckill_id,user_phone)
values(#{seckill_id},#{userPhone})
</insert>
<select id="queryByIdWithSeckill" resultMap="SuccessKilled" parameterType="long">
<!-- 根据seckill_id 查询successkilled 并携带一个seckill实体 -->
<!-- 告诉mybatis把结果映射到SuccessKilled的同时映射 seckill属性 -->
select
sk.seckill_id , sk.user_phone , sk.state ,create_time,
s.seckill_id as "seckill.seckill_id",
s.name "seckill.name",
s.number "seckill.number",
s.start_time "seckill.start_time",
s.end_time "seckill.end_time",
s.create_time "seckill.create_time"
from successkilled as sk
inner join seckill s on sk.seckill_Id = s.seckill_Id
where seckill_id = #{seckillId};
</select>