我的第一个mybatis程序

写在前面:
最近开始了框架的学习,打算先从mybatis入手,下面是我的第一个mybatis程序。
编译环境:
idea+jdk1.8+mysql+maven-3.6.3
首先需要在pom.xml中添加依赖代码

org.mybatis mybatis x.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。
我们首先看官方文档是怎样定义的:
我的第一个mybatis程序
文章图片



我们创建一个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程序
文章图片



那么我们通过mybatis,不用在创建实现类了,而是在xml语句中定义映射,如下:

在这里,namespace用来绑定一个Dao/Mapper接口,也就是说,这个xml就相当于我们之前创建的实现类,它们的作用是一样的,省去了jdbc一系列的操作,更加简单了。
现在我们回过头来再看一开始创建的mybatis-config.xml,大家有没有注意到:
我的第一个mybatis程序
文章图片



我在这里注释道每一个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); List list = mapper.getCloud(); for (Cloud cloud : list) { System.out.println(cloud); } //关闭sqlsession sqlSession.close(); } }

运行结果:
我的第一个mybatis程序
文章图片


    推荐阅读