背景:
平时我们都用 JDBC 访问数据库, 除了需要自己写 SQL 之外, 还必须操作 Connection, Statement, ResultSet 这些其实只是手段的辅助类.
不仅如此, 访问不同的表, 还会写很多雷同的代码, 显得繁琐和枯燥.
那么用了 Mybatis 之后, 只需要自己提供 SQL 语句, 其他的工作, 诸如建立连接, Statement, JDBC 相关异常处理等等都交给 Mybatis 去做了.
我们只需要关注在增删改查等操作层面上, 而把技术细节都封装在了我们看不见的地方.
基本使用流程:
--1-- 创建一个 mybatis-config.xml 文件, 用于提供数据连接信息
- <?xml version="1.0" encoding="UTF-8" ?>
- <!--mybatis-config.xml 文件主要是提供连接数据库用的驱动, 数据库名称, 编码方式, 账号密码 -->
- <!DOCTYPE configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <!-- 开启包扫描, 使得后续的 mapper.xml 减少语句 -->
- <typeAliases>
- <package name="com.ksea.pojo"/>
- </typeAliases>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://localhost:3306/how2java?characterEncoding=UTF-8"/>
- <property name="username" value="root"/>
- <property name="password" value="root"/>
- </dataSource>
- </environment>
- </environments>
- <!-- 映射类配置的 XML 文件 -->
- <mappers>
- <mapper resource="com/ksea/pojo/Category.xml"/>
- </mappers>
- </configuration>
- mybatis-congfig.xml
--2-- 创建实体类对应的 xml 文件, mapper 相关编写, 封装 sql, 一个类对应一个 xml. 一起存放于 pojo 包中
- package com.ksea.pojo;
- /**
- * @author :KSea
- * @description :
- * @createDate :2020/1/6
- */
- public class Category {
- private int id;
- private String name;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- Category
<?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.ksea.pojo">
- <!-- 映射, resultType 表示与相关类关联, id 提供给后续代码调用 -->
- <select id="listCategory" resultType="Category">
- select * from category_
- </select>
- </mapper>
CategoryMapper.xml
--3-- 调用流程, 首先 Resources 类读取配置文件, 实例化 SqlSessionFactory, 通过 SqlSession 持久化, 调用 mapper 中定义的 id
- package com.ksea;
- import com.ksea.pojo.Category;
- 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;
- import java.util.List;
- /**
- * @author :KSea
- * @description :
- * @createDate :2020/1/6
- */
- public class TestMybatis {
- public static void main(String[] args) throws IOException {
- String resource = "mybatis-config.xml";
- // 使用 Resources 类来读取配置文件
- InputStream inputStream = Resources.getResourceAsStream(resource);
- //SqlSessionFactory Mybatis 的一个关键对象, 用于根据转换为流的配置文件实例化一个 mybatis 的核心对象
- SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
- // 持久化, 类似于 JDBC 的 Connection
- SqlSession session = sqlSessionFactory.openSession();
- // 使用持久化后的示例调用配置的 mapper 中的 id 来进行 sql 语句调用
- List<Category> categoryList = session.selectList("listCategory");
- for (Category category :categoryList){
- System.out.println(category.getName());
- }
- }
- }
- testMybatis
来源: http://www.bubuko.com/infodetail-3367752.html