java学mybatis还用学jdbc吗,mybatis系统学习(二)——使用基础mybatis代替原始jdbc
mybatis系统学习(二)——使用基础mybatis代替原始jdbc
前言
这一篇笔记的内容应当是建立在上一篇的基础之上,不论是使用的数据表,还是对应的实体类,都在上一篇有过说明。
有兴趣的或者对相应内容有疑问的,可移步:
http://www.bieryun.com/3561.html
我在学习过程中,历来遵循的原则就是先知其然,然后再根据情况看是否要知其所以然。
那么如今,在mybatis的知其然这一块我还没搞定的情况下,自然也是要先从这里下手。
那么,首先要做的,就是怎样使用最精简的mybatis代替最精简的jdbc。
在我看来,只有这种不和其他任何东西交叉的内容,才能使理解更加高效和透彻,才能更好的理解这项技术本身。从而,使其在和其他内容整合时,绕过更多的坑。
mybatis依赖包
在上一篇其实已经说过,使用mybatis并不是就不用jdbc了,实际上不论使用哪个持久层框架,底层都还是要经过jdbc。使用java和数据库打交道(起码关系型数据库),jdbc是必不可少的,区别只在与需不需要自己手动实现。
因此,在我以mysql为数据库做例子时,即便是使用mybatis,依然需要依赖mysql的java驱动包。除此之外,就是还需要mybatis相应的jar包,那么使用maven的依赖配置就是如下这样:
mysql
mysql-connector-java
5.1.38
org.mybatis
mybatis
3.3.0
mybatis数据源配置mybatis.xml
既然说jdbc原始实现交给mybatis管理了,那么很明显的,jdbc必须的源数据,例如驱动、数据库url、用户名、密码,这些我们就必须以某种方式告诉mybatis。
而在单纯的使用mybatis时,常用的方式就是使用mybatis的配置文件指定这些源数据,也称为数据源。
这个配置文件需要遵循一定的格式,那么一个仅包含了jdbc数据源的配置应该如下所示:
/p>
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
有了上边的配置,看起来好像就够了,但是实际运行会发现将会抛出异常,并提示“”environment” 的内容不完整,它必须匹配 “(transactionManager,dataSource)”,因此除了dataSource,还需要配置transactionManager,改动之后如下:
/p>
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
持久层接口
有了上边的配置,当正确调用mybatis的时候,就能够正常连接到mysql,但是却还无法进行具体的数据库操作。
以之前那个jdbc的例子来说,查询user表所有的数据,然后映射到每个user对象中,那么我们这里需要先顶一个持久层的接口类:
public interface UserMapper {
public List findUsers();
}
接口实现userMapper.XML
接口定义了做什么,具体怎么做就需要相应的实现。从官网来看,也可以选择使用java实现类,但是以我目前看到的情况来说,基本都是使用xml配置进行实现,针对上边接口的实现如下:
/p>
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select * from user
上边的配置主要包含两个内容,一个是文件头。如果仔细看的话,会发现这个文件头和上边那个数据源配置的文件头几乎一样,不同的就是把数据源那里文件头中的所有configuration换成mapper,同时注意其中部分位置大小写,这些是固定写法。
第二部分,就是针对接口方法的具体实现。mapper标签对应一个接口类,里边的namespace属性值就是接口类的路径。
在mapper里边定义一个子标签select,对应sql的select查询语句,id属性对应接口方法方法名,resultType指定返回值类型,比如这里就是直接对应userModel类,使得查询结果能直接映射到userModel类的对象中。
数据源和实现关联
有了上边的配置,就把相应的接口类以及接口方法和具体的sql实现联系了起来。
但是如果要在java代码中使用这个接口做事,就还需要使上述配置和具体的数据源联系起来,所以mybatis的配置就需要进行一定的改变,类似下边:
/p>
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
也就是在之前的基础上,指定对持久层接口实现的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和其他东西,其他后续所有一切,都将是在此基础上进一步演进。
java学mybatis还用学jdbc吗,mybatis系统学习(二)——使用基础mybatis代替原始jdbc相关推荐
- java计算机毕业设计美容美发店会员管理系统源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计美容美发店会员管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计美容美发店会员管理系统源码+系统+数据库+lw文档+mybatis+运行部署 ...
- java计算机毕业设计人口普查信息管理系统源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计人口普查信息管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计人口普查信息管理系统源码+系统+数据库+lw文档+mybatis+运行部署 本源 ...
- java计算机毕业设计南通大学福利发放管理系统源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计南通大学福利发放管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计南通大学福利发放管理系统源码+系统+数据库+lw文档+mybatis+运行部 ...
- java计算机毕业设计奇妙店铺电子商务网站源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计奇妙店铺电子商务网站源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计奇妙店铺电子商务网站源码+系统+数据库+lw文档+mybatis+运行部署 本源 ...
- java计算机毕业设计销售企业报价管理系统源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计销售企业报价管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计销售企业报价管理系统源码+系统+数据库+lw文档+mybatis+运行部署 本源 ...
- java计算机毕业设计网上宠物商城管理系统源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计网上宠物商城管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计网上宠物商城管理系统源码+系统+数据库+lw文档+mybatis+运行部署 本源 ...
- java计算机毕业设计苹果酒店住房管理源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计苹果酒店住房管理源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计苹果酒店住房管理源码+系统+数据库+lw文档+mybatis+运行部署 本源码技术栈 ...
- java计算机毕业设计外贸服装订单管理系统源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计外贸服装订单管理系统源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计外贸服装订单管理系统源码+系统+数据库+lw文档+mybatis+运行部署 本源 ...
- java计算机毕业设计皮皮狗宠物用品商城源码+系统+数据库+lw文档+mybatis+运行部署
java计算机毕业设计皮皮狗宠物用品商城源码+系统+数据库+lw文档+mybatis+运行部署 java计算机毕业设计皮皮狗宠物用品商城源码+系统+数据库+lw文档+mybatis+运行部署 本源码技 ...
最新文章
- ActiveMQ(li)
- 移植uboot第六步:支持NANDFlash
- Tensorflow 错误总结:ImportError: cannot import name add_newdocs.
- 由于更换了java版本,Eclipse启动时报错:JRE or JDK must be available in order to run Eclipse
- 中移动正进行智能网关互通测试:下半年规模集采
- 不服来战!青藤发起“雷火引擎”公测赛 百万赏金寻顶尖白帽
- 作一个真正合格的飞秋局域网聊天
- 销售流程图_34页财务管理制度和流程图!让你明白会计工作要点,总结全面清晰...
- 自动将中国ip地址归属地分类并保存到数据库中
- 穿越火线显示无法连接服务器,穿越火线无法连接服务器是什么原因
- 麒麟服务器操作系统V4,银河麒麟服务器操作系统V4
- 【手游逆向】初探Unity3d+il2cpp.so网游修改新手教程篇[内附所有相关工具下载地址和说明介绍】
- C++ _stdcall和__stdcall、_fastcall的区别
- 负数除以正数余数如何求_负数除正数的余数是正还是负?-工业支持中心-西门子中国...
- Docker安装MoogoDB, 进入容器, mongo shell操作mongoDB
- 获取windows锁屏壁纸
- Everything指定用XYplorer打开目录路径
- 电源技术——如何产生负电压
- 渗透测试---被动信息收集详解
- 基于HDP使用Flume实时采集MySQL中数据传到Kafka+HDFS或Hive
热门文章
- 一文详解激光雷达感知方案
- 研究生再次大幅扩招!高校能否承载?教育部最新表态来了
- 3D姿态估计|时序卷积+半监督训练
- ECCV2020图像分割开源论文合集
- webuploader上传文件,后台Java接收
- HTML复选框和提交按钮组合设置
- UniT | Facebook发布全新智能通用Agent!
- 在线作图|你不知道的绘制带聚类树的堆叠柱状图的方法
- 北京、广州同时开课 | 临床基因组学数据分析实战助力解析Case,快速发表文章...
- MPB:西农焦硕组-​土壤微生物响应环境变化的系统发育保守性和环境阈值