在 MyBatis 中,使用注解开发可以省去 XML 映射文件,直接在 Mapper 接口上用注解写 SQL。下面从 基础用法 → 常用注解 → 示例 → 注意事项 给你讲清楚。
不需要写实现类,MyBatis 会自动生成代理对象。
@Mapper
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(Integer id);
}
如果是 Spring Boot,@Mapper 或 @MapperScan 二选一即可。
@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 |
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(@Param("id") Integer id);
@Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})")
@Options(useGeneratedKeys = true, keyProperty = "id")
int insertUser(User user);
@Update("UPDATE user SET name=#{name} WHERE id=#{id}")
int updateUser(User user);
@Delete("DELETE FROM user WHERE id = #{id}")
int deleteUser(Integer id);
@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);
@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
✅ 适合注解
❌ 不适合注解
MyBatis 注解 = Mapper 接口 + SQL 注解,适合简单 SQL;复杂 SQL 用 XML 更清晰。
如果你愿意,我可以:
你想看哪个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。