首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

mybatis mysql模糊查询

基础概念

MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs (Plain Old Java Objects, 普通的 Java 对象) 映射成数据库中的记录。

MySQL 是一个关系型数据库管理系统,广泛用于 Web 应用程序。在 MySQL 中,模糊查询通常使用 LIKE 关键字来实现。

相关优势

  1. 简化代码:MyBatis 自动处理 JDBC 代码,减少了手动编写和维护的工作量。
  2. 灵活性:可以通过 XML 或注解灵活地编写 SQL 语句。
  3. 性能:MyBatis 可以缓存 SQL 语句,提高查询效率。
  4. 安全性:MyBatis 提供了防止 SQL 注入的功能。

类型

MyBatis 中的模糊查询主要有以下几种类型:

  1. 使用 %_
    • % 表示任意数量的字符。
    • _ 表示单个字符。

应用场景

模糊查询广泛应用于需要根据部分信息进行搜索的场景,例如:

  • 用户名搜索
  • 商品名称搜索
  • 地址搜索等

示例代码

假设我们有一个 User 表,包含 id, username, email 等字段,现在我们需要根据用户名进行模糊查询。

XML 配置

代码语言:txt
复制
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectByUsername" resultType="com.example.model.User">
        SELECT * FROM User WHERE username LIKE CONCAT('%', #{username}, '%')
    </select>
</mapper>

Java 代码

代码语言:txt
复制
// UserMapper.java
public interface UserMapper {
    List<User> selectByUsername(String username);
}
代码语言:txt
复制
// UserService.java
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public List<User> searchUsersByUsername(String username) {
        return userMapper.selectByUsername(username);
    }
}

常见问题及解决方法

1. 模糊查询效率低

原因:模糊查询通常会导致全表扫描,特别是在数据量较大的情况下。

解决方法

  • 使用索引:在 username 字段上创建索引。
  • 使用全文索引(如果适用)。
代码语言:txt
复制
CREATE INDEX idx_username ON User(username);

2. SQL 注入

原因:直接拼接用户输入可能导致 SQL 注入。

解决方法

  • 使用 MyBatis 的预编译语句,避免直接拼接。
代码语言:txt
复制
<select id="selectByUsername" resultType="com.example.model.User">
    SELECT * FROM User WHERE username LIKE CONCAT('%', #{username}, '%')
</select>

参考链接

通过以上内容,你应该对 MyBatis 和 MySQL 的模糊查询有了全面的了解,并且知道如何在实际应用中解决常见问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • mybatis学习笔记之基础框架(2)

    mybatis学习笔记之基础框架(2) mybatis是一个持久层的框架,是apache下的顶级项目。 mybatis让程序将主要精力放在sql上,通过mybatis提供的映射方式,自由灵活生成满足sql语句 mybatis可将向prparedStatement中的输入参数自动进行输入映射,将查询结果集灵活映射成java对象。(输出映射) SqlMapConfig.xml(是mybatis的全局配置文件,名称不固定) 配置了数据源/事务等mybatis运行环境 配置映射文件(配置sql语句) mapper.xml(映射文件)/mapper.xml/mapper.xml SqlSessionFactory(会话工厂) 作用:创建SqlSesion SqlSession(会话,是一个接口,面向用户程序员的接口) 作用:操作数据库(发出sql增删改查) Executor(执行器,是一个接口(基本执行器/缓存执行器)) 作用:SqlSes内部通过执行器操作数据库

    03
    领券