Mybatis---配置文件完成增删改查(查询详情)

查看详情功能实现步骤:

  • 编写接口方法:Mapper接口

  • 参数:id

    查看详情就是查询某一行数据,所以需要根据id进行查询。而id以后是由页面传递过来。

  • 结果:Brand

    根据id查询出来的数据只要一条,而将一条数据封装成一个Brand对象即可

编写SQL语句:SQL映射文件

  • 执行方法、进行测试

     编写SQL语句

    在 BrandMapper.xml 映射配置文件中编写 statement,使用 resultMap 而不是使用 resultType

    xml <select id="selectById" resultMap="brandResultMap"> 
    select * 
        from tb_brand where id = #{id}; 
    </select>

    编写测试方法

    查看代码
    
    //1. 获取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. 执行方法
    Brand brand = brandMapper.selectById(id);
    System.out.println(brand);
    
    //5. 释放资源
    sqlSession.close();

 参数占位符

查询到的结果很好理解就是id为1的这行数据。而这里我们需要看控制台显示的SQL语句,能看到使用?进行占位。说明我们在映射配置文件中的写的 #{id} 最终会被?进行占位

  • #{} :执行SQL时,会将 #{} 占位符替换为?,将来自动设置参数值。从上述例子可以看出使用#{} 底层使用的是 PreparedStatement

  • ${} :拼接SQL。底层使用的是 Statement,会存在SQL注入问题。如下图将 映射配置文件中的 #{} 替换成 ${} 来看效果

=注意:==从上面两个例子可以看出,以后开发我们使用 #{} 参数占位符。

使用时机:#{}:参数传递的时候

     ${}:表名或者列名不固定的情况下

 

 parameterType使用
对于有参数的mapper接口方法,我们在映射配置文件中应该配置 ParameterType 来指定参数类型。只不过该属性都可以省略。如下图:

xml <select id="selectById" parameterType="int" resultMap="brandResultMap"> select * from tb_brand where id = ${id}; </select>

SQL语句中特殊字段处理

以后肯定会在SQL语句中写一下特殊字符,比如某一个字段大于某个值,如下图

可以看出报错了,因为映射配置文件是xml类型的问题,而 > < 等这些字符在xml中有特殊含义,所以此时我们需要将这些符号进行转义,可以使用以下两种方式进行转义

  • 转义字符

下图的 &lt; 就是 < 的转义字符

  • <![CDATA[内容]]>        (快捷键是CD加Enter)

posted @ 2022-05-03 09:45  踏上星辰  阅读(46)  评论(0编辑  收藏  举报