JavaWeb项目实战二(Mybatis快速入门)
Posted OceanSec
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb项目实战二(Mybatis快速入门)相关的知识,希望对你有一定的参考价值。
Mybatis
官方手册:https://mybatis.org/mybatis-3/zh/index.html
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录
获取 Mybatis
优点:
- 简单易学,灵活,使用较多
- SQL 和diamagnetic分离,提高可维护性
- 提供映射标签,支持对象与数据库的 ORM 字段关系映射
- 提供对象关系映射标签,支持对象关系组建维护
- 提供 xml 标签,支持编写动态 SQL
演示Demo
环境搭建
项目环境
- JDK 1.8
- mysql 5.7
- 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 项目
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
1.编写核心配置文件
新建 mybatis-config.xml 配置文件
<?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 中 & 符号需要使用 &
代替,MySQL 8 中需要设置时区
注意:这里每一个Mapper.XML 都需要在Mybatis核心配置文件中注册
2.编写工具类
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例
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 接口、接口实现类
实体类
Dao 接口
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快速入门)的主要内容,如果未能解决你的问题,请参考以下文章
13.2 MyBatis Generator 快速入门(MyBatis Generator逆向代码生成工具) -《SSM深入解析与项目实战》