MyBatis系列之--Java 项目(非SpringBoot)集成MyBatis

  • 对MyBatis简单介绍
  • 核心接口SqlSessionFactory
  • 实战
    • 1. Maven创建Java项目
    • 2. 添加依赖
    • 3. 配置JDBC属性
    • 4. 配置MyBatis需要的配置文件
    • 5. 准备数据
    • 6. 创建数据库表对应的POJO
    • 6. 创建Mapper接口
    • 7. 创建XML的Mapper文件

工作中常常写一些服务,基本上会与MySQL关联上,如何快速的从MySQL中获取数据?大家可能都会选用SpringBoot来集成MyBatis,这样做的原因一个是简单,另外一个是封装的好,基本上开箱即用。

遗憾的是,这里想介绍的跟SpringBoot 没有关系,这里用一个与SpringBoot无关的Java Maven 项目,来与MyBatis结合做数据查询。

对MyBatis简单介绍

MyBatis是一个轻量级的持久层框架,能很好的解析自定义SQL,高效的完成数据的添加、删除、查询等操作。
MyBatis几乎免除了所有的JDBC代码,以及设置参数和获取结果的工作。可以通过XML或注解的方式来配置和映射原始类型、接口和POJO为数据库中的记录。

核心接口SqlSessionFactory

MyBatis主要和数据库进行交互,少不了创建数据库连接,其中SqlSessionFactory是主要的核心。


上面这张图是对官网简介的一个总结,通过这个简单的描述可以回答下面两个问题:

  1. 如何创建SqlSessionFactory?

    SqlSessionFactory(简称SSF) 通过 SqlSessionFactoryBuilder (简称SSFB)创建。

    SSFB创建SSF的过程中,需要一些数据库JDBC的信息,这些信息可以通过XML文件或Java的Configuration对象来获取。

  2. 如何使用SqlSessionFactory?

    SSF 创建好之后,基本上就保证它应用级别的作用域,不对其进行重复的创建和销毁操作。

    最简单的是通过单例模式或静态单例模式来达到应用级别的作用域。

实战

1. Maven创建Java项目

本地需要安装Maven,然后才能执行下面的代码。

 mvn archetype:generate -DgroupId=com.botao -DartifactId=pure-mybatis -DarchetypeArtifactId=maven-archetype-quickstart

2. 添加依赖

pom.xml 文件中添加下面的依赖

  <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.2</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.44</version></dependency></dependencies>

3. 配置JDBC属性

resources目录下创建 application.properties文件,并输入下面的配置信息。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/university?characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456

4. 配置MyBatis需要的配置文件

resources目录下创建mybatis-config.xml文件,并输入下面的配置信息。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><properties resource="application.properties"/><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments><mappers><mapper resource="mapper/PersonMapper.xml"/></mappers>
</configuration>

注意:
1. 开头部分声明是xml文件
2. <properties resource="application.properties"/> 声明本文中的属性从 application.properties中获取
3. <mapper resource="mapper/PersonMapper.xml"/> 声明与数据库表的映射接口文件位置

5. 准备数据

CREATE DATABASE `university` ;CREATE TABLE `person` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(100) DEFAULT NULL,`age` int(11) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8mb4 ;INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (1, 'poter1', 10);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (2, 'poter2', 20);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (3, 'poter3', 30);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (4, 'poter4', 40);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (5, 'poter5', 50);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (6, 'poter6', 60);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (7, 'poter7', 70);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (8, 'poter8', 80);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (9, 'poter9', 90);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (10, 'poter10', 100);
INSERT INTO `university`.`person`(`id`, `name`, `age`) VALUES (11, 'poter11', 110);

6. 创建数据库表对应的POJO

