思路流程:搭建环境>导入Mybatis>编写代码>测试
1、导入Mybatis相关jar包
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
</dependencies>
2、编写Mybatis核心配置文件
-
查看帮助文档
<?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="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
通过使用读取数据配置文件的方式连接数据库
<?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>
<!-- 读取数据库配置文件 -->
<properties resource="database.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${user}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 要读取读取的映射文件,ORM把数据库数据转换为java对象 -->
<!-- 映射文件,告诉Mybatis怎么查询数据,并把数据转换为java对象 -->
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
使用properties配置文件进行mysql数据库连接
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/tang?useUnicode=true&characterEncoding=utf-8
user=root
password=root
3、编写Mybatis工具类
package cn.tang.util;
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;
/**
* MyBatis工具类
* 可以把工厂对象设为单例,在整个程序中,只有一个对象
*/
public class MybatisUtil {
private static SqlSessionFactory sqlSessionFactory;
/**
* 使用静态块在类加载时,只执行一次
*/
static {
// 创建会话工厂对象
try {
String resource = "mybatis-config.xml";
InputStream in = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 提供一个生成 会话对象SqlSession的公共方法
*/
public static SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
4、创建实体类
public class User {
private Integer id;
private String name;
private String password;
//有参无参构造方法
//toString()
//Getter and Setter......省略自己写
}
5、编写Mapper接口类
package cn.tang.dao;
import cn.tang.pojo.User;
import java.util.List;
public interface UserMapper {
List<User> selectUser();
}
6、编写UserMapper.xml配置文件
区别点来了,Mybatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集的过程
不思考的理解就是把该代码复制在xml文件中,在xml文件中修改SQL语句,通过映射可以实现数据库操作,不成熟的想法。
代码如下:
<?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="cn.tang.dao.UserMapper">
<!-- id:接口方法 -->
<!-- resultType:返回数据类型 注意!!!返回结果需要写全限定名,即绝对路径名 -->
<select id="selectUser" resultType="cn.tang.pojo.User">
select * from user
</select>
</mapper>
7、编写测试类
Junit包测试
@Test
public void UserMapperTest(){
//第一步获取SqlSession对象
SqlSession sqlSession = MybatisUtil.getSqlSession();
//方法一:使用getMapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
List<User> userList = userMapper.selectUser();
//方法二:使用selectList,现在不推荐使用,过时了
//List<User> userList = sqlSession.selectList("cn.tang.dao.UserMapper.selectUser");
for (User user : userList) {
System.out.println(user);
}
//最后关闭流
sqlSession.close();
}
测试结果如下:
8、出现报错了!哈哈哈
1、第一个错误
org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.io.IOException: Could not find resource UserMapper.xml
找不到资源UserMapper.xml
原因:往上翻,看Mybatis核心配置文件
<mappers>
<mapper resource="UserMapper.xml"/>
</mappers>
路径写错了,需要写绝对路径
修改如下:
<!-- 要读取读取的映射文件,ORM把数据库数据转换为java对象 -->
<!-- 映射文件,告诉Mybatis怎么查询数据,并把数据转换为java对象 -->
<!-- 每一个Mapper.XML都需要在Mybatis核心配置文件中注册 -->
<mappers>
<mapper resource="cn.tang.dao.UserMapper.xml"/>
</mappers>
记得maven进行clean后再执行。
2、第二个错误
java.lang.ExceptionInInitializerError at cn.tang.dao.daoTest.UserMapperTest(daoTest.java:14)
初始化异常
使用maven必碰见的问题之一;
Maven静态资源过滤问题解决方法:在pom.xml配置文件中加入
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
个人学习笔记,主要目的是记录自己学习过程,遇到问题可以翻看笔记。其次如果能帮助别人,那是我的荣幸。如有错误,烦请指教,谢谢~