1.介绍
-
开发环境:
- eclipse
- Mysql 5.7.29
-
jar包
mybatis-3.5.4.jar
mysql-connector-java-8.0.15.jar
1.1什么是Mybatis
[官网简介][https://mybatis.org/mybatis-3/zh/index.html]
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
什么是框架:
比如:一张报名表,因为有了条条框框,所以你只需要在对应的地方填你的个人信息可以了。
假如没有了框架,给你一张白纸,让你填写报名,这肯定是不方便的。
1.2为什么要用Mybatis
- 简单易学使用人多,方便
- 传统的JDBC代码太复杂了
- sql和代码分离
- 等等
2.导入jar包
2.1 下载mybatis-×.×.×.jar包
下载过后是一个.zip的压缩包,解压文件,里面会有一个mybatis-×.×.×.jar的文件,
将该文件复制到项目中的WEB-INF/lib文件下
同时将连接mysql需要的jar包也放到同文件下
效果:
3.入门程序查询用户信息
3.1配置mybatis-config.xml
配置mybatis核心文件mybatis-config.xml
在项目中新建源文件夹,用于存放配置文件
这个文件可以实现数据库的连接
为什么一定要新建源文件夹,而不能选择在包里创建呢?
请移步:
Eclipse实现Mybatis出现java.io.IOException: Could not find resource XXX.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"/><!--driver-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis01?serverTimezone=UTC"/>
<property name="username" value="root"/><!--名字-->
<property name="password" value="521314"/><!--密码-->
</dataSource>
</environment>
</environments>
<!--mappers-mapper 标签,在3.4之后在进行配置-->
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
注意:
-
如果是低版本8 以下的mysql代码如下,这个跟jdbc是一样的
<property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/mybatis01"/>
-
关于mappers元素官方话:
mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。
3.2创建user,对应数据库一条记录
package mapper;
public class User {
private int id;
private String name;
private String password;
private String tel;
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + ", tel=" + tel + "]";
}
//以下还有get,set方法,篇幅问题在此省略
}
3.3定义接口和查询全部用户的方法,
import java.util.List;
public interface UserMapper {
List<User> getUserlist();//查询所有用户
}
3.4 配置UserMapper.xml
<?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">
<mapper namespace="UserMapper"> <!--空间名对应接口名-->
<select id="selectBlog" resultType="User"> <!--id对应接口中的抽象方法,resultType 返回值类型-->
select * from user <!--这是一个查询语句,查询user表-->
</select>
</mapper>
配置完之后:
回到3.1,在配置文件mybatis-config.xml中加入mappers标签并配置
3.5从 SqlSessionFactory 中获取 SqlSession
创建在utils包下创建mybatisUtils类
读取mybatis-config.xml配置信息连接数据库
package utils;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MybatisUtils {
static SqlSessionFactory sqlSessionFactory;
static {
//配置文件所在地址
String resource = "mybatis-config.xml";
try {
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static SqlSession getsqlSession() {
//通过sqlSession工厂类获取sqlSession对象
return sqlSessionFactory.openSession();
}
}
4 编写测试方法
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import mapper.User;
import mapper.UserMapper;
import utils.MybatisUtils;
public class TestMapper {
@Test
public void test() {
//获取sqlSession
SqlSession sqlSession = MybatisUtils.getsqlSession();
UserMapper mapper= sqlSession.getMapper(UserMapper.class);
List<User> userlist=mapper.getUserlist();
for(User user:userlist) {
System.out.println(user);
}
sqlSession.close();
}
}
5.举例异常
可能出现的异常:
- java.io.IOException: Could not find resource XXX.xml -解决方法
- org.apache.ibatis.exceptions.PersistenceException -解决方法