MyBatis MySQL模糊查询的实现
概述
本文将教会刚入行的小白如何使用MyBatis实现MySQL的模糊查询。我们将通过以下流程,逐步引导他完成这一任务:
- 创建数据库表
- 配置MyBatis
- 编写Mapper接口
- 编写Mapper XML配置文件
- 编写查询逻辑
1. 创建数据库表
首先,我们需要创建一个用于演示的数据库表。假设我们要实现对用户信息进行模糊查询,创建一个名为"users"的表,包含以下字段:
字段名 | 类型 |
---|---|
id | INT |
username | VARCHAR |
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