了解了如何使用MyBatis根据客户编号查询客户信息后,接下来讲解下如何根据客户的名称来模糊查询相关的客户信息。
模糊查询的实现非常简单,只需要在映射文件中通过元素编写相应的SQL语句,并通过SqlSession的查询方法执行该SQL即可。其具体实现步骤如下。
(1)在映射文件CustomerMapper.xml中,添加根据客户名模糊查询客户信息列表的SQL语句,具体实现代码如下。
与根据客户编号查询相比,上述配置代码中的属性id、parameterType和SQL语句都发生相应变化。其中,SQL语句中的“${}”用来表示拼接SQL的字符串,即不加解释的原样输出。“${value}”表示要拼接的是简单类型参数。
脚下留心:在使用“${}”进行SQL字符串拼接时,无法防止SQL注入问题。所以想要既能实现模糊查询,又要防止SQL注入,可以对上述映射文件CustomerMapper.xml中模糊查询的select语句进行修改,使用MySQL中的concat()函数进行字符串拼接。具体修改示例如下所示。
(2)在测试类MybatisTest中,添加一个测试方法findCustomerByNameTest(),其代码如下所示。
从上述代码可以看出,findCustomerByNameTest()方法只是在第4步时与根据客户编号查询的测试方法有所不同,其他步骤都一致。在第4步时,由于可能查询出的是多条数据,所以调用的是SqlSession的selectList()方法来查询返回结果的集合对象,并使用for循环输出结果集对象。
使用JUnit4执行findCustomerByNameTest()方法后,控制台的输出结果如图6-10所示。
从图6-10可以看出,使用MyBatis框架已成功查询出了客户表中客户名称中带有“j”的两条客户信息。
至此,MyBatis入门程序的查询功能就已经讲解完成。从上面两个查询方法中可以发现,MyBatis的操作大致可分为以下几个步骤。
(1)读取配置文件。
(2)根据配置文件构建SqlSessionFactory。
(3)通过SqlSessionFactory创建SqlSession。
(4)使用SqlSession对象操作数据库(包括查询、添加、修改、删除以及提交事务等)。
(5)关闭SqlSession。