@select和@insert是mybatis常用注解,用于替代xml中的和标签;支持单/多参数查询、map返回、主键回填及动态sql等核心功能。

@Select 和 @Insert 是 MyBatis 提供的最常用注解,用于替代 XML 中的 <select></select> 和 <insert></insert> 标签,直接在 Mapper 接口方法上写 SQL,省去 XML 文件。
@Select 查询:支持单条、列表、Map 返回
SQL 语句写在双引号内,参数用 #{xxx} 占位,MyBatis 自动绑定方法参数:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 单个参数(如 int、String)可直接引用:
@Select("SELECT * FROM user WHERE id = #{id}")User selectById(int id); - 多个参数必须用
@Param命名,否则无法识别:@Select("SELECT * FROM user WHERE name = #{name} AND age > #{minAge}")List<user> selectByNameAndAge(@Param("name") String name, @Param("minAge") int minAge);</user> - 返回
Map<string object></string>时,列名自动作为 key:@Select("SELECT id, name, email FROM user LIMIT 1")Map<string object> selectFirstAsMap();</string>
@Insert 插入:注意主键回填
插入语句也用 #{xxx} 绑定参数,但若需获取数据库生成的自增主键,必须配合 @Options:
- 基础插入(无返回):
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")void insertUser(User user); - 插入并回填主键(推荐):
@Options(useGeneratedKeys = true, keyProperty = "id")@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")void insertUser(User user);
执行后,user.getId()就能拿到刚插入的自增 ID。 - 插入并返回影响行数(判断是否成功):
int insertUser(User user);—— 方法返回int,值为插入行数(通常为 1)。
其他配套注解要留意
实际开发中常搭配使用,避免遗漏关键逻辑:
-
@Results + @Result:当字段名和属性名不一致(如数据库列user_name对应 Java 属性userName),需显式映射:@Results({ @Result(property = "userName", column = "user_name") }) -
@SelectProvider:SQL 复杂或动态条件多时,不建议硬写字符串,改用 Provider 类动态拼接(比如带条件的搜索)。 - 所有注解方法必须定义在
@Mapper接口里,且接口需被 Spring 扫描到(如加@MapperScan或@Mapper注解)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










