MyBatis中的常用注解是简化配置和映射过程的有力工具,旨在减少XML配置的使用,使代码更加简洁和易于管理,下面将详细介绍这些常用注解:
1、@Select
作用:标记查询语句,该注解用于接口方法上,以指定SQL查询语句。
示例:
“`java
@Select("SELECT * FROM users WHERE id = #{id}")
User getUserById(@Param("id") Long id);
“`
2、@Insert
作用:标记插入语句,用于接口方法上,指定要执行的SQL插入语句。
示例:
“`java
@Insert("INSERT INTO users(name, age) VALUES(#{name}, #{age})")
int addUser(User user);
“`
3、@Update
作用:标记更新语句,此注解用于接口方法,用以指定SQL更新语句。
示例:
“`java
@Update("UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}")
int updateUser(User user);
“`
4、@Delete
作用:标记删除语句,此注解用于接口方法,定义了SQL删除语句。
示例:
“`java
@Delete("DELETE FROM users WHERE id = #{id}")
int deleteUserById(@Param("id") Long id);
“`
5、@Results
作用:用于指定多个@Result注解,通常与@Select注解一起使用来映射结果集。
示例:
“`java
@Select("SELECT * FROM users WHERE id = #{id}")
@Results(id = "userResultMap", value = {
@Result(property = "id", column = "id"),
@Result(property = "name", column = "name"),
@Result(property = "age", column = "age")})
User getUserById(@Param("id") Long id);
“`
6、@Result
作用:用于指定查询结果集的映射关系,通常与@Results一起使用。
示例:
“`java
@Result(property = "id", column = "id"),
@Result(property = "name", column = "name"),
@Result(property = "age", column = "age")
“`
7、@ResultMap
作用:用于指定查询结果集的映射关系,可以引用@Results定义的封装。
8、@Mapper
作用:用于标注数据访问接口,以便框架识别并生成实现代理。
示例:
“`java
@Mapper
public interface UserMapper {
User selectById(Integer id);
}
“`
9、@MapperScan
作用:用于自动扫描并注册Mapper接口。
示例:
“`java
@SpringBootApplication
@MapperScan("com.tian.mybatis.mapper")
public class Application {
}
“`
10、@Options
作用:提供了对插入操作中主键生成策略的设置。
示例:
“`java
@Options(useGeneratedKeys = true, keyProperty = "id")
@Insert("INSERT INTO t_user (username, passwd) VALUES (#{username}, #{passwd})")
int addUserGeneratedKey(User user);
“`
11、@SelectProvider
作用:允许动态生成SQL语句。
12、@CacheNamespace
作用:用于开启二级缓存支持。
除了上述常用注解外,MyBatis还支持其他注解如@One
、@Many
等,用于处理复杂关系映射,在实际应用中,根据需要选择适合的注解来简化开发流程是很有益的。
MyBatis的注解提供了一种便捷的方式来进行数据库操作的配置和映射,使得项目结构更为简洁,代码更加清晰,在使用注解时,建议结合实际项目需求和团队的开发习惯,选择最佳的实践方式。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/779983.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复