mybatis02 - 第一个Mybatis程序
1、开发思路

2、搭建环境
2.1、数据库
-- 创建数据库
CREATE DATABASE `mybatis`;
-- 切换数据库
USE `mybatis`;
-- 创建表
CREATE TABLE IF NOT EXISTS `user`(
`id` INT(20) NOT NULL COMMENT '序号',
`name` VARCHAR(30) DEFAULT NULL COMMENT '账号',
`pwd` VARCHAR(30) DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`)
) ENGINE = INNODB DEFAULT CHARSET=utf8;
引擎为INNODB,默认字符集设置为utf8
-- 插入数据
INSERT INTO `user`(`id`,`name`,`pwd`) VALUES
(1,'路飞','lufei'),
(2,'索隆','suolong'),
(3,'娜美','namei'),
(4,'乌索普','wusuopu'),
(5,'山治','shanzhi'),
(6,'乔巴','qiaoba'),
(7,'罗宾','luobin'),
(8,'弗兰奇','fulanqi'),
(9,'布鲁克','buluke'),
(10,'甚平','shenping');
2.2、新建项目
创建一个普通的Maven项目,把默认的src目录删掉,新建Project Module(子项目)。

3、导入依赖
在父项目的pom.xml中进行如下配置,配置完成之后记得刷新Maven,Maven会加载对应的jar包到本地仓库
<!-- 导入依赖 -->
<dependencies>
<!-- mysql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.31</version>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.13</version>
</dependency>
<!-- junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
</dependency>
<!-- lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.30</version>
</dependency>
</dependencies>
配置mybatis配置文件(mybatis-config.xml)
使用idea进行开发,该配置文件放在
src/main/resources目录下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
以上为官网默认配置,以下为本文使用的配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai"/>
<property name="username" value="账号"/>
<property name="password" value="密码"/>
</dataSource>
</environment>
</environments>
</configuration>
4、编写代码
首先在src/main/java/com/harley/utils下编写工具类MybatisUtils.java
package com.harley.utils;
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;
/**
* @author kylin
* @since 2024-03-11 20:16:27
*/
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
// 使用Mybatis获取SqlSessionFactory对象
String resource = "mybatis-config.xml";
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 有了SqlSessionFactory, 就可以从中获得SqlSession实例
* SqlSession完全包含了面向数据库执行SQL命令所需的所有方法
*/
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
该类运用了设计模式中的工厂模式,调用该类的getSqlSession()方法返回的SqlSession,即可和数据库进行交互(SqlSession中封装了很多insert、update...的API)。
在src/main/java/com/harley/pojo下编写实体类User.java
package com.harley.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
/**
* @author kylin
* @since 2024-03-11 20:31:15
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
public class User {
private Integer id;
private String name;
private String pwd;
}
此处使用了lombok的注解
@Data可以为实体类的属性自动生成Getter/Setter方法
@AllArgsConstructor可以为实体类自动生成有参构造方法
@NoArgsConstructor可以为实体类自动生成无参构造方法
@ToString可以为实体类自动生成toString方法
未完待续...
— 终焉 —