MyBatis系列之--Java 项目(非SpringBoot)集成MyBatis
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是主要的核心。
上面这张图是对官网简介的一个总结,通过这个简单的描述可以回答下面两个问题:
如何创建SqlSessionFactory?
SqlSessionFactory(简称SSF) 通过 SqlSessionFactoryBuilder (简称SSFB)创建。
SSFB创建SSF的过程中,需要一些数据库JDBC的信息,这些信息可以通过XML文件或Java的Configuration对象来获取。
如何使用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相关推荐
- 一个项目了解 SpringBoot 集成 MyBatis
SpringBoot 集成 MyBatis 创建项目 1.引入依赖 mybatis-spring-boot-starter 依赖 完整的 pom.xml 2.配置文件 加入mybatis配置 完整的配 ...
- SpringBoot集成Mybatis项目实操
本文为<从零打造项目>系列第三篇文章,首发于个人网站. <从零打造项目>系列文章 比MyBatis Generator更强大的代码生成器 SpringBoot项目基础设施搭建 ...
- java整合mybatis,springboot集成mybatis
# springboot集成mybatis springboot基础mybatis还是很简单的,比之前springmvc集成mybatis要少很多配置,只要大家按照步骤一步一步来,几分钟就 能实现.具 ...
- Java 捕获 mybatis异常_3 springboot集成mybatis和全局异常捕获
mybatis有两种方式,一种是基于XML,一种是基于注解 springboot集成mybatis 首先先创建表,这里都简化了 DROP TABLE IF EXISTS `user`; CREATE ...
- springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三)
springboot集成mybatis源码分析-mybatis的mapper执行查询时的流程(三) 例: package com.example.demo.service;import com.exa ...
- springboot集成mybatis源码分析-启动加载mybatis过程(二)
springboot集成mybatis源码分析-启动加载mybatis过程(二) 1.springboot项目最核心的就是自动加载配置,该功能则依赖的是一个注解@SpringBootApplicati ...
- springboot集成mybatis源码分析(一)
springboot集成mybatis源码分析(一) 本篇文章只是简单接受使用,具体源码解析请看后续文章 1.新建springboot项目,并导入mybatis的pom配置 配置数据库驱动和mybat ...
- SpringBoot集成Mybatis用法笔记
今天给大家整理SpringBoot集成Mybatis用法笔记.希望对大家能有所帮助! 搭建一个SpringBoot基础项目. 具体可以参考SpringBoot:搭建第一个Web程序 引入相关依赖 &l ...
- Springboot集成mybatis通用Mapper与分页插件PageHelper
Springboot集成mybatis通用Mapper与分页插件PageHelper 插件介绍 通用 Mapper 是一个可以实现任意 MyBatis 通用方法的框架,项目提供了常规的增删改查操作以及 ...
最新文章
- ​比9种SOTA GNN更强!谷歌大脑提出全新图神经网络GKATs
- CentOS系统基础优化16条知识汇总
- arduino 中断例程
- Spring-国际化信息01-基础知识
- 牛客题霸 NC17 最长回文子串
- leetcode-66-加一
- CentOS 中 配置 Nginx 支持 https
- SoapUI使用教程
- STC89C52单片机蜂鸣器介绍以及《卡农》歌曲代码示例
- 二、 jQuery带本地时间的日历代码
- 决策树和CART决策树
- 恒德可视化指挥调度解决方案
- 微信模板消息html,微信推送模板消息,偶发出现报错errcode
- 利用混合高斯模型实现视频中运动目标与背景的分离
- 俄数学天才破解庞加莱猜想拒领百万奖金
- 八皇后算法python_八皇后问题遗传算法实现(python版)
- 企业级微信小程序实战详解
- Android av sync机制
- 海康威视的视频如何显示在web页面上显示
- EFR32MG裸机工程-4-UART
热门文章
- Parallels Desktop启动后黑屏无法进入Windows系统
- DBLP数据集用weka数据挖掘 xml转csv格式文件
- 十年感悟之 python之路
- Java获取图片传到前端,生成二维码给前端
- 解读:大数据分析及其数据来源
- 青鸟s1java云题库答案_北大青鸟S1java内部测试试卷(试题)
- “千山之首 大果榛品”2022年辽阳大果榛子地理标志标识推介会开幕
- 麦肯锡高管的逻辑树分析大法!
- 为NanoPi M2 自制Debian镜像
- python制作微信个人二维码_一个python自动生成微信二维码海报的轮子