mybatis 依赖于jdbc_使用基础mybatis代替原始jdbc

本文介绍了mybatis的基础使用,包括依赖于jdbc的配置、数据源配置、持久层接口定义及其XML实现。通过示例展示了如何创建SqlSessionFactory、SqlSession以及执行查询操作,阐述了mybatis如何简化jdbc的数据库操作。
摘要由CSDN通过智能技术生成

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和其他东西,其他后续所有一切,都将是在此基础上进一步演进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值