mybatis依赖包

在上一篇其实已经说过,使用mybatis并不是就不用jdbc了,实际上不论使用哪个持久层框架,底层都还是要经过jdbc。使用java和数据库打交道(起码关系型数据库),jdbc是必不可少的,区别只在与需不需要自己手动实现。

因此,在我以mysql为数据库做例子时,即便是使用mybatis,依然需要依赖mysql的java驱动包。除此之外,就是还需要mybatis相应的jar包,那么使用maven的依赖配置就是如下这样:mysqlmysql-connector-java5.1.38org.mybatismybatis3.3.0

mybatis数据源配置mybatis.xml

既然说jdbc原始实现交给mybatis管理了,那么很明显的,jdbc必须的源数据,例如驱动、数据库url、用户名、密码,这些我们就必须以某种方式告诉mybatis。

而在单纯的使用mybatis时,常用的方式就是使用mybatis的配置文件指定这些源数据,也称为数据源。

这个配置文件需要遵循一定的格式,那么一个仅包含了jdbc数据源的配置应该如下所示:<?xml version="1.0" encoding="UTF-8" ?>

有了上边的配置,看起来好像就够了,但是实际运行会发现将会抛出异常,并提示“”environment” 的内容不完整,它必须匹配 “(transactionManager,dataSource)”,因此除了dataSource,还需要配置transactionManager,改动之后如下:<?xml version="1.0" encoding="UTF-8" ?>

持久层接口

有了上边的配置,当正确调用mybatis的时候,就能够正常连接到mysql,但是却还无法进行具体的数据库操作。

以之前那个jdbc的例子来说,查询user表所有的数据,然后映射到每个user对象中,那么我们这里需要先顶一个持久层的接口类:public interface UserMapper { public List findUsers();}

接口实现userMapper.XML

接口定义了做什么,具体怎么做就需要相应的实现。从官网来看,也可以选择使用java实现类,但是以我目前看到的情况来说,基本都是使用xml配置进行实现,针对上边接口的实现如下:<?xml version="1.0" encoding="UTF-8" ?> select * from user

上边的配置主要包含两个内容,一个是文件头。如果仔细看的话,会发现这个文件头和上边那个数据源配置的文件头几乎一样,不同的就是把数据源那里文件头中的所有configuration换成mapper,同时注意其中部分位置大小写,这些是固定写法。

第二部分,就是针对接口方法的具体实现。mapper标签对应一个接口类,里边的namespace属性值就是接口类的路径。

在mapper里边定义一个子标签select,对应sql的select查询语句,id属性对应接口方法方法名,resultType指定返回值类型,比如这里就是直接对应userModel类,使得查询结果能直接映射到userModel类的对象中。

数据源和实现关联

有了上边的配置,就把相应的接口类以及接口方法和具体的sql实现联系了起来。

但是如果要在java代码中使用这个接口做事,就还需要使上述配置和具体的数据源联系起来,所以mybatis的配置就需要进行一定的改变,类似下边:<?xml version="1.0" encoding="UTF-8" ?>

也就是在之前的基础上,指定对持久层接口实现的xml文件。这样一样,就真这个的把整个数据源和逻辑实现都结合在了一起。

而上边mapper标签加resource属性关联的方式,使用的是文件相对路径的方式,实际上还可以使用下边任意一种方式替代:

运行

上边的配置是否正确,就需要用运行来给出答案,这就需要说到mybatis的运行主要步骤,就例如使用原始jdbc有jdbc五步一样。还是先给例子:public static void main(String[] args) {try {InputStream inputStream = Resources.getResourceAsStream("mybatis.xml");SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);SqlSession sqlSession = sessionFactory.openSession(true);UserMapper userMapper = sqlSession.getMapper(UserMapper.class);List list = userMapper.findUsers();for (UserModel user : list) {System.out.println(user);}} catch (IOException e) {e.printStackTrace();}}

上边的例子解释如下:

使用io流加载mybatis配置文件;

使用SqlSessionFactoryBuilder创建一个SqlSessionFactory ,参数就是读取了mybatis参数的流

然后使用SqlSessionFactory 创建SqlSession,设置为自动提交;

再从SqlSession中获取需要的mapper接口;

执行具体的接口方法。

那么,从上边可以看到,调用mybatis实际最重要的就是两步:

创建SqlSessionFactory ;

创建sqlSession 。

创建SqlSessionFactory的时候需要加载mybatis配置文件,创建sqlSession就可以获取需要使用的被mybatis管理的接口。

以上便是最简单的mybatis使用,没有spring和其他东西,其他后续所有一切,都将是在此基础上进一步演进。

