写在前面:本篇文章主要记录和分享Idea配置Mybatis过程中遇到的问题和配置步骤。
要求:Maven已经配置完毕!
目录
2.2在resource文件下配置Mybatis-config.xml
1.创建Mybatis项目
1.1创建一个纯净的maven项目
1.2 创建数据库
在mysql中创建一个名为mybatis的数据库,然后创建一个user表:
CREATE DATABASE `mybatis`;
USE `mybatis`;
CREATE TABLE `user`(
`id` INT(20) NOT NULL PRIMARY KEY,
`name` VARCHAR(30),
`pwd` VARCHAR(30)
)ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `user`(`id`,`name`,`pwd`) VALUES
(1,'张三','123456'),
(2,'李四','123456'),
(3,'王五','147258');
1.3在IDEA中连接数据库
1.4创建包和文件
为了保持和我的一致性,建议创建和我一样的包和文件,能更好的了解配置过程和测试过程。
1.在main\java文件下创建dao、pojo、utils包,在test\java目录下创建com.liu.dao包
2.在dao层下创建UserMapper接口和UserMapper.xml文件
package com.liu.dao;
import com.liu.pojo.User;
import java.util.List;
public interface UserMapper {
//查询全部用户
List<User> getUserList();
}
<?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.liu.dao.UserMapper">
<!--select查询语句-->
<select id="getUserList" resultType="com.liu.pojo.User">
select * from mybatis.user
</select>
</mapper>
3.在pojo中创建User.java(相当于JavaBean),utils中创建MybatisUtils.java(工具类)
package com.liu.pojo;
//实体类
public class User {
private int id;
private String name;
private String pwd;
public User(int id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
}
public User() {
}
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 + '\'' +
'}';
}
}
工具类MybatisUtils
package com.liu.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;
//工具类SqlSessionFactory 构建 sqlSession
public class MybatisUtils {
//提升作用域
private static SqlSessionFactory sqlSessionFactory;
static {
//一开始就加载,按照官方的代码进行操作
InputStream inputStream = null;
try {
//获取mybatis 第一步:获取SqlSessionFactory对象
String resource="Mybatis-config.xml";
inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
4.编写测试类
在test\java\com.liu.dao下创建UserDaoTest文件
代码如下:
package com.liu.dao;
import com.liu.pojo.User;
import com.liu.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
public class UserDaoTest {
@Test
public void test(){
//第一步:获得salSession对象
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
sqlSession.close();
}
}
以上项目的基本架构已经完成,主要教大家配置过程,先让代码跑起来,至于过程和细节就需要读者细细思考了。
2.项目xml文件配置
2.1配置maven文件pom.xml
这是配置mybatis需要的jar包,将这段代码复制后刷新maven即可完成jar包导入。此处需要注意的是MySQL驱动的version版本号为电脑上安装的MySQL版本号。版本号查询可以在DOS命令中输入:
mysql -h localhost -u username -p password
<!--导入依赖-->
<dependencies>
<!--MySQL驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
接下来这段代码是为了使资源路径同步你创建的文件:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
2.2在resource文件下配置Mybatis-config.xml
这段代码需要注意的问题:
1.default和id都为development
2.driver的路径有区别:数据库5.7版本左右为 com.mysql.jdbc.Driver
数据库8.0版本以后为 com.mysql.cj.jdbc.Driver
3.url配置容易出问题,配置方法多种多样,这里我一直用的是:
jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&serverTimezone=UTC
4.一定要配置mapper,mapper的地址为dao层下的实现接口的xml配置文件,这个文件就是写数据库代码的。
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.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/liu/dao/UserMapper.xml"/>
</mappers>
</configuration>
3.连接测试
在测试类中测试查询,可以在控制台发现,输出结果已显示,配置成功。
4.常见问题
1.数据库查询空指针异常:检查resource下的配置文件是否正确
2.字符集错误:Cause: com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 2 字节的 UTF-8 序列的字节 2 无效。
原因:pom.xml中的filtering标签应为false(src/main/java目录下)
3.Mybatis-config.xml配置中未添加mapper标签内容。
4.一定要注意mysql的maven配置版本,这次是我在吃亏后,又回来补充了。
配置不易,希望本篇文章能帮助到你哦~