JavaWeb-- MyBatis 完成映射以及属性名与字段名不相同导致的查找数据为空的bug 查找所有

JavaWeb-- MyBatis

MyBatis官网

MyBatis 核心文件配置

遵守标签顺序

在这里插入图片描述

environments环境变量

encironments: 配置数据库连接环境信息,可以配置多个encironment(数据源),通过fefault属性调用不同的encironment

typeAllases
<!--    别名代替包名找到里面的类-->
<typeAliases>
<!--   将pojo下所有文件起的别名 即各自的类名且不再区分大小写 -->
    <package name="com.itheima.pojo"/>
</typeAliases>

配置文件完成增删改查

需要完成的功能
在这里插入图片描述

插件MybatisX

在这里插入图片描述

提高效率的原因加速啦SQL与Mapper的映射速度

1.查询所有的数据

在这里插入图片描述

1.编写Mapper

在这里插入图片描述

2. 编写SQL映射文件(直接复制之前的)

在这里插入图片描述

3.执行
 public void testSelectAll() throws IOException {
        // 1. 获取SqlSession对象
       /* String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);*/
        String resource = "mybatis-config.xml";
        InputStream resourceAsStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        // 2.获取 SqlSess 对象 用她来执行sql语句
        SqlSession sqlSession = sessionFactory.openSession();
        // 3.通过SqlSession获取Mapper接口的代理对象
        BrandMapper mapper = sqlSession.getMapper(BrandMapper.class);
        // 4. 通过mapper对象执行BrandMapper.class里面的方法
        List<Brand> brands = mapper.selectAll();
        System.out.println(brands);
        // 5.释放资源
        sqlSession.close();
    }
4.运行结果

在这里插入图片描述

因为java里面采用的时驼峰的方式和数据库内部的 _方式不同所以会出现查询的某些为null。

解决方案
1.起别名
在这里插入图片描述
1.2 sql片端

   <!--   数据路里面的字段名称和实体类的属性不一样无法自动封装
        * 起别名:将数据库的属性名起别名为属性名
           *缺点:每次都需要写特别长的代码
             * sql片段
        *
    -->
    <sql id="brand_colum">id
    , brand_name as brandName, company_name as companyName, ordered, description, status</sql>
    <select id="selectAll" resultType="Brand">
        select
        <include refid="brand_colum"/>
        from tb_brand;
    </select>

2.resultMap

 <!-- *resultMap
    *1.创建映射与package里面的brand形成映射,设置里面的属性<id>主键 <result> 一般属性 类似于做了一个属性与字段之间的映射
    *2.<select>里面的resultType改为resultMap-->
    <resultMap id="brandResultMap" type="brand">
        <!--   主键的映射     <id></id>-->
        <result column="brand_name" property="brandName"/>
        <result column="company_name" property="companyName"/>
    </resultMap>
    <select id="selectAll" resultMap="brandResultMap">
        select *
        from tb_brand;
    </select>

运行结果
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值