年轻人的第一个 MyBatis 项目就要这样来学习,不走弯路
之前在我自己的公众号:Java架构师联盟发布了一篇mybatis-plus的文章之后,有小粉丝跟我说,现在刚开始学习Java,是不是可以不用学mybatis了直接学这个啊,听得我心里一阵后怕,总感觉自己带偏了他们的想法
其实我个人觉得,这不仅仅是他这种初学者,也是很多人的错误想法,就是觉得新的技术就是好的,不信?看这个,这也是一个初学者,在写代码的过程中遇到这样一个问题

原因,我直接上聊天记录吧

怎么样,这个问题简单吗?但是也凸显了一个问题,学习,尤其是开发这一行,真的不能激进,所以我借着今天的这个引子,整理今天的这份文章--mybatis,从最一开始的mybatis入门直到整合spring,并且附代码实现,刚开始学习的朋友可以实际操作一下,老牌程序员可以回顾一下当年的青葱岁月,哈哈哈哈哈
我们来看今天的正题吧
MyBatis前世
原生JDBC操作数据库的流程
加载驱动
获取链接 connection
获取statement
设置sql
给占位符 set值
执行sql,获取结果集
对结果集进行解析、封装
释放资源
原生的jdbc操作数据库的缺点:
频繁地进行获取链接、关闭链接,资源浪费。 数据库连接池
sql语句属于硬编码,维护不方便。并且需求变得可能性大,要经常地修改sql
占位符设置参数也属于硬编码,维护不方便
结果集解析过程也是硬编码,希望是能够自动地封装成我们自己开发的pojo对象中去
mybatis入门
mybatis 是一个持久层框架 ORM,他可以对jdbc的操作过程进行封装,使开发者只需关注sql本身,而无需去处理 注册驱动、获取链接、获取statement、结果集解析、资源释放等工作。
ORM :Object Ralational Mapping 对象关系映射简单地说,是通过描述对象和关系数据库之间的元数据的映射关系,将java中的对象持久化到关系数据库中。
mybatis配置
1、全局配置文件mybatis.xml(名字任意)配置mybatis的运行环境,包括连接池、事务等。
2、配置映射文件(配置sql)mapper.xml
3、SqlSessionFactory(会话工厂,通过配置文件获取的)创建SqlSession。
4、SqlSession(会话)操作数据库。
5、Executor(执行器)sqlSession是通过执行器来操作数据库的。
6、mapped Statement(底层封装对象)对数据库的操作进行封装,包括sql、输入参数、输出结果。
支持的输入输出参数类型
java基本类型
hashmap
自定义pojo对象
简单的Mybatis入门程序
项目架构

jar包

log4j.properties
mybatis.xml
Users.java
Users.mapper
UsersTest.java
mybatis对数据库的常用操作
一、查询
测试方法
二、新增
测试方法
三、修改
测试方法
四、删除
测试方法
mybatis.xml的一些配置项
1、加载外部资源文件
2、起别名
3、SqlSessionFactory和SqlSession
SqlSessionFactory:它是通过全局配置文件获取的,SqlSessionFactoryBuilder创建的。一旦它被创建,就会在程序的执行期一直存在,因此只需要一个实例。也就是说希望它是单例的。SqlSession:作用是操作数据库,是线程不安全的。因而希望每个线程都有自己的sqlSession的实例。
4、工具类
5、测试类
Spring与Mybatis整合
mybatis:dao层,操作数据库,需要单例的SqlSessionFactory工厂。spring:容器,管理对象。可以将SqlSessionFactory、事务、连接池以及mapper的动态代理交给spring来做。
applicationContext.xml
UsersService.java
UsersServiceImpl
测试类
总结
好了,不知道看完今天的内容大家感觉怎么样,有没有收获,我基本是按照从入门开始,逐步的往里面填充一些知识的顺序将mybatis进行了整理,那这个时候,我想,在实际的学习过程中你肯定还会遇到一些这样那样的问题,但是千万不要突进,脚踏实地,就从一些基础的,无聊的东西开始一点点的学习,网络上那些说这个牛,哪个好的,他肯定有一门傍身的技术作为基础,所以才能打到他说的那个层次
最后,所有程序员都能当架构师,哈哈哈哈哈
版权声明: 本文为 InfoQ 作者【小Q】的原创文章。
原文链接:【http://xie.infoq.cn/article/5b79972d6ed0ecec80b45b389】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
评论