温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java mybatis怎么用注解开发

发布时间:2026-09-02 18:41:16 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

MyBatis 中,使用注解开发可以省去 XML 映射文件,直接在 Mapper 接口上用注解写 SQL。下面从 基础用法 → 常用注解 → 示例 → 注意事项 给你讲清楚。


一、基本使用步骤

1️⃣ 创建 Mapper 接口

不需要写实现类,MyBatis 会自动生成代理对象。

@Mapper
public interface UserMapper {

    @Select("SELECT * FROM user WHERE id = #{id}")
    User getUserById(Integer id);
}

如果是 Spring Boot,@Mapper@MapperScan 二选一即可。


2️⃣ 在 Spring Boot 中扫描 Mapper

@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

二、常用注解汇总

注解 作用
@Select 查询
@Insert 插入
@Update 更新
@Delete 删除
@Param 指定参数名
@Results 结果映射
@Result 字段映射
@SelectProvider 动态 SQL

三、CRUD 示例

1️⃣ 查询(单参数)

@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(@Param("id") Integer id);

2️⃣ 插入(返回自增主键)

@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
@Options(useGeneratedKeys = true, keyProperty = "id")
int insertUser(User user);

3️⃣ 更新

@Update("UPDATE user SET name=#{name} WHERE id=#{id}")
int updateUser(User user);

4️⃣ 删除

@Delete("DELETE FROM user WHERE id = #{id}")
int deleteUser(Integer id);

四、结果映射(字段不一致)

方式一:@Results

@Select("SELECT id, user_name FROM user")
@Results({
    @Result(column = "user_name", property = "userName")
})
List<User> listUsers();

方式二:开启驼峰自动映射(推荐)

mybatis:
  configuration:
    map-underscore-to-camel-case: true
@Select("SELECT * FROM user")
List<User> listUsers();

五、多参数用法

@Select("SELECT * FROM user WHERE name=#{name} AND age=#{age}")
User getUser(@Param("name") String name, @Param("age") Integer age);

六、动态 SQL(复杂情况)

使用 @SelectProvider

@SelectProvider(type = UserSqlProvider.class, method = "findUser")
List<User> findUser(String name);
public class UserSqlProvider {
    public String findUser(String name) {
        return "SELECT * FROM user WHERE name = '" + name + "'";
    }
}

⚠️ 动态 SQL 复杂时,建议仍用 XML


七、注解 vs XML 如何选择?

适合注解

  • SQL 简单
  • CRUD 少
  • 快速开发

不适合注解

  • 复杂动态 SQL
  • 多表关联
  • SQL 很长

八、总结一句话

MyBatis 注解 = Mapper 接口 + SQL 注解,适合简单 SQL;复杂 SQL 用 XML 更清晰。

如果你愿意,我可以:

  • 给你一个 完整 Spring Boot + MyBatis 注解 Demo
  • 或对比 注解 vs XML 实战案例
  • 或讲 MyBatis-Plus 注解方式

你想看哪个?

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI