JavaWeb:MyBatis(5)查询所有、结果映射

1.编写接口方法: Mapper接口

参数:无

结果: List<Brand>

List<Brand>selectAll();
public interface BrandMapper {
   /*
   查询所有
    */
    public List<Brand> selectAll();
}

2.编写SQL语句: SQL映射文件:

<select id="selectAll" resultType="brand">
    select * from tb_brand;
</select>
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
namespace:名称空间
-->
<mapper namespace="com.zxl.mapper.BrandMapper">

    <!--
    数据库表的字段名称和实体类的属性名称不一样,则不能自动封装
        1.起别名:对不一样的列名起别名,让别名和实体类的属性名一样
            缺点:每次查询都要定义一次别名
                sql片段来解决
                    缺点:不灵活
        2.resultMap
            1.定义<resultMap>标签
            2.在<select>标签中,使用resultMap属性替换resultType属性

    -->
    <!--
        id:唯一标识
        type:映射的类型,支持别名
    -->
    <resultMap id="brandResultMap" type="brand">
        <!--
            id:完成主键字段的映射
                column:表的列名
                property:实体类的属性名
            result:完成一般字段的映射
                column:表的列名
                property:实体类的属性名
        -->
        <result column="brand_name" property="brandName"/>
        <result column="company_name" property="companyName"/>
    </resultMap>
    <select id="selectAll" resultMap="brandResultMap">
        select *
        from tb_brand;
    </select>
    <!--
        sql片段
    -->
    <!--<sql id="brand_column">
        id,brand_name as brandName,company_name as companyName,ordered,description,status
    </sql>
    <select id="selectAll" resultType="Brand">
        select
            <include refid="brand_column"></include>
        from tb_brand;
    </select>-->
    <!--<select id="selectAll" resultType="Brand">
        select * from tb_brand;
    </select>-->
</mapper>

3.执行方法,测试

public class MyBatisTest {
    @Test
    public void testSelectAll()throws Exception{
        //1.加载mybatis的核心配置文件,获取SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);


        //2.获取SqlSession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //3.获取Mapper接口的代理对象
        BrandMapper brandMapper = sqlSession.getMapper(BrandMapper.class);

        //4.执行方法
        List<Brand> brands = brandMapper.selectAll();
        System.out.println(brands);

        //5.释放资源
        sqlSession.close();
    }

}

4.总结

MyBatis完成操作需要几步?

三步:编写接口方法-->编写SQL -->执行方法

数据库表的字段名称和实体类的属性名称不一样,则不能自动封装

1.起别名:对不一样的列名起别名,让别名和实体类的属性名一样

缺点:每次查询都要定义一次别名

sql片段来解决

缺点:不灵活

2.resultMap:定义<resultMap>标签、在<select>标签中,使用resultMap属性替换resultType属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值