MyBatis--注解开发
MyBatis注解开发
MyBatis常用注解
将映射文件替换为注解:
public interface UserMapper {
@Insert("insert into user value (...)")
public void save(User user);
@Update("")
public List<User> findAll();
}
其他delete,select等注解类似
之后将之前核心配置文件中的加载映射文件代码换成:
<mappers>
<!-- 指定接口所在包-->
<package name="com.xxx.Mapper"/>
</mappers>
复杂查询:
一对一:
方法一
@Insert("insert into user value (...)")
@Results({
@Result(column = "oid",property = "id")
@Result(column = "oid",property = "id")
@Result(column = "oid",property = "id")
})
public void save(User user);
方法二
@Select("select * from orders ")
@Results({
@Result(column = "oid",property = "id"),
@Result(column = "oid",property = "id"),
@Result(column = "oid",property = "id"),
@Result(
property = "user",//要封装的属性名称
column = "uid",//根据那个字段来查询另外一个表数据
javaType = User.class,//要封装的实体类型
//select属性代表那个接口方法获得数据,findById是我们写好的一个带select注解的接口方法用来查询id相同的
one=@One(select = "com.xxx.mapper.UserMapper.findById")
)
})
public void save(User user);
一对多:
@Select("select * from user ")
@Results({
@Result(id = true, column = "id", property = "id"),
@Result(column = "oid", property = "id"),
@Result(column = "oid", property = "id"),
@Result(property = "orderList",
column = "id",
javaType = List.class,
many = @Many(select = "com.xxx.mapper.findById")
)
})
public void save(User user);
多对多:
@Select("select * from user ")
@Results({
@Result(id = true, column = "id", property = "id"),
@Result(column = "username", property = "username"),
@Result(column = "password", property = "password"),
@Result(property = "roleList",
column = "id",
javaType = List.class,
many = @Many(select = "com.xxx.mapper.findByUid")
)
})
public void save(User user);
@Select("select * from sys_user_role ur,sys_role r where ur.roleId=r.id And ur.userId=#{uid")
public void findByUid(User user);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构