IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系

IntelliJ IDEA中Mybatis的一对一,一对多和多对多

首先第一步搭建Mybaitsi框架

1.在resources包中新建Mybatis.xml文件。
2.将头部cp到Mybatis里面。




    
        
            
            
                
                
                
                
            
        
    


3.如图所示:IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第1张图片

如何使用一对一

  1. 首先我们新建需要使用的一对一的表(这里我使用的是人和身份证)
  2. 实体类建好之后,再建实体类的映射文件,我们需要把头部cp到映射文件里:
:`




  1. 如图所示:
    注意这里如需使用接口,则写上接口路径即可如果没有则随便写即可
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第2张图片
    4.在此处编写sql语句即可访问数据库里的数据,如selecct,update,delete,insert。 parameterType=参数类型,resultType=返回类型。
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第3张图片
    5.下面我们进行测试是否能成功访问
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第4张图片
    通过简单打印输出可以看出,我们已经成功访问到数据库里面的数据,下面我们开 始一对一的使用

  2. 一个人只能拥有一张身份证,一张身份证只能属于一个人的。我需要通过身份证查询到这个人的身份证信息。如果直接查询身份证,则只能返回身份证的信息,不能返回人的信息,所以我们需要自定义一个返回结果集,在身份证的返回结果中加入人的信息 这里我们则需使用到resultMap(自定义放回结果集)。
    如图所示:
    人和身份证的Mode(A_1=身份证,B_2=人):
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第5张图片IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第6张图片
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第7张图片
    我们要求查询身份证信息的同时需要查询对应人的信息,所以我们需要定义一个resultMap,再连表查询出身份证和人的信息,则返回的是我们定义好的resultMap。

  3. 编写好之后我们进行测试:

    如图所示:
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第8张图片
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第9张图片
    通过测试可以可以看出,我们已完成简单的一对一的关系了,如果需要通过人查找人的信息和对应的身份证信息,将步骤4反过来使用即可。

如何使用一对多

1.一对多和一对一区别不是很大,我们只需将自己定义的resultMap中association(可以理解为一个对象)替换成collection(可以理解为多个对象)即可。我们举个例子,一位作者可以拥有多本书,一本书只能有一位作者。我要找到某位作者的所有书籍。这里我们可以这样:

作者和书的Mode(Book=书,Zuoze=作者):
IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第10张图片
IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第11张图片
IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第12张图片
和一对一差不多,只是将association替换成collection。sql语句理解为:作者表连接书籍表,通过zid关联其条件为zid=传过来作者的zid
我们进行测试:
IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第13张图片
通过输出结果可以看出,我们得到作者的信息时同时也得到该作者的所有书籍,这便是一对多,如果我们需要通过书籍查找该作者,则和一对一相似。

如何使用多对多

  1. 通过一对多可以看到,多的一方需要将association替换成collection即可,但是多对多需要第三方表,而我们就需要加一条第三方表的查询。举个例子,学生和老师,一名学生有多位老师一位老师有多名学生,我要通过老师ID查询老师姓名统计老师所有的学生,并且找到该老师所有学生的姓名。可以这样做:
    Mode(Student=学生类,Teacher=老师类)
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第14张图片
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第15张图片
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第16张图片
    这里我们可以看到,通过老师ID查询学生所有信息时,学生表是连接第三发表而条件是老师的ID=传过来老师的ID。再看自定义resultMap,其中collection属性select直接使用Xs这条方法 再column=老师的ID。根据老师ID查询所有信息将自定义的ResultMap写上即可。
    2.将Mybatis.xml配置好映射文件和别名。
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第17张图片
    3.进行测试:
    IntelliJ IDEA中搭建 Mybatis并建立一对一,一对多和多对多关系_第18张图片
    测试结果可以看出,运行结果没问题。这就是多对多,需要查询全部老师和老师的学生,则需要将学生的映射文件写好(和老师一样,只需把老师的换成学生即可),测试的时候forEach老师的集合得到学生的集合,再forEach学生集合即可,这就是多对多。
    ------初次写博客,望各位前辈多多指教?,快过年了,祝大家新年快乐,身体健康!

你可能感兴趣的:(Mybatis)