搭建环境
搭建数据库
CREATE DATABASE mybatis;
USE mybatis;
drop table if exists USER;
CREATE TABLE USER(
id INT(20) NOT NULL PRIMARY KEY,
name VARCHAR(30) DEFAULT NULL,
pwd VARCHAR(30) DEFAULT NULL
)ENGINE = INNODB DEFAULT CHARSET=utf8;
INSERT INTO user(id,name,pwd)VALUES
(1,'张三',888),
(2,'孝感徐志摩',999),
(3,'渣男陈世美',666)
新建项目
注意:在mysql8版本还需要配置一个时区
jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8
useSSL=true& 安全连接
useUnicode=true& 编码
characterEncoding=UTF-8
- 新建一个普通的maven项目
- 删除src目录
- 导入maven依赖
<!--导入依赖--> <dependencies> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> <!--junit--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13</version> </dependency> </dependencies>
创建模块
- 编写mybatis的核心配置文件
- 在IDEA里面添加MySQL数据库路劲:jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT
<?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:核心配置文件--> <configuration> <environments default="development"> <environment id="development"> <!--transactionManager:事务管理 默认使用JDBC事务管理--> <transactionManager type="JDBC"/> <!--连接池POOLED--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> </configuration>
- 编写mybatis工具类
-
Factory:工厂模式
Builder :建造者模式,通过工厂去建造一个工厂,然后去拿到
// 工具类 // 工厂 生产 产品 // sqlSessionFactory ---> sqlSession public class MybatisUtils { //定义一个工厂 private static SqlSessionFactory sqlSessionFactory; static { try { //使用Mybatis获取sqlSessionFactory对象 String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。 // SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
编写代码
- 实体类
public class User { private int id; private String name; private String pwd; public User() { } public User(int id, String name, String pwd) { this.id = id; this.name = name; this.pwd = pwd; } 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 String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", pwd='" + pwd + '\'' + '}'; } }
<?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"> <!--namespace:命名空间 = 绑定一个对应的Dao/Mapper接口 --> <mapper namespace="com.lxyk.dao.UserDao"> <!--select:查询语句--> <!--resultType:返回值类型--> <!--resultType="com.lxyk.pojo.User" : 权限命名--> <select id="getUserList" resultType="com.lxyk.pojo.User"> select * from user; </select> </mapper>
测试
public class UserDaoTest { @Test public void test(){ //1、获取sqlSession对象 SqlSession sqlSession = MybatisUtils.getSqlSession(); //2、执行sql UserDao mapper = sqlSession.getMapper(UserDao.class); List<User> userList = mapper.getUserList(); userList.forEach(System.out::println); //3、关闭sqlSession sqlSession.close(); } }