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

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

首先第一步搭建Mybaitsi框架

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

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url"  value="jdbc:mysql://localhost:3306/ZLS?characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123"/>
            </dataSource>
        </environment>
    </environments>
</configuration>
<!--注意,这里需要改成自己的数据库即可-->

3.如图所示:在这里插入图片描述

如何使用一对一

  1. 首先我们新建需要使用的一对一的表(这里我使用的是人和身份证)
  2. 实体类建好之后,再建实体类的映射文件,我们需要把头部cp到映射文件里:
<?xml version="1.0" encoding="UTF-8" ?>:`<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zl.mode.mapper.UserMapper">

</mapper>
  1. 如图所示:
    注意这里如需使用接口,则写上接口路径即可如果没有则随便写即可
    在这里插入图片描述
    4.在此处编写sql语句即可访问数据库里的数据,如selecct,update,delete,insert。 parameterType=参数类型,resultType=返回类型。
    在这里插入图片描述
    5.下面我们进行测试是否能成功访问
    在这里插入图片描述
    通过简单打印输出可以看出,我们已经成功访问到数据库里面的数据,下面我们开 始一对一的使用

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

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

    如图所示:
    在这里插入图片描述
    在这里插入图片描述
    通过测试可以可以看出,我们已完成简单的一对一的关系了,如果需要通过人查找人的信息和对应的身份证信息,将步骤4反过来使用即可。

如何使用一对多

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

作者和书的Mode(Book=书,Zuoze=作者):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
和一对一差不多,只是将association替换成collection。sql语句理解为:作者表连接书籍表,通过zid关联其条件为zid=传过来作者的zid
我们进行测试:
在这里插入图片描述
通过输出结果可以看出,我们得到作者的信息时同时也得到该作者的所有书籍,这便是一对多,如果我们需要通过书籍查找该作者,则和一对一相似。

如何使用多对多

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值