第一个mybatis程序–>配置mybatis(超详细、小白也能成功配置)
写本文章的目的:最近正在看狂神的视频学习mybatis,但是跟着视频配置下来仍然有一些小错误,导致花费了很多时间去找bug。在此记录一下,祝大家学习愉快。本文非常详细,适合小白食用。大佬跳过即可_
思路流程:搭建环境–>导入Mybatis—>编写代码—>测试
本程序的目的:利用mybatis查询数据库的信息。
本文章涉及的资源(点击直达):
狂神教学视频网址
视频对应文档网址
官方文档
开始配置
1、搭建环境
1.1、搭建实验数据库(在mysqlworkbench软件中创建一个表并添加数据,你用什么软件都可以,只要把表格建好并添加数据。)
--“CREATE DATABASE`mybatis`“只在第一次创建数据库的时候才使用,
--之后如果在该数据库中建表就不用写这句话。
CREATE DATABASE `mybatis`;
USE `mybatis`;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(20) NOT NULL,
`name` varchar(30) DEFAULT NULL,
`pwd` varchar(30) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `user`(`id`,`name`,`pwd`) values (1,'狂神','123456'),(2,'张三','abcdef'),(3,'李四','987654');
MySqlWorkbench运行结果如下:
1.2、在IDEA中新建一个Maven项目–>删除src目录–>导入maven依赖
(1)
(2)
(3)在pom.xml文件(properties标签后)加入代码。
注意:导入的数据库依赖的时候,数据库的版本号一定要和你自己使用的数据库版本一致
<!--导入依赖-->
<dependencies>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<!--一定要添加自己使用的数据库的对应版本号-->
<version>8.0.20</version>
</dependency>
<!-- junit 依赖添加-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>RELEASE</version>
<scope>maim</scope>
</dependency>
</dependencies>
<!--当报错target文件夹下面看不到加载的配置文件需要添加依赖-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
2、导入MyBatis
2.1在IDEA里面连接前面写好的数据库。
注意:你的IDEA一定要是专业版的侧栏才有Database。社区版的建议去官网下一个专业版(学生认证即可免费使用)。
点击ok就可以了,建立成功如下:
2.2编写MyBatis核心配置文件。
(1)创建“mybatis-config.xml”配置文件。
(2)核心配置文件:连接数据库
注意:需要修改的地方—>配置文件中的mysql账号密码一定要写你自己的。
<?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=utf8"/>
<!--自己的mysql的账号密码-->
<property name="username" value="root"/>
<property name="password" value="12345678"/>
</dataSource>
</environment>
</environments>
<!--容易忘记:每写一个Mapper.xml都需要在mybatis核心配置文件里面注册!!!-->
<mappers>
<mapper resource="com/zzzl/dao/UserMapper.xml"/>
</mappers>
</configuration>
(3)编写MyBatis工具类
理解编写该工具类的目的(官方文档解释):每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件来构建出 SqlSessionFactory 实例。–>有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。(SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句)。
main–>java–>创建utils包–>创建MybatisUtils工具类
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
//读取配置文件,new获取sqlSessionFactory对象。
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
//获取SqlSession连接
//既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
// SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
3、编写代码
文件夹如下:
(1)实体类User(为数据库中的变量封装–> 构造,有参,无参、set/get、toString() )
在这里插入代码片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 + '\'' +
'}';
}
}
(2)Dao文件夹下–> 编写UserMapper接口类
public interface UserMapper {
List<User> selectUser();
}
(3)编写UserMapper.xml配置文件(文件夹中没有UserMapper接口类的实现类,这里的UserMapper.xml就充当了UserMapper实现类的作用。因为我们是用了mybatis框架,所以我们可以直接在配置文件中写SQL语句。)
注意:需要修改的地方—>配置文件中的namespace、resultType需要根据你自己的全限定类名(包名+类型)修改。
<?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:绑定一个对应的的接口 id:对应接口里面的方法名字。resultType:返回一个结果(结果是User类型的)。-->
<mapper namespace="com.zzzl.dao.UserMapper">
<select id="selectUser" resultType="com.zzzl.pojo.User">
select * from user
</select>
</mapper>
特别注意:每写一个Mapper.xml都需要在mybatis核心配置文件mybatis-config.xml里面注册!(文章最前面展示的mybatis-config.xml配置文件中已经添加了的,这里不需要再添加一次,只是提醒⏰^_ ^)4、测试
创建测试文件
public class test {
@Test
public void test() {
//获取SqlSession对象。
SqlSession session = MybatisUtils.getSqlSession();
//方法一:获取getMapper实现接口,并调用该对象的方法(这个方法在配置文件中配置了的,相当于该方法的实现)
UserMapper mapper = session.getMapper(UserMapper.class);
List<User> users = mapper.selectUser();
// System.out.println(users); 一个集合
for (User user: users){
System.out.println(user);
}
session.close();
}
}
总结:是不是觉得配置mybatis太麻烦不如直接写JDBC语句?但是配置完一次后面就方便很多了。祝你学习愉快。