@Results用法总结,MyBatis中使用@Results注解将查询结果集映射到实体类属性

本文介绍了MyBatis中@Results、@ResultMap、@One和@Many注解的用法,详细阐述了如何在数据库字段名与实体类属性名不一致时进行映射,以及如何处理一对一和一对多的关系映射,同时提到了传递多个参数查询的方法。
摘要由CSDN通过智能技术生成

MyBatis中使用@Results注解来映射查询结果集到实体类属性。

MyBatis中使用@Results注解来映射查询结果集到实体类属性。

(1)@Results的基本用法。当数据库字段名与实体类对应的属性名不一致时,可以使用@Results映射来将其对应起来。column为数据库字段名,porperty为实体类属性名,jdbcType为数据库字段数据类型,id为是否为主键。

@Select({"select id, name, class_id from my_student"})
@Results({
@Result(column="id", property="id", jdbcType=JdbcType.INTEGER, id=true),
@Result(column="name", property="name", jdbcType=JdbcType.VARCHAR),
@Result(column="class_id", property="classId", jdbcType=JdbcType.INTEGER)
})
List<Student> selectAll();

如上所示的数据库字段名class_id与实体类属性名classId,就通过这种方式建立了映射关系。名字相同的可以省略。

(2)@ResultMap的用法。当这段@Results代码需要在多个方法用到时,为了提高代码复用性,我们可以为这个@Results注解设置id,然后使用@ResultMap注解来复用这段代码。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mybatis是一种基于 Java 的持久层框架,它提供了一种通过注解的方式来进行 SQL 映射的方式,称为 Mybatis 注解映射使用注解映射可以使得代码更加简洁,也更加易于维护。 在 Mybatis 注解主要分为两类:一类是用于描述 SQL 语句的注解,如 @Select、@Insert、@Update、@Delete 等;另一类是用于描述实体类数据库字段之间映射关系的注解,如 @Results、@Result、@Param 等。 下面是一个使用 Mybatis 注解映射进行 CRUD 操作的示例: 1. 实体类 ```java public class User { private int id; private String name; private int age; //省略getter和setter方法 } ``` 2. Mapper 接口 ```java public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User getUserById(int id); @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})") int addUser(User user); @Update("UPDATE user SET name=#{name}, age=#{age} WHERE id=#{id}") int updateUser(User user); @Delete("DELETE FROM user WHERE id=#{id}") int deleteUser(int id); } ``` 3. 配置文件 ```xml <!-- 配置 Mybatis --> <configuration> <!-- 配置 Mapper 接口扫描 --> <mappers> <mapper class="com.example.mapper.UserMapper"/> </mappers> </configuration> ``` 以上代码,@Select、@Insert、@Update、@Delete 注解分别对应查询、插入、更新、删除操作,其 #{} 表示占位符,用于接收参数。同时,Mapper 接口的方法名需要与对应的 SQL 语句名称一致。 除了 SQL 语句的注解外,@Results、@Result、@Param 等注解也可以用于实体类数据库字段之间的映射关系。例如: ```java @Results(id = "userMap", value = { @Result(property = "id", column = "id", id = true), @Result(property = "name", column = "name"), @Result(property = "age", column = "age") }) public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") @ResultMap("userMap") User getUserById(int id); //省略其他方法 } ``` 以上代码,@Results 注解用于定义结果映射规则,@Result 注解用于定义单个属性字段之间的映射关系,@ResultMap 注解用于引用结果映射规则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值