mybatis映射文件
1.目的
- 通过该实验,掌握mybatis映射文件中结果映射resultMap的配置方法。
- 通过该实验,掌握mybatis映射文件中关联association配置方法和集合collection配置方法。
- 通过该实验,掌握利用mybatis进行数据库表的增删改查的方法。
2.结果
1 实验任务一:实现订单表的增删改查
订单查询:在3.1需求一第4步中,运行测试用例test包下的cn.smbms.dao.bill里的BillMapperTest,在方法testGetBillList右键运行run as -jUnit Test修改代码,要求查询条件设定 productName ,providerId ,isPayment 等参数。
将自己敲入的相关代码和在控制台查询出的结果截屏,粘贴到这里。
订单增删改:将 第3步中 订单的增删改 中的BillMapper.java,及BillMapper.xml中的内容粘贴到这里,并给出结果截图。
接口:
public interface BillMapper {
/**
* 根据条件查询订单表
*
* @param productName
* @param providerId
* @param isPayment
* @return
*/
List<Bill> getBillList(@Param("productName") String productName,
@Param("providerId")Integer providerId,
@Param("isPayment") Integer isPayment);
/*
* 添加订单的信息
* */
int add(Bill bill);
/*
* 根据订单的编号删除指定的订单的信息
* */
int deleteBillById(@Param("id") int id);
/*
* 修改订单的信息
* */
int modify(Bill bill);
}
mapper:
<?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 namespace="cn.smbms.dao.bill.BillMapper">
<resultMap id="providerResult" type="Provider">
<id property="id" column="p_id"/>
<result property="proCode" column="proCode"/>
<result property="proName" column="proName"/>
<result property="proContact" column="proContact"/>
<result property="proPhone" column="proPhone"/>
</resultMap>
<resultMap id="billList" type="Bill">
<id property="id" column="id"/>
<result property="billCode" column="billCode"/>
<result property="productName" column="productName"/>
<result property="totalPrice" column="totalPrice"/>
<result property="isPayment" column="isPayment"/>
<association property="provider" javaType="Provider" resultMap="providerResult"/>
</resultMap>
<select id="getBillList" resultMap="billList">
select b.*, p.id as p_id, p.proCode, p.proName, p.proContact, p.proPhone
from smbms_bill b
join smbms_provider p on b.providerId = p.id
where b.productName like concat('%', #{productName}, '%')
and b.providerId = #{providerId}
and b.isPayment = #{isPayment}
</select>
<!-- 增加订单-->
<insert id="add">
insert into smbms_bill (billCode, productName, productDesc, productUnit, productCount,
totalPrice, isPayment, createdBy, creationDate,providerId)
values (#{billCode}, #{productName}, #{productDesc}, #{productUnit}, #{productCount}, #{totalPrice},
#{isPayment}, #{createdBy}, #{creationDate},#{providerId})
</insert>
<!-- 修改订单-->
<update id="modify" parameterType="Bill">
update smbms_bill
set
billCode= #{billCode},
productName= #{productName},
productDesc= #{productDesc},
productUnit= #{productUnit},
productCount= #{productCount},
totalPrice= #{totalPrice},
isPayment= #{isPayment},
modifyBy= #{modifyBy},
modifyDate= #{modifyDate},
providerId= #{providerId}
where id = #{id}
</update>
<!-- 删除订单-->
<delete id="deleteBillById">
delete from smbms_bill where id=#{id}
</delete>
</mapper>
2 实验任务二:供应商增删改及其订单列表查询
根据供应商id查询其订单:在4.1需求二第4步中,运行测试用例test包下的cn.smbms.dao.provider里的ProviderMapperTest,在方法testGetBillListByProviderId右键运行run as -jUnit Test。修改该测试方法中的供应商ID,在控制台查看查询结果,并截图。
将相关代码和在控制台输出的相关结果截屏,粘贴到这里。
供应商增删改:将 第4步中 订单的增删改 中的ProviderMapper.java,及ProviderMapper.xml中的内容粘贴到这里,并给出运行结果截图。
接口:
public interface ProviderMapper {
/**
* 查询供应商表记录数
*
* @return
*/
int count();
/**
* 查询供应商列表
*
* @return
*/
List<Provider> getProviderList();
/**
* 根据供应商名称查询供应商列表(模糊查询)
*
* @param proName
* @return
*/
List<Provider> getProviderListByProName(String proName);
/**
* 增加供应商
*
* @param provider
* @return
*/
int insert(Provider provider);
/**
* 修改供应商信息
*
* @param provider
* @return
*/
int update(Provider provider);
/**
* 根据供应商ID删除供应商信息
*
* @param delId
* @return
*/
int delete(@Param("id") Integer delId);
/*
*获取指定供应商订单列表 collection
* */
Provider getBillListByProviderId(@Param("id")Integer providerId);
}
mapper:
<?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 namespace="cn.smbms.dao.provider.ProviderMapper">
<!-- 查询供应商表记录数 -->
<select id="count" resultType="int">
select count(1) as count
from smbms_provider
</select>
<!-- 查询供应商列表 -->
<select id="getProviderList" resultType="cn.smbms.pojo.Provider">
select *
from smbms_provider
</select>
<!-- 根据供应商名称查询供应商列表(模糊查询) -->
<select id="getProviderListByProName" resultType="cn.smbms.pojo.Provider" parameterType="String">
select *
from smbms_provider
where proName like CONCAT('%', #{proName}, '%')
</select>
<!-- 增加供应商 -->
<insert id="insert" parameterType="Provider">
insert into smbms_provider (proCode, proName, proDesc, proContact, proPhone,
proAddress, proFax, createdBy, creationDate)
values (#{proCode}, #{proName}, #{proDesc}, #{proContact}, #{proPhone}, #{proAddress},
#{proFax}, #{createdBy}, #{creationDate})
</insert>
<!-- 修改供应商信息 -->
<update id="update" parameterType="Provider">
update smbms_provider
set proCode=#{proCode},
proName=#{proName},
proDesc=#{proDesc},
proContact=#{proContact},
proPhone=#{proPhone},
proAddress=#{proAddress},
proFax=#{proFax},
modifyBy=#{modifyBy},
modifyDate=#{modifyDate}
where id = #{id}
</update>
<!-- 根据供应商ID删除供应商信息 -->
<delete id="delete" parameterType="Integer">
delete
from smbms_provider
where id = #{id}
</delete>
<!--获取指定供应商订单列表 collection-->
<resultMap id="providerBillResult" type="Provider">
<id property="id" column="id"/>
<result property="proCode" column="proCode"/>
<result property="proName" column="proName"/>
<result property="proContact" column="proContact"/>
<result property="proPhone" column="proPhone"/>
<collection property="billList" ofType="Bill" resultMap="billResult"/>
</resultMap>
<resultMap id="billResult" type="Bill">
<id property="id" column="b_id"/>
<result property="billCode" column="billCode"/>
<result property="productName" column="productName"/>
<result property="totalPrice" column="totalPrice"/>
<result property="isPayment" column="isPayment"/>
</resultMap>
<select id="getBillListByProviderId" resultMap="providerBillResult" parameterType="int">
select p.*, b.id as b_id, b.billCode, b.productName, b.totalPrice, b.isPayment
from smbms_provider p
left join smbms_bill b on b.providerId = p.id
where p.id=#{id}
</select>
</mapper>