Mybatis使用注解查询
mybatis 查询 注解 使用
2023-09-14 08:57:05 时间
MyBatis使用注解查询主要有两种方式:
一、查询两遍,再进行关联整合,不使用联表查询语句。
1、Mapper文件:
1 @Select("SELECT stu.id, stu.stu_key, stu.stu_no, stu.stu_name, stu.tel, stu.email_add, stu.birthdate, stu.gender, stu.school_id, stu.college_id, stu.major_id, stu.class_id, stu.description, stu.remark, stu.create_date, stu.update_date FROM stu_info stu WHERE stu.stu_key = #{stuKey}") 2 @Results({ 3 4 @Result( 5 //重要:column:关联的外键 property:实体类属性,不是字段,StuInfo里面的 6 column = "school_id",property = "schoolInfo", 7 one = @One(select = "com.ahu.mapper.StuInfoMapper.getSchoolInfo") 8 ) 9 }) 10 StuInfo showCompInfoByStuKey(String stuKey); 11 12 @Select("SELECT school_info.id, school_info.school_id, school_info.school_name, school_info.create_time, school_info.update_time, school_info.remark FROM school_info WHERE school_info.school_id= #{school_info.school_id}") 13 SchoolInfo getSchoolInfo();
2、StuInfo实体类
1 @Data 2 public class StuInfo implements Serializable { 3 4 //@TableId(type = IdType.AUTO) //主键自增 数据库中需要设置主键自增 5 private Integer id; 6 //stuKey作为主键使用,不进行更新操作,所以使用该策略 7 @TableField(updateStrategy = FieldStrategy.NEVER) 8 private String stuKey; 9 private String stuNo; 10 private String stuName; 11 private String password; 12 private String tel; 13 private String emailAdd; 14 /** 15 * @Description: 注解@JsonFormat主要是后台到前台的时间格式的转换 16 * 注解@DataFormAT主要是前后到后台的时间格式的转换 17 */ 18 @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") 19 @DateTimeFormat(pattern = "yyyy-MM-dd") 20 private Date birthdate; 21 private String gender; 22 private String schoolId; 23 private String collegeId; 24 private String majorId; 25 private String classId; 26 private String description; 27 private String remark; 28 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 29 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 30 private Date createDate; 31 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") 32 @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") 33 private Date updateDate; 34 35 //数据库中不存在该字段,使用@TableField注解处理,联表查询使用 36 @TableField(exist = false) 37 private ClassInfo classInfo; 38 @TableField(exist = false) 39 private CollegeInfo collegeInfo; 40 @TableField(exist = false) 41 private MajorInfo majorInfo; 42 @TableField(exist = false) 43 private SchoolInfo schoolInfo; 44 }
二、查询一遍,使用联表查询语句。
1 @Select("SELECT stu.id, stu.stu_key, stu.stu_no, stu.stu_name, stu.tel, stu.email_add, stu.birthdate, stu.gender, stu.school_id, sch.school_name, stu.college_id, col.college_name, stu.major_id, maj.major_name, stu.class_id, cla.class_name, stu.description, stu.remark, stu.create_date, stu.update_date FROM stu_info stu LEFT JOIN school_info sch ON stu.school_id = sch.school_id LEFT JOIN college_info col ON stu.college_id = col.college_id LEFT JOIN major_info maj ON stu.major_id = maj.major_id LEFT JOIN class_info cla ON stu.class_id = cla.class_id WHERE stu.stu_key = #{stuKey}") 2 @Results({ 3 //@Result(column="school_id",property="schoolId"), 4 @Result( 5 //重要:column:关联的外键 property:实体类属性,不是字段,StuInfo stuInfo里面的 6 column = "school_id",property = "schoolInfo.schoolId"), 7 @Result( 8 //主表也要做映射,不然为空null 9 column = "school_id",property = "schoolId"), 10 @Result(column = "school_name",property = "schoolInfo.schoolName"), 11 @Result(column = "college_id",property = "collegeInfo.collegeId"), 12 @Result(column = "college_id",property = "collegeId"), 13 @Result(column = "college_name",property = "collegeInfo.collegeName"), 14 @Result(column = "major_id",property = "majorInfo.majorId"), 15 @Result(column = "major_id",property = "majorId"), 16 @Result(column = "major_name",property = "majorInfo.majorName"), 17 @Result(column = "class_id",property = "classInfo.classId"), 18 @Result(column = "class_id",property = "classId"), 19 @Result(column = "class_name",property = "classInfo.className"), 20 }) 21 StuInfo showCompInfoByStuKey(String stuKey);
参考:
1、https://blog.csdn.net/qq_36228916/article/details/93881786
相关文章
- JavaWeb_(Mybatis框架)动态sql_七
- Mybatis进阶学习笔记——动态代理方式开发Dao接口、Dao层(推荐第二种)
- Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
- Mybatis+mysql动态分页查询数据案例——分页工具类(Page.java)
- Mybatis批量更新数据
- mybatis架构流程
- mybatis 批量添加
- Mybatis 一个搜索框对多个字段进行模糊查询
- 【MyBatis笔记11】Mybatis中的一级缓存和二级缓存
- 【MyBatis笔记05】MyBatis中常见的几种查询结果类型介绍
- 05_SpingBoot 集成MyBatis【逆向工程】
- 【项目实战】MyBatis的映射文件中resultMap标签与parameterType标签的区别探讨
- mybatis和mybatis plus时间范围查询,数据库,sql,查询时间范围
- MyBatis中SQL语句优化小结
- mybatis如何直接 执行传入的任意sql语句 并按照顺序取出查询的结果集
- mybatis框架中的queryWrapper的or查询,联想到MySQL中and 和or的关系
- MyBatis之Hello world(Mybatis入门)
- Mybatis中resultType和resultMap的区别
- Mybatis表关联多对一
- Spring+SpringMVC+Mybatis(开发必备技能)04、mybatis自动生成mapper_dao_model(包含工具与视频讲解) 纯绿色版本、配套使用视频,100%运行成功
- 【mybatis2】MyBatis的执行流程分析