第一个Mybatis程序
1.环境搭建
1.1 创建数据库
CREATE DATABASE `mybatis`
1.2 创建表
CREATE TABLE `user` (
`id` INT(20) NOT NULL PRIMARY KEY,
`name` VARCHAR(45) NOT NULL,
`pwd` VARCHAR(45) NOT NULL)
ENGINE = InnoDB
DEFAULT CHARSET = utf8
1.3 添加数据
INSERT INTO `user`(`id`, `name`, `pwd`) VALUES
(1, '张三', '123456'),
(2, '李四', '123456'),
(3, '王五', '123456')
2.在Maven项目中导入Mybatis依赖
2.1在pom.xml文件中添加依赖
<dependencies>
<!--导入mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!--mybatis-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
3.编写Mabatis的代码
3.1编写配置文件,连接数据库
mybatis-config.xml
<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/mybatis?useUnicode=true&useSSL=true&autoReconnect=true&characterEncoding=utf8&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="075290"/>
</dataSource>
</environment>
</environments>
</configuration>
将property中四个属性的value修改成自己的数据库对应参数
3.2编写Mybatis工具类
Mybatis工具类的目的是与数据库连接,并可以生成SqlSession对象,只用写一次就可以不管了
/**
* @author leogoat
* SqlSessionFactory --> SqlSession
* 获取SqlSessionFactory,用于生成SqlSession
* SqlSession可以执行sql语句,类似于PrepareStatement
*/
public class MybatisUtils {
private static SqlSessionFactory sqlSessionFactory;
static{
//静态代码块在JVM加载该类时就会加载,并且只加载一次
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
从SqlSessionFactory中获取SqlSession
*/
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
3.3编写实现代码
经过上述步骤,我们已经配置好了与数据库连接的必要配置文件和工具类,接下来就是写具体的类和接口来实现对数据库的增删改查
3.3.1实体类
User.java
/**
* @author leogoat
* User实体类
*/
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;
}
3.3.2接口类
UserDao.java
/**
* @author leogoat
*/
public interface UserDao {
/**
* get user list
* @param null
* @return List<User>
*/
List<User> getUserList();
}
3.3.3接口实现类
在之前,我们会写一个接口实现类UserDaoImpl.java来实现具体的增删改查操作,在Mabatis中使用xml文件替代,不需要再去写重复的代码。
参数说明:
-
namespace:绑定的接口类
-
id:执行接口类中的方法名
-
resultType:返回的结果类型
提示:参数填写对应文件所在包的完整路径
3.3.4在mabatis-xml文件注册接口
<mappers>
<mapper resource="com/hu/dao/UserMapper.xml"/>
</mappers>
此时完整的mabatis-xml为:
4.测试
public class UserDaoTest {
错误总结:
-
com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效
-
原因:xml文件中声明的编码与xml文件本身保存时的编码不一致
-
解决方案,修改项目编码:
-
File->Settings>Editior>File Encodings
全都勾选为UTF-8

-
org.apache.ibatis.binding.BindingException: Type interface com.hu.dao.UserDao is not known to the MapperRegistry
-
原因:没有在XML文件注册接口类
-
解决方案:
<mappers>
<mapper resource="com/hu/dao/UserMapper.xml"/>
</mappers> -
-
无法找到配置文件
-
原因:Maven在build项目没有把xml以及properties等资源文件包括进去,只生成了class文件
-
解决方案,在pom.xml文件添加下面的内容,将java和resources目录下文件都include到build
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
-
-
com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���ʱ��' is unrecognized
-
原因:提示连接的url中设置的时区存在问题
-
解决方案:修改连接jdbc的url参数,添加:serverTimezone=UTC
-
完整的url参数:
value="jdbc:mysql://localhost:3306/mybatis?useUnicode=true&useSSL=true&autoReconnect=true&characterEncoding=utf8&serverTimezone=UTC" -

浙公网安备 33010602011771号