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

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

查询详情


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


查看详情功能实现步骤:


编写接口方法:Mapper接口


参数:id


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


结果:Brand


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


编写SQL语句:SQL映射文件

执行方法、进行测试  


编写接口方法

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


执行测试方法结果如下:


参数占位符

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


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


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


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


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

重新运行查看结果如下:  

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


parameterType使用

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


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

SQL语句中特殊字段处理

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

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


转义字符


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


<![CDATA[内容]]>

相关文章
|
4天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
42 0
|
4天前
|
Java 数据库连接 mybatis
Mybatis 多级分类查询
Mybatis 多级分类查询
18 0
|
4天前
|
SQL XML Java
mybatis Mapper的概念与实战
MyBatis 是一个流行的 Java 持久层框架,它提供了对象关系映射(ORM)的功能,使得Java对象和数据库中的表之间的映射变得简单。在MyBatis中,Mapper是一个核心的概念,它定义了映射到数据库操作的接口。简而言之,Mapper 是一个接口,MyBatis 通过这个接口与XML映射文件或者注解绑定,以实现对数据库的操作。
45 1
|
4天前
|
Java 关系型数据库 数据库连接
MyBatis Plus 解决大数据量查询慢问题
MyBatis Plus 解决大数据量查询慢问题
|
4天前
|
SQL Java 关系型数据库
Mybatis多表关联查询与动态SQL(下)
Mybatis多表关联查询与动态SQL
18 0
|
4天前
|
SQL Java 数据库连接
Mybatis多表关联查询与动态SQL(上)
Mybatis多表关联查询与动态SQL
9 0
|
4天前
|
SQL 缓存 Java
mybatis 一对多查询
mybatis 一对多查询
23 0
|
4天前
|
SQL
MyBatis-Plus-Join关联查询
MyBatis-Plus-Join关联查询
|
4天前
|
SQL XML Java
MyBatis-Plus多表关联查询
MyBatis-Plus多表关联查询
|
4天前
|
SQL XML API
Mybatis-Plus实现查询操作
Mybatis-Plus实现查询操作
19 0
Mybatis-Plus实现查询操作