我的第一个mybatis程序
写在前面:
最近开始了框架的学习,打算先从mybatis入手,下面是我的第一个mybatis程序。
编译环境:
idea+jdk1.8+mysql+maven-3.6.3
首先需要在pom.xml中添加依赖代码
org.mybatis mybatisx.x.x
//这里我用的是3.5.2版本
创建mybatis的配置文件,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。
mybatis-config.xml:
"driver" value="https://www.it610.com/article/${driver}"/>//jdbc驱动,我的是com.mysql.jdbc.Driver"url" value="https://www.it610.com/article/${url}"/>【我的第一个mybatis程序】"username" value="https://www.it610.com/article/${username}"/>"password" value="https://www.it610.com/article/${password}"/>
//每一个mapper都需要注册,这里和后面有关
我们以前都是通过jdbc来操作数据库,频繁的连接关闭不仅会消耗巨大的资源,并且如果要修改sql的话不利于整体的维护。
而mybatis的核心概念有Configuration 、 SqlSessionFactory 、 Session 、 Executor 、 MappedStatement 、StatementHandler、ResultSetHandler。我是首先了解了 SqlSessionFactory。
我们首先看官方文档是怎样定义的:
文章图片
我们创建一个mybatisutil用来获取sqlsession对象
package 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.IOException; import java.io.InputStream; //sqlSessionFactory对象 public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static {try { String resource = "mybatis-config.xml"; InputStream inputStream = null; inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } }public static SqlSession getSqlSession(){ SqlSession sqlSession = sqlSessionFactory.openSession(); returnsqlSession; }}
同样我们再联系一下传统MVC设计模式的写法,我们会写一个DAO接口,然后创建一个实现类去继承它,如下:
文章图片
那么我们通过mybatis,不用在创建实现类了,而是在xml语句中定义映射,如下:
在这里,namespace用来绑定一个Dao/Mapper接口,也就是说,这个xml就相当于我们之前创建的实现类,它们的作用是一样的,省去了jdbc一系列的操作,更加简单了。
现在我们回过头来再看一开始创建的mybatis-config.xml,大家有没有注意到:
文章图片
我在这里注释道每一个mapper都需要注册,这里它的resource需要改为"dao.UserMapper.xml",一定要注意是每一个!!!我只创建了一个,所有这里就注册一个。
写到这,准备工作也就差不多了,下面我们开始测试:
package dao; import bean.Cloud; import org.apache.ibatis.session.SqlSession; import org.junit.Test; import utils.MybatisUtils; import java.util.List; public class UserDaoTest { @Test public void test(){ //1.获取sqlsession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //2.1执行sql UserDao mapper = sqlSession.getMapper(UserDao.class); Listlist = mapper.getCloud(); for (Cloud cloud : list) { System.out.println(cloud); } //关闭sqlsession sqlSession.close(); } }
运行结果:
文章图片
推荐阅读
- 一个小故事,我的思考。
- 家乡的那条小河
- 前任
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- mybatisplus如何在xml的连表查询中使用queryWrapper
- mybatisplus|mybatisplus where QueryWrapper加括号嵌套查询方式
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- 绘本讲师训练营【18期】14/21《我的情绪小怪兽》故事会新体验
- 我的友谊纪念日