大部分现实应用中我们并不需要把数据库中的整行数据都拉出来, 所以要做扩展结果集
笔记: 在实际项目过程中, 先用逆向工程自动生成, 然后再做扩展结果集来满足大部分的现实需要
本节内容应该注意扩展结果集的命名方式
创建一个扩展类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 mapper PUBLIC "-//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_shop where `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知识点
如果父类实现了某接口,子类也会继承接口的实现