写在前面:本篇文章主要记录和分享Idea配置Mybatis过程中遇到的问题和配置步骤。
要求:Maven已经配置完毕!
目录
1.创建Mybatis项目
1.1创建一个纯净的maven项目
1.2 创建数据库
1.3在IDEA中连接数据库
1.4创建包和文件
2.项目xml文件配置
2.1配置maven文件pom.xml
2.2在resource文件下配置Mybatis-config.xml
3.连接测试
4.常见问题
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.在mainjava文件下创建dao、pojo、utils包,在testjava目录下创建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 getUserList();
}
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.编写测试类
在testjavacom.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 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
mysql mysql-connector-java8.0.23 org.mybatis mybatis3.5.2 junit junit4.12 test
接下来这段代码是为了使资源路径同步你创建的文件:
src/main/resources ***.xml false src/main/java ***.xml false
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代码如下:
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标签内容。
配置不易,希望本篇文章能帮助到你哦~