mybatis 依赖于jdbc_使用基础mybatis代替原始jdbc相关推荐

  1. mybatis 依赖于jdbc_大数据基础:Mybatis零基础入门

    在Java企业级开发任务当中,持久层框架的选择,国内市场的主流选择一定有Mybatis的一席之地,从入门来说,Mybatis的学习难度不算高,但是要把Mybatis发挥出真正的效用,还是需要深入学习的 ...

  2. mybatis 依赖于jdbc_优于jdbc的mybatis框架入门

    1.什么是mybatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyB ...

  3. mybatis 依赖于jdbc_第1章 MyBatis快速入门

    1.1 ORM简介 传统JDBC编程主要步骤: 1.注册数据库驱动类,明确指定数据库URL.用户名.密码等连接信息: 2.通过DriverManager打开数据库连接: 3.通过数据库连接创建Stat ...

  4. java学mybatis还用学jdbc吗,mybatis系统学习(二)——使用基础mybatis代替原始jdbc

    mybatis系统学习(二)--使用基础mybatis代替原始jdbc 前言 这一篇笔记的内容应当是建立在上一篇的基础之上,不论是使用的数据表,还是对应的实体类,都在上一篇有过说明. 有兴趣的或者对相 ...

  5. Mybatis入门学习---创建第一个Mybatis程序

    在这里我先给出项目的目录结构: 1.创建数据 在MySQL里面创建一个test数据库,里面有student表,数据如下: 2.创建maven项目并导入相关依赖 maven依赖如下: #pom.xml ...

  6. MyBatis实战——前身iBatis、基础环境搭建和如何钓鱼

    (一)前身iBatis 网上发现MyBatis书很少,因为旧项目用到的是ibatis,所以先大致过了iBatis,因为太老,所以基本上讲解的东西好少,但是还有<iBatis实战>这本书,再 ...

  7. mybatis依赖_Spring Boot2 系列教程(二十一)整合 MyBatis

    前面两篇文章和读者聊了 Spring Boot 中最简单的数据持久化方案 JdbcTemplate,JdbcTemplate 虽然简单,但是用的并不多,因为它没有 MyBatis 方便,在 Sprin ...

  8. MyBatis从入门到精通(一)—MyBatis基础知识和快速入门

    Mybatis简介 原始jdbc操作(查询数据) Connection connection = null;PreparedStatement preparedStatement = null;Res ...

  9. java day53【 Mybatis框架概述 、 Mybatis 框架快速入门、自定义 Mybatis 框架 】

    第1章 框架概述 1.1 什么是框架 1.1.1 什么是框架 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种 定义认为,框架是可被应用开发者定 ...

最新文章

  1. android adb shell 命令大全
  2. 自动驾驶路径规划论文解析(5)
  3. 从数组创建ArrayList
  4. 阿里云产品专家解读链路追踪(Tracing Analysis)
  5. 输出字符串全排列 c语言,41.输出全排列-题解(C语言代码)
  6. 火山PC模拟鼠标操作
  7. C++ Primer 第5版 练习5.14
  8. win10系统访问共享文件速度过慢的解决方法
  9. SSM公司企业绩效考核管理系统
  10. Java知识点复习:Day14
  11. 调查:听取当前用户的意见(并改进),是为什么?
  12. 推荐几个我收藏且星标的嵌入式技术公众号
  13. mac软件推荐(适用m1)
  14. Aandroid最简单最全面的热修复
  15. 计算机维护专业自我鉴定,2016届计算机系统维护专业大学生毕业自我鉴定优秀范文...
  16. 前端打包工具webpack和Vite
  17. JSP网上二手交易商城
  18. 海龟交易法则 matlab,【干货】经典的期货策略——海龟交易法则(二)
  19. React全家桶之构建应用-姜威-专题视频课程
  20. PCIe四通道光纤数据传输板PCIe-Fib-4Ch5G

热门文章

  1. 2017.10.10 Perm 排列计数 失败总结
  2. 自创算法——暴力自动机
  3. 【英语学习】【Daily English】U12 E-World L03 Black Friday is coming!
  4. Intel Sandy Bridge/Ivy Bridge架构/微架构/流水线 (14) - 读存操作写存操作
  5. Java中高级核心知识全面解析——什么是Spring Cloud、需要掌握哪些知识点?(下)
  6. 开启Mosquitto系统topic功能
  7. shouldoverrideurlloading为什么有时候不走_为什么付出越多,对方就越不懂得感恩,婚姻有时候也需要斤斤计较...
  8. UE4 调整引擎功能的级别
  9. OS X上搭建distcc使用XCode进行分布式编译
  10. python-ppt1