MyBatis MySQL模糊查询的实现

概述

本文将教会刚入行的小白如何使用MyBatis实现MySQL的模糊查询。我们将通过以下流程,逐步引导他完成这一任务:

  1. 创建数据库表
  2. 配置MyBatis
  3. 编写Mapper接口
  4. 编写Mapper XML配置文件
  5. 编写查询逻辑

1. 创建数据库表

首先,我们需要创建一个用于演示的数据库表。假设我们要实现对用户信息进行模糊查询,创建一个名为"users"的表,包含以下字段:

字段名 类型
id INT
username VARCHAR
email VARCHAR

2. 配置MyBatis

在开始编写代码之前,我们需要配置MyBatis。首先,我们需要在项目中引入MyBatis的依赖,可以通过maven或者gradle进行配置。以下是一个示例的Maven依赖配置:

<dependencies>
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>
    <!-- 其他依赖 -->
</dependencies>

接下来,我们需要创建一个名为"mybatis-config.xml"的配置文件,并在其中配置MyBatis的相关信息。以下是一个示例配置文件的内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis_demo"/>
                <property name="username" value="root"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- TODO: 添加Mapper接口的映射配置 -->
    </mappers>
</configuration>

在以上示例中,我们配置了数据库连接信息,包括数据库驱动、URL、用户名和密码。你需要根据实际情况进行相应的修改。

3. 编写Mapper接口

接下来,我们需要创建一个Mapper接口,用于定义数据库操作的方法。在本例中,我们创建一个名为"UserMapper"的接口,包含一个模糊查询的方法。以下是示例代码:

public interface UserMapper {
    List<User> searchUsers(String keyword);
}

在以上示例中,我们定义了一个名为"searchUsers"的方法,该方法接收一个字符串参数"keyword",用于指定查询的关键词。方法返回一个User对象列表。

4. 编写Mapper XML配置文件

接下来,我们需要为Mapper接口编写XML配置文件,用于实现具体的SQL查询逻辑。在本例中,我们创建一个名为"UserMapper.xml"的配置文件,并在其中编写模糊查询的SQL语句。以下是示例代码:

<?xml version="1.0" encoding="UTF-8"?>
<mapper namespace="com.example.mapper.UserMapper">
    <select id="searchUsers" parameterType="String" resultType="com.example.model.User">
        SELECT * FROM users
        WHERE username LIKE CONCAT('%', #{keyword}, '%')
        OR email LIKE CONCAT('%', #{keyword}, '%')
    </select>
</mapper>

在以上示例中,我们使用了SQL的LIKE关键字进行模糊查询,通过CONCAT函数将查询关键词与通配符进行拼接。你可以根据实际需求修改查询的条件。

5. 编写查询逻辑

最后,我们需要编写查询逻辑,调用Mapper接口中的方法执行模糊查询操作。以下是一个示例代码:

public class UserService {
    private SqlSessionFactory sqlSessionFactory;

    public UserService() {
        // 初始化SqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }

    public List<User> searchUsers(String keyword) {
        try (SqlSession session = sqlSessionFactory.openSession()) {
            UserMapper userMapper = session.getMapper(UserMapper.class