JDBC与MyBatis
众所周知,JDBC是java提供的接口Api,学习jdbc时,首先要掌握jdbc五大步骤:(1)加载驱动;(2)连接数据库;(3)执行sql语句,并返回结果;(4)处理结果;(5)倒序关闭数据库资源。
JDBC是实现持久化,将数据用JAVA语言实现数据持久化,在编写过程中,我们大多数会采用MVC来实现,而在编写utils包和dao包时,会写下JDBC五大步骤,比较繁琐、不易维护,从而诞生了Hibernate框架,hibernate是封装了JDBC对象全自动持久化框架,使用起来有些缺陷,不太灵活,有时会遇到SQL语句硬伤害,为了便于开发,后又诞生了IBatis框架,经后不断迭代,成就了现在的MyBatis。
2010年由apache software foundation迁移到了google code,并且改名为MyBatis;2013年11月迁移到Github,所以我们下载jar时,需去Githup中下载。
MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
MyBatis实现过程及思路
上面提到了MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,我们这里先使用xml,后期再给大家写一篇关于注解的,我们大概了解MyBatis概念后,不需要深究MyBatis,能熟练运用SSM框架后,可以去看MyBatis源码,接下来,我们就可以以下手操作了。
为了让大家快速掌握MyBatis,将整个过程划分为五步。
1.创建Maven工程,编写Maven依赖库坐标。
2.配置mybatis-config.xml文件。
3.配置项目mapper.xml文件。
4.编写代码逻辑。
5.进行Dome测试。
(一)创建Maven工程,编写Maven依赖库坐标
打开idea工具,点击左上角file-new-project,并选择maven。如图所示:
接下来选择next执行下一步,给模块起个名字,并点击finish完成。严格按照JAVA命名规则,字母、数字、下划线,不允许数字、下换线开头,不允许以关键字命名,以驼峰形式,尽量命名精短有意义。(如有资历高深者,可探究技术问题,勿怪啰嗦,此博客只针对换行或小白)
创建完项目后,选择该项目下pom.xml,idea会自动弹开。
打开pom.xml后,配置项目中所需要的依赖。
<dependencies></dependencies>标签使用来导入相关的依赖,在开发中避免不了对功能进行测试,首先先导入JUnit,其实Mybatis,只需要两个依赖(1)mybatis;(2)mysql-connector-java即可。在这里我会使用Test测试单元,首先导入下JUnit,在dependencies标签内加入:
编写一个mybatis案例,必须使用mysql-connector-java驱动包
最后一个导入mybatis依赖,第一步就完成了:
写完依赖后,切莫猴急写下一步,一点要点击右上角的maven刷新图标,否则无效。
点击后图标即可消失,若开发中发现没有com.mysql,证明驱动包没有生效,可检查,pom.xml右上角的刷新图标是否存在,这里很多学员们容易忽略。
(二)配置mybatis-config.xml文件
第一步完成后,在左边项目栏中打开src-main文件,选中resources文件,右击新建一个file文件。
打开百度搜索:mybatis中文,或者直接进入:入门_MyBatis中文网
找到下图所示,将文件命名为mybatis-config.xml,注意此命名是推荐使用,不是强制使用,可随心命名。
编写整个第二个步骤时,不需要去记,更不需要去手敲毫无意义,打开文档复制即可。将红框中所有代码复制下来,粘贴到resources-mybatis-config.xml文件中。
看到圈起来的信息,好多小伙伴们就能理解它是干什么的了,没错就是用来配置数据库基本信息的。
如果maven配置好的话,会有提示的,相反则依赖有问题。
注意 5.7之后的版本必须要加上useSSL=false,注意 密码是自己的数据库密码
再往下,我们会看到映射文件信息,先不要管它,完成第三步后再来理会。
(三)配置项目mapper.xml文件
第三步类似与第二步,不需要手动敲,从官方文档中复制即可,首先,还是在resources文件中创建项目mapper.xml。如图所示:
创建好文件后,打开文档找到如图所示:
将代码复制到xxxmapper.xml文件中
完成后,回到第二步打开mybatis-config.xml文件,找到配置映射部分
将红框代码删除换成xxmapper.xml文件,由于我们的xxmapper.xml文件在resources文件中,我们直接写即可。
第二步完成
回到 xxmapper.xml文件,我们发现sql语句在文档里,意味着我们不需要再,写在代码中了方便了维护迭代。
先创建第四步实体类后,回来修改下属性即可。
(四)编写代码逻辑
在JAVA目录下创建一个实体类,属性对应数据库字段名,提供get and set、toString。
创建完实体类,回到第三步,命名空间随便起个名字,id随便起个名字不能重复,resultType改成实体类全路径。
做完以上操作后第三步结束。
回到第四步,在JAVA目录下创建utils类,其实此时,创建一个测试类,就可以结束了(这里,我加上utils包和mapper包,为编写mybatis-高级埋下伏笔)
创建好后,打开文档找到下图所示。
老步骤,复制到方法中
将路径换成mybatis-config.xml文件路径
完整代码
package com.yh.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
/**
* @author 王永辉
* @version v1.1.0
* @description
* @date 2022-07−04
**/
public class MusicUtils {
//创建一个有返方法
public static SqlSession getSqlSession () throws Exception {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
}
接下来,创建mapper,mapper如同JDBC用到的dao。
这一步懂点JDBC的都会,不在解释
接下来创建实现类(埋下伏笔,后面会讲到不写接口实现类)
(五)进行Dome测试
打开test文件创建测试类(加上JUnit就是想让大家养成一个好习惯,实现一个功能,写一个测试类)