package com.botao.pojo;public class Person {private int id;private String name;private int age;public Person() {}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;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "PersonMapper{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}

6. 创建Mapper接口

package com.botao.mapper;import com.botao.pojo.Person;public interface PersonMapper {Person selectPersonById(Integer id);
}

7. 创建XML的Mapper文件

在resources/mapper目录下创建PersonMapper.xml文件,并配置如下信息:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.botao.mapper.PersonMapper"><select id="selectPersonById" resultType="com.botao.pojo.Person">select * from Person where id = #{id}</select>
</mapper>

好了,到目前位置,我们的工程就完成了,可以创建一个main方法,或用Junit来测试下。

这里写一个Main方法做下测试:

package com.botao;import com.botao.mapper.PersonMapper;
import com.botao.pojo.Person;
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;public class App {public static void main(String[] args) throws IOException {System.out.println("use mybatis connect to database ... ");// 根据 mybatis-config.xml 配置的信息得到 sqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);// 然后根据 sqlSessionFactory 得到 sessionSqlSession session = sqlSessionFactory.openSession();PersonMapper mapper = session.getMapper(PersonMapper.class);Person person = mapper.selectPersonById(1);System.out.println(person);}
}

测试结果:

C:\app\java\jdk1.8.0_131\bin\java.exe  ...
use mybatis connect to database ...
PersonMapper{id=1, name='poter1', age=10}Process finished with exit code 0

OK!这就是所有内容了,如果对上面的说明有任何疑问,欢迎留言与我交流。

MyBatis系列之--Java 项目(非SpringBoot)集成MyBatis相关推荐

  1. 一个项目了解 SpringBoot 集成 MyBatis

    SpringBoot 集成 MyBatis 创建项目 1.引入依赖 mybatis-spring-boot-starter 依赖 完整的 pom.xml 2.配置文件 加入mybatis配置 完整的配 ...

  2. SpringBoot集成Mybatis项目实操

    本文为<从零打造项目>系列第三篇文章,首发于个人网站. <从零打造项目>系列文章 比MyBatis Generator更强大的代码生成器 SpringBoot项目基础设施搭建 ...

  3. java整合mybatis,springboot集成mybatis

    # springboot集成mybatis springboot基础mybatis还是很简单的,比之前springmvc集成mybatis要少很多配置,只要大家按照步骤一步一步来,几分钟就 能实现.具 ...

  4. Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获

    mybatis有两种方式,一种是基于XML,一种是基于注解 springboot集成mybatis 首先先创建表,这里都简化了 DROP TABLE IF EXISTS `user`; CREATE ...

  5. springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三)

    springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三) 例: package com.example.demo.service;import com.exa ...

  6. springboot集成mybatis源码分析-启动加载mybatis过程(二)

    springboot集成mybatis源码分析-启动加载mybatis过程(二) 1.springboot项目最核心的就是自动加载配置,该功能则依赖的是一个注解@SpringBootApplicati ...

  7. springboot集成mybatis源码分析(一)

    springboot集成mybatis源码分析(一) 本篇文章只是简单接受使用,具体源码解析请看后续文章 1.新建springboot项目,并导入mybatis的pom配置 配置数据库驱动和mybat ...

  8. SpringBoot集成Mybatis用法笔记

    今天给大家整理SpringBoot集成Mybatis用法笔记.希望对大家能有所帮助! 搭建一个SpringBoot基础项目. 具体可以参考SpringBoot:搭建第一个Web程序 引入相关依赖 &l ...

  9. Springboot集成mybatis通用Mapper与分页插件PageHelper

    Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...

最新文章

  1. ​比9种SOTA GNN更强!谷歌大脑提出全新图神经网络GKATs
  2. CentOS系统基础优化16条知识汇总
  3. arduino 中断例程
  4. Spring-国际化信息01-基础知识
  5. 牛客题霸 NC17 最长回文子串
  6. leetcode-66-加一
  7. CentOS 中 配置 Nginx 支持 https
  8. SoapUI使用教程
  9. STC89C52单片机蜂鸣器介绍以及《卡农》歌曲代码示例
  10. 二、 jQuery带本地时间的日历代码
  11. 决策树和CART决策树
  12. 恒德可视化指挥调度解决方案
  13. 微信模板消息html,微信推送模板消息,偶发出现报错errcode
  14. 利用混合高斯模型实现视频中运动目标与背景的分离
  15. 俄数学天才破解庞加莱猜想拒领百万奖金
  16. 八皇后算法python_八皇后问题遗传算法实现(python版)
  17. 企业级微信小程序实战详解
  18. Android av sync机制
  19. 海康威视的视频如何显示在web页面上显示
  20. EFR32MG裸机工程-4-UART

热门文章

  1. Parallels Desktop启动后黑屏无法进入Windows系统
  2. DBLP数据集用weka数据挖掘 xml转csv格式文件
  3. 十年感悟之 python之路
  4. Java获取图片传到前端,生成二维码给前端
  5. 解读:大数据分析及其数据来源
  6. 青鸟s1java云题库答案_北大青鸟S1java内部测试试卷(试题)
  7. “千山之首 大果榛品”2022年辽阳大果榛子地理标志标识推介会开幕
  8. 麦肯锡高管的逻辑树分析大法!
  9. 为NanoPi M2 自制Debian镜像
  10. python制作微信个人二维码_一个python自动生成微信二维码海报的轮子