Mybatis持久层框架 | Lombok搭建
创始人
2024-06-02 14:31:55
0

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


Lombok

在这里插入图片描述

Lombok项目是一个java库,它可以自动插入到编辑器和构建工具中,增强java的性能。不需要再写getter、setter或equals方法,只要有一个注解,你的类就有一个功能齐全的构建器、自动记录变量……

使用步骤:

  • IDEA中安装Lombok插件
  • 项目中导入Lombok的jar包
org.projectlomboklombok1.18.24

  • 实体类中添加注解
import lombok.*;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private int id;private String name;private String password;}
  • @Data:无参构造、get/set方法、toString、hashCode、equals
  • @AllArgsConstructor:带参构造方法
  • @NoArgsConstructor:无参构造方法
  • @ToString:toString方法
  • @EqualsAndHashCode:equals和hashCode方法
  • @Getter:get方法
  • @Setter:set方法

复杂查询环境搭建

  • 导入lombok
org.projectlomboklombok1.18.24

  • 新建实体类Teacher、Student

Teacher类

package com.wei.pojo;import lombok.Data;@Data
public class Teacher {private int id;private String name;//学生关联一个老师private Teacher teacher;
}

Student类

package com.wei.pojo;import lombok.Data;//多对一
@Data
public class Student {private int id;private String name;//学生需要关联一个老师private Teacher teacher;
}
  • 建立Mapper接口

TeacherMapper接口

package com.wei.dao;import com.wei.pojo.Teacher;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;public interface TeacherMapper {@Select("select * from mybatis_03.teacher where id = #{tid}")Teacher getTeacher(@Param("tid") int id);
}

StudentMapper接口

package com.wei.dao;public interface StudentMapper {}
  • 建立Mapper.xml文件

TeacherMapper.xml




StudentMapper.xml




  • 核心配置文件mybatis-config.xml绑定注册接口



  • 测试
public class MyTest {@Testpublic void test(){//取SqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();//获得TeacherMapper接口类TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);Teacher teacher = mapper.getTeacher(1);System.out.println(teacher);//关闭SqlSession,避免造成内存出现问题sqlSession.close();}
}

多对一处理

环境搭建

  • Student实体类
package com.wei.pojo;import lombok.Data;//多对一
@Data
public class Student {private int id;private String name;//学生需要关联一个老师private Teacher teacher;
}
  • Teacher实体类
package com.wei.pojo;import lombok.Data;@Data
public class Teacher {private int id;private String name;//学生关联一个老师private Teacher teacher;
}

查询嵌套处理

  • Mapper.xml映射文件





  • Test测试类
    @Testpublic void testStudent() {//取SqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();//获得StudentMapper接口类StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);//获取getStudent学生信息List studentList = mapper.getStudent();for (Student student : studentList) {System.out.println(student);}//关闭SqlSession,避免造成内存出现问题sqlSession.close();}
}

结果嵌套查询

  • Mapper.xml映射文件



  • Test测试类
@Test
public void testStudent2() {//取SqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();//获得StudentMapper接口类StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);//获取getStudent学生信息List studentList = mapper.getStudent2();for (Student student : studentList) {System.out.println(student);}//关闭SqlSession,避免造成内存出现问题sqlSession.close();
}

一对多处理

环境搭建

  • Student实体类
package com.wei.pojo;import lombok.Data;//多对一
@Data
public class Student {private int id;private String name;private int tid;
}
  • Teacher实体类
package com.wei.pojo;import lombok.Data;import java.util.List;@Data
public class Teacher {private int id;private String name;//一个老师拥有多个学生private List students;
}

查询嵌套处理

  • StudentMapper类
package com.wei.dao;import com.wei.pojo.Student;import java.util.List;public interface StudentMapper {//查询所有的学生信息,以及对应的老师的信息public List getStudent2();
}
  • TeacherMapper.xml映射文件




  • 测试
@Test
public void test2() {//获取sqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();//获取TeacherMapper接口类TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);Teacher teacher = mapper.getTeacher2(1);System.out.println(teacher);//关闭SqlSession,避免造成内存出现问题sqlSession.close();
}

结果嵌套查询

  • StudentMapper类
package com.wei.dao;import com.wei.pojo.Student;import java.util.List;public interface StudentMapper {//查询所有的学生信息,以及对应的老师的信息public List getStudent();
}
  • TeacherMapper.xml映射文件






  • 测试
public class MyTest {@Testpublic void test() {//获取sqlSession对象SqlSession sqlSession = MybatisUtils.getSqlSession();//获取TeacherMapper接口类TeacherMapper mapper = sqlSession.getMapper(TeacherMapper.class);Teacher teacher = mapper.getTeacher(1);System.out.println(teacher);//关闭SqlSession,避免造成内存出现问题sqlSession.close();}

总结:

collection & association区别:

  • 关联 - association [多对一]
  • 集合 - collection [一对多]

javatype & oftype区别:

  • javatype:指定实体类中属性的类型
  • oftype:指定映射到List或者集合的pojo类型,泛型中的约束类型

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝冲冲冲🤞


在这里插入图片描述

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【Ctfer训练计划】——(三... 作者名:Demo不是emo  主页面链接:主页传送门 创作初心ÿ...