zoukankan      html  css  js  c++  java
  • mybatis初步学习应用

    1.描述这个技术是做什么?学习该技术的原因,技术的难点在哪里。

    mybatis是一个基于Java的持久层框架,是用于数据库操作的一种ORM框架,学习该技术的原因是用于提高开发效率,并使开发更加对象化,难点对我来说主要是从未接触过该类框架基本就是小白一个。

    2.描述你是如何实现和使用该技术的。

    • 首先就是配置好相关数据库账号密码等,然后使用IDEA中的mybatis generator插件进行生成相关model和mapper等,使用的时候直接实例化一个mapper类使用插件帮我们生成的mapper相关的xml文件进行简单基础的单表数据库操作。流程图如下:
    • 插件生成的文件中,其中model类文件对应的是数据库中的表,类成员变量对应的是表中的属性,插件生成的mapper类有着分丰富的功能,例如下图中我实例化了一个社团创建申请model,然后将其成员变量设置好之后使用Autowired的对应mapper类对象clubCreateApplyMapper进行数据库插入操作
    • 如果查询时需要一些限制条件,可以使用对应的example文件进行条件的添加,例如下图中
    example2.createCriteria().andNameEqualTo(clubsCreationsParam.getClubName())
               .andDeleteStatusEqualTo(DeleteStateEnum.Existence.getValue());
    

    在createCriteria()之后可以加上andxxx(属性名)EqualTo或者andxxxBetween,andxxxIn,andxxxGreaterThan等等条件然后使用该example作为select方法的参数就可以按照自己想要的条件查询到数据

    3.技术使用中遇到的问题和解决过程。

    遇到最大的问题其实就是使用生成的文件进行单表操作十分方便但是多表连接查询就不方便了,如果需要返回的类的数据结构和数据库的表的数据结构不太一样可能就要自己去手动创建LinkedHashMap来作为返回的参数就很麻烦,之后学着组长手写的DAO文件和相关xml文件自己摸索出了多表连接查询更加合适的方法,例如团队项目中返回解散社团申请列表中就是用自己手写xml的方法不仅解决了手动创建数据结构的麻烦还加上了多条件组合查询的功能,过程如下:

    • 首先由于接口文件要求的返回参数和数据库对应表的数据结构不太一样,因为表中有的地方使用了外键,所以首先使用一个很方便的插件gson,用接口文档中的返回json样例生成对应的返回DTO类用于存放返回前端的数据
    • 然后手写一个DAO文件如下,参数为多条件查询类,类中成员变量即是用来查询的参数,原则上返回什么数据就可以用什么数据作为条件之一进行查询
    • 接下来就是最关键的一步,编写相关xml文件如下:

    • namespace即使该xml文件对应的DAO文件,resultmap部分即使按照之前创建的DTO类编写,select部分的id即使DAO类的函数名,resultmap即为前面写的resultmap标签的id,然后编写相关sql语句,在where后面加上if标签用于多条件查询,其中queryParam即是之前编写的DAO类中函数的参数
    • 最终使用查询参数类作为参数在业务中调用该DAO文件中的相关函数,因为resultmap是按照返回数据DTO类写的所以使用该DTO存放返回的结果映射数据

    4.总结

    其实就是非常简单入门的操作,但是因为之前就是怕自己学不会就会给自己一种这个很难的感觉,其实没必要,一定要敢于走出那一步不然自己永远不能进步,这个手写xml的技术学会了之后就发现在使用多表连接查询时这样做有多方便,也算是尝到了甜头,所以说还是要敢于学习新知识不能原地踏步。

    5.参考文献、参考博客

    无,主要是参考组长手写的单表查询xml文件,知道了namespace,resultmap等要如何使用然后自己进行模仿和进一步的摸索

  • 相关阅读:
    自定义长时间定时器对象
    poj1326
    poj1323
    poj1218
    poj1298
    poj1276
    新年的第一场雪
    Java 语言学习总结
    假使时光能够倒转
    为了回家——春运3日战纪实
  • 原文地址:https://www.cnblogs.com/yz221701430/p/13184431.html
Copyright © 2011-2022 走看看