0
点赞
收藏
分享

微信扫一扫

Mybatis实战练习二【查询详情】


目录

  • 💂 个人主页:​​爱吃豆的土豆​​

​​查询详情​​

​​编写接口方法​​

​​编写SQL语句​​

​​编写测试方法​​

​​参数占位符​​

​​parameterType使用​​

​​SQL语句中特殊字段处理​​

查询详情

Mybatis实战练习二【查询详情】_mybatis

有些数据的属性比较多,在页面表格中无法全部实现,而只会显示部分,而其他属性数据的查询可以通过 ​​查看详情​​ 来进行查询,如上图所示。

查看详情功能实现步骤:

  • 编写接口方法:Mapper接口

Mybatis实战练习二【查询详情】_sql语句_02

 

  • 参数:id
    查看详情就是查询某一行数据,所以需要根据id进行查询。而id以后是由页面传递过来。
  • 结果:Brand
    根据id查询出来的数据只要一条,而将一条数据封装成一个Brand对象即可

编写SQL语句:SQL映射文件

Mybatis实战练习二【查询详情】_配置文件_03

  • 执行方法、进行测试

编写接口方法

在 ​​BrandMapper​​ 接口中定义根据id查询数据的方法

/**
* 查看详情:根据Id查询
*/
Brand selectById(int id);

编写SQL语句

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

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

注意:上述SQL中的 #{id}先这样写,一会我们再详细讲解  

编写测试方法

在 ​​test/java​​​ 下的 ​​com.itheima.mapper​​​ 包下的 ​​MybatisTest类中​​ 定义测试方法

@Test
public void testSelectById() throws IOException {
//接收参数,该id以后需要传递过来
int id = 1;

//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();
}

执行测试方法结果如下:

Mybatis实战练习二【查询详情】_sql_04

 

参数占位符

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

mybatis提供了两种参数占位符:

  • #{} :执行SQL时,会将 #{} 占位符替换为?,将来自动设置参数值。从上述例子可以看出使用#{} 底层使用的是​​PreparedStatement​
  • ${} :拼接SQL。底层使用的是​​Statement​​,会存在SQL注入问题。如下图将 映射配置文件中的 #{} 替换成 ${} 来看效果

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

重新运行查看结果如下:

Mybatis实战练习二【查询详情】_配置文件_05

 

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

parameterType使用

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

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

SQL语句中特殊字段处理

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

Mybatis实战练习二【查询详情】_mybatis_06

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

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

Mybatis实战练习二【查询详情】_配置文件_07

 

  • <![CDATA[内容]]>

 

Mybatis实战练习二【查询详情】_mybatis_08

举报

相关推荐

0 条评论