大部分现实应用中我们并不需要把数据库中的整行数据都拉出来, 所以要做扩展结果集
笔记: 在实际项目过程中, 先用逆向工程自动生成, 然后再做扩展结果集来满足大部分的现实需要
本节内容应该注意扩展结果集的命名方式
创建一个扩展类ShopCustom, (这样命名可以和Shop在项目树里面排列在一起)
package io.github.coinsjack.pojo;public class ShopCustom extends Shop {private String shopName;private String shopDesc;public ShopCustom() {} |
创建一个mapper接口 ShopMapperCustom
package io.github.coinsjack.dao;import io.github.coinsjack.pojo.ShopCustom;public interface ShopMapperCustom {ShopCustom getShopById(Integer id);} |
创建对应的映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="io.github.coinsjack.dao.ShopMapperCustom"><cache/> <resultMap id="shopResultMap" type="ShopCustom"><id column="shop_id" property="id" ></id><result column="shop_name" property="shopName"></result><result column="shop_desc" property="shopDesc"/></resultMap><select id="getShopById" parameterType="int" resultMap="shopResultMap" >select `shop_id`, `shop_name`, `shop_desc`from tb_shopwhere `shop_id` = #{id}</select>
</mapper> |
测试
@Test
public void testGetShopByIdCustom() {SqlSession session = MyBatisUtil.getSqlSession();ShopMapperCustom mapper = session.getMapper(ShopMapperCustom.class);System.out.println(mapper.getShopById(29));session.close();
} |
结果
2018-12-29 11:33:32,656 [main] DEBUG [io.github.coinsjack.dao.ShopMapperCustom] - Cache Hit Ratio [io.github.coinsjack.dao.ShopMapperCustom]: 0.0 2018-12-29 11:33:33,128 [main] DEBUG [io.github.coinsjack.dao.ShopMapperCustom.getShopById] - ==> Preparing: select `shop_id`, `shop_name`, `shop_desc` from tb_shop where `shop_id` = ? 2018-12-29 11:33:33,237 [main] DEBUG [io.github.coinsjack.dao.ShopMapperCustom.getShopById] - ==> Parameters: 29(Integer) 2018-12-29 11:33:33,309 [main] DEBUG [io.github.coinsjack.dao.ShopMapperCustom.getShopById] - <== Total: 1 ShopCustom{shopName='暴漫奶茶店', shopDesc='过来喝喝就知道啦,你是我的奶茶'} |
Java知识点
如果父类实现了某接口,子类也会继承接口的实现