准备工作:JDBC
//步骤一:注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//步骤二:获取连接对象
String url = "jdbc:mysql://localhost:3306/mybatis";
String username = "root";
String password = "1234";
Connection connection = DriverManager.getConnection(url,username,password);
//步骤三:获取执行对象,执行sql并返回结果
String sql = "select * from user";
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);
//步骤四:封装结果数据
List<User> userList = new ArrayList<>();
while(resultSet.next()){
....
}
//步骤五:释放资源
statement.close();
connection.close();
一、Mybatis概述
(一)概念: MyBatis是一款优秀的 持久层 框架,用于优化JDBC的开发。
(二)官网: https://mybatis.org/mybatis-3/zh/index.html
二、MyBatis基本使用
(一)准备工作: (例如创建Maven工程,数据库表,实体类等)
1、创建Maven工程
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.7.12version>
<relativePath/>
parent>
<groupId>com.zengoogroupId>
<artifactId>springboot-mybatisartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>springboot-mybatisname>
<description>springboot-mybatisdescription>
<properties>
<java.version>11java.version>
properties>
<dependencies>
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.3.1version>
dependency>
<dependency>
<groupId>com.mysqlgroupId>
<artifactId>mysql-connector-jartifactId>
<scope>runtimescope>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
plugin>
plugins>
build>
project>
2、数据库表
start transaction ;
create table user
(
id int unsigned unique auto_increment primary key,
name varchar(100),
age tinyint unsigned,
gender tinyint unsigned,
phone varchar(11)
);
insert into user(name, age, gender, phone)
VALUES('xu',18,0,15385896741)
,('hu',19,1,18579563487)
,('yu',23,1,17858426389)
,('chi',21,0,13947456825)
,('qian',20,1,17855963541);
commit ;
rollback ;
3、实体类
public class User {
private Integer id;
private String name;
private Short age;
private Short gender;
private String phone;
public User() {
}
public User(Integer id, String name, Short age, Short gender, String phone) {
this.id = id;
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", gender=" + gender +
", phone='" + phone + '\'' +
'}';
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getAge() {
return age;
}
public void setAge(Short age) {
this.age = age;
}
public Short getGender() {
return gender;
}
public void setGender(Short gender) {
this.gender = gender;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
(二)添加依赖并配置数据库信息: MyBatis Framework 以及 MySQL Driver
添加依赖
在resource/application.properties配置文件中,填写数据库配置信息
#数据库连接四要素
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/springboot_mybatis
spring.datasource.username=root
spring.datasource.password=123456
(三)编写SQL语句(注解/XML)
方式一:注解形式
@Mapper //通知IOC容器进行管理,自动生成代理对象
public interface UserMapper {
//查询全部信息
@Select("select * from user")
List<User> list();
}
(四)数据库连接池
1、概念: 数据库连接池是一个容器,负责分配、管理数据库连接(Connection)。
2、作用: 为应用程序提供现有的数据库连接,释放空闲时间超过最大预设时间的连接,最大程度减少系统资源开销。
3、优势:
4、常用数据库连接池
Connection getConnection() throws SQLException;
5、Druid连接池
(五)Lombok工具包
注解 | 说明 |
---|---|
@Getter/@Setter | 为所有属性提供get/set方法 |
@ToString | 给类自动生成易读的toString方法 |
@EqualsAndHashcode | 根据类所拥有的非静态字段自动重写equals方法和hashCode方法 |
@Data | 提供以上三种方法 |
@NoArgsConstructor | 生成无参构造器 |
@AllArgsConstructor | 生成非静态变量有参构造器 |
@Data
@NoArgsConstructor
@AllArgsConstructor
class 实体类{
成员变量....
成员方法....
}
三、MyBatis动态SQL
(一)XML映射文件
1、规范
2、使用
Mapper接口
public interface EmpMapper{
List<Emp> list(String name,Short gender, LocalDate begin, LocalDate end);
}
映射XML
<mapper namespace="xxx.xxx.xxx.EmpMapper">
<select id="list" resultType="xxx.xxx.xxx.Emp">
select * from emp where name like concat('%',#{name},'%') and gender = #{gender} and entrydate between #{begin} and #{end} order by update_time desc
select>
mapper>
3、快速定位XML映射文件
IDEA编辑器中安装MyBatisX插件
(二)动态SQL
1、概念: 随着用户的输入或外部条件的变化而变化的SQL语句,我们称为 动态SQL
2、动态SQL标签