JavaWeb项目实战二(Mybatis快速入门)_xml

Mybatis

官方手册:https://mybatis.org/mybatis-3/zh/index.html

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

获取 Mybatis

  1. Maven
    ​​​https://mvnrepository.com​
  2. Github
    ​​​https://github.com/mybatis/mybatis-3​

优点:

  1. 简单易学,灵活,使用较多
  2. SQL 和diamagnetic分离,提高可维护性
  3. 提供映射标签,支持对象与数据库的 ORM 字段关系映射
  4. 提供对象关系映射标签,支持对象关系组建维护
  5. 提供 xml 标签,支持编写动态 SQL

演示Demo

环境搭建

项目环境

  1. JDK 1.8
  2. MySQL 5.7
  3. Maven 3.6.1

1.新建数据库 mybatis,新建查询插入数据

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,'ocean','12345'),
(2,'jerry','54321')

2.新建 maven 项目

JavaWeb项目实战二(Mybatis快速入门)_xml_02

3.导入依赖

<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.7</version>
</dependency>

<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>

创建模块

项目名右击选择 new 新建 module

JavaWeb项目实战二(Mybatis快速入门)_安全_03


JavaWeb项目实战二(Mybatis快速入门)_开发语言_04

1.编写核心配置文件

新建 mybatis-config.xml 配置文件

JavaWeb项目实战二(Mybatis快速入门)_xml_05

<?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.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/smbms?useSSL=false&useUnicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>

<!--每一个Mapper.XML 都需要在Mybatis核心配置文件中注册-->
<mappers>
<mapper resource="com/ocean/dao/"/>
</mappers>
</configuration>

注意点:数据库连接 url 中 & 符号需要使用 ​​&amp;​​ 代替,MySQL 8 中需要设置时区

注意:这里每一个Mapper.XML 都需要在Mybatis核心配置文件中注册

2.编写工具类

每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例

JavaWeb项目实战二(Mybatis快速入门)_开发语言_06

public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
String resource = "mybatis-config.xml";
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();
}
}

编写代码

实体类、Dao 接口、接口实现类

实体类

JavaWeb项目实战二(Mybatis快速入门)_开发语言_07

Dao 接口

JavaWeb项目实战二(Mybatis快速入门)_开发语言_08

Mapper 配置文件

接口实现类由原来的 UserDaoImpl 转变为一个 Mapper 配置文件

<?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.ocean.dao.UserMapper">

<!--select查询语句-->
<select id="selectBlog" resultType="com.ocean.pojo.User">
select * from mybatis.user
</select>
</mapper>
  • namespace 中的包名要和 mapper 接口的包名一致
  • resultType:Sql 语句返回结果

测试

public class UserMapperTest {

@Test
public void test() {
// 1.获得 sqlsession 对象
SqlSession sqlSession = MybatisUtils.getSqlSession();
// 执行sql
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = mapper.getUserList();

for (User user:userList
) {
System.out.println(user);
}

// 关闭SqlSession,关闭操作很重要建议放到finally中
sqlSession.close();
}
}

坑点:Maven 项目配置中约定大于配置文件,所以推荐在每个 Maven 配置 xml 文件中加上以下配置

<build>  
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>

JavaWeb项目实战二(Mybatis快速入门)_安全_09