MyBatis基础搭建及架构概述(上)

您所在的位置:网站首页 mybatis架构 MyBatis基础搭建及架构概述(上)

MyBatis基础搭建及架构概述(上)

2023-12-01 09:42| 来源: 网络整理| 查看: 265

MyBatis 是什么?

MyBatis是第一个支持自定义SQL、存储过程和高级映射的类持久框架。MyBatis消除了大部分JDBC的样板代码、手动设置参数以及检索结果。MyBatis能够支持简单的XML和注解配置规则。使Map接口和POJO类映射到数据库字段和记录。

下面我们通过一个简单的项目搭建来带你认识一下MyBatis的使用和一些核心组件的讲解。

MyBatis 项目构建

为了快速构建一个MyBatis项目,我们采用SpringBoot快速搭建的方式。搭建好后在对应的pom.xml下添加如下的maven依赖,主要作用在于引入mybatis一些jar包和类库

主要分为四个步骤:

快速构建项目,引入核心maven dependency依赖构建POJO类和接口式编程的 Mapper类,编写SQL语句编写config.properties数据库驱动等配置构建Mybatis核心配置文件即mybatis-config.xml,引入数据库驱动,映射Mapper类编写Junit单元测试类 org.mybatis mybatis 3.4.6 mysql mysql-connector-java 5.1.25 junit junit 4.12 test

为了便于更好的说明文章的主旨,这里就不贴出全部代码了,会贴出核心代码部分

编写对应的POJO类和接口式编程Mapper类,这里我们以部门业务逻辑为例,构建一个部门类,有三个属性即部门编号、部门名称、位置,下面是部分代码:

Dept.java

package com.mybatis.beans; public class Dept { private Integer deptNo; private String dname; private String loc; public Dept() {} public Dept(Integer deptNo, String dname, String loc) { this.deptNo = deptNo; this.dname = dname; this.loc = loc; } get and set... }

MyBatis最核心的功能之一就是接口式编程,它可以让我们编写Mapper接口和XML文件,从而把参数和返回结果映射到对应的字段中。

DeptDao.java

package com.mybatis.dao; public interface DeptDao { // 通过部门名称查询 public Dept findByDname(String Dname); // 通过部门编号查询 public Dept findByDeptNo(Integer deptno); }

在/resources 下新建com.mybatis.dao 包,在其内编写对应的XML配置文件,此XML配置文件和Mapper互为映射关系。

select * from dept where deptno = #{deptNo} where dname = #{dname}

上述的 就是映射到Mapper接口类的命名空间 标签用于编写查询语句,查询完成之后需要把结果映射到对象或者map集合等,需要用到resultType属性指定对应的结果集。上述采用了和的标签写法,为了方便的映射到实体类,需要修改的话统一修改即可,降低耦合性。

构建完成基础的SQL语句和映射之后,下面来构建MySQL数据库驱动,在/resources 下创建config.properties类

jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=root jdbc.password=123456

在/resources 下编写MyBatis核心配置文件myBatis-config.xml,引入数据库驱动,映射Mapper类

configuration 标签很像是Spring 中的 beans 标签或者是基于注解的配置@Configuration,也就是MyBatis的核心配置环境,使用 properties 标签引入外部属性环境,也就是数据库驱动配置,使用 mappers 映射到Mapper所在的包,这里指的就是DeptDao.java所在的包。

在test包下面新建一个Junit单元测试类,主要流程如下:

23.jpg

MyBatisTest.java 代码如下:

public class MyBatisTest { private SqlSession sqlSession; /** * 读取配置文件,创建SQL工厂,打开会话 * @throws Exception */ @Before public void start() throws Exception{ InputStream is = Resources.getResourceAsStream("myBatis-config.xml"); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(is); sqlSession = factory.openSession(); } /** * 销毁会话 */ @After public void destroy() { if(sqlSession != null){ sqlSession.close(); } } @Test public void test(){ DeptDao deptDao = sqlSession.getMapper(DeptDao.class); Dept dept = deptDao.findByDeptNo(1); System.out.println(dept.getDname()); } }

@Before 和 @After 是junit工具包中的类,@Before在执行@Test 测试其主要业务之前加载,@After 在执行@Test 测试完成之后加载。

整体结构如下:

24.jpg



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3