阶段性总结—MyBatis

MyBatis框架

官方文档地址: https://mybatis.org/

什么是框架

? 框架类似于脚手架,建筑时候帮助你更快的完成建造任务,单纯的框架不能用来当房子用,但是辅助盖楼也是很有必要的,能够节省更多的时间。另一种说法就是框架提供了一系列的模板代码,只需要很少的代码来实现基础功能,最早时候通过JDBC连接数据库,每次都写加载驱动,连接数据库,写SQL语句,执行语句,处理结果集,关闭连接,多麻烦呀,所以框架就提供了一个入口,写上驱动名和相关的参数就能进行SQL操作了。

? 我还有一层理解,就是框架中集成了大量的代码,通过反射等各种方式,对性能有些影响,但是对于后期维护起来更加方便,所以这个问题能难为到我这种强迫症,毕竟现在都是框架横行的时代,不用也不行啊,所以权衡性能和维护难度吧。【这里是我的疑问,大佬可以帮我解答以下】

软件的三层架构

  1. 数据持久化存储层:主要和数据库打交道的
  2. 业务层:主要实现业务功能的
  3. 表现层:与用户进行交互的,并且能与业务层联系

DAO层与业务层联系,业务层与表现层联系,这样的架构应该是目前主流的规范。

MVC设计思想

? 最早我对三层构架和MVC模型总是混淆,MVC是一种设计思想,他们确实有相似的地方,Model 是模型,模型拥有多种处理任务,模型可以对多个视图提供数据,可以有效的减少代码量。View是视图,与前端页面关联最大,一般都是由 页或者是客户端界面组成。Controller是控制器,控制器接收用户请求,并且完成对模型的指向,

MyBatis入门

? MyBatis是一个持久层框架,提供了与数据库交互的方法,能够减少大量代码,主要写一些SQL语句就可以了,通过XML配置,这样维护起来也更加方便了,与代码混淆在一起就会感到很臃肿。

MyBatis依赖

? MyBatis虽然可以操作数据库,但是也需要MySQL的驱动支持,所以在使用MyBatis时,仍要导入MySQL的驱动,以Maven项目为例,依赖如下所示:

MyBatis核心配置

? MyBatis需要一个主配置文件,这个文件中包含了与数据库连接的配置以及映射文件的配置,所以核心配置文件不能丢掉。

核心配置文件标签

在资源目录创建一个数据库连接的配置文件:文件名(db.properties)

核心配置文件中读取上面的配置文件

映射文件

类型的别名

? 就像上面的resultType写的都是全限定名,每次这么写太累了,所以可以给他们起个别名。在核心配置文件中,添加别名标签和属性。如下所示:

? 这样就可以在映射文件中直接使用u来代表我的User类了。

迫不及待的运行

maven提供了测试类,我们可以在测试类中写代码,看一下是否能够执行呢当前没有使用接口方式,只有核心配置文件、映射文件和实体类]

@Testpublic void query() throws IOException {    //alt+enter:补全返回值类型    //读取mybatis的核心配置文件    InputStream stream = Resources.getResourceAsStream("mybatisConfig.xml");  //获取SqlSessionFactory对象    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);    //获取SqlSession对象    SqlSession sqlSession = sqlSessionFactory.openSession();    //args:映射文件中的namespace.操作标签的id值    ListUser> list = sqlSession.selectList("userMapper.selectUser");    //输出结果    list.forEach(System.out::print);    //关闭连接对象    sqlSession.close();}@Testpublic void add() throws IOException {    //读取mybatis的核心配置文件    InputStream stream = Resources.getResourceAsStream("mybatisConfig.xml");    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream);    SqlSession sqlSession = sqlSessionFactory.openSession();    User u=new User();    u

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月1日
下一篇 2021年3月1日

相关推荐