第一次使用MyBatis
MyBatis学习第一步
一:
我们要导入maven依赖置于pom.xml中:
我们需要mysql与mybatis的依赖 maven仓库地址
<!-- mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!-- mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
毫无疑问学一门新知识他的官方文档是必不可少的,mybatis官方文档
二:
XML 配置文件中包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)。我们来配置其核心文件。
driver, url, username, password 为主动配置因素
<?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?&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/wang/dao/UserMapper.xml" />
</mappers>
</configuration>
2.1
建议文件名字与官方一致
2.2
-
从 XML 中构建 SqlSessionFactory
-
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。
public class MybatisUtils { private static SqlSessionFactory sqlSessionFactory; static{ //使用MyBatis第一步, 获取sqlSessionFactory try { String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } //既然有了SqlSessionFactory,顾名思义,我们就可以从中获得SqlSession的实列 //SqlSession 完全包含了面向数据库执行SQL命令所需的所有方法 public static SqlSession getSqlSession(){ return sqlSessionFactory.openSession(); } }
三:
探究已映射的 SQL 语句,接下俩我们做一个用户查询的例子:
3.1
首先准备好数据库
建立相应的实体类
建立相应的Mapper
userDao
public interface UserDao {
List<User> getUserList();
}
UserMapper
<?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="com.wang.dao.UserDao">
<select id="getUserList" resultType="com.wang.pojo.User">
select * from mybatis.user
</select>
</mapper>
这里的Dao均为更名为Mapper, id为方法名 , namespace为全限定名,resultType 为结果集类型
3.2
最后我们进行测试
public class UserDaoTest {
@Test
public void test(){
//第一步,获得sqlSession对象
SqlSession sqlSession=null;
try {
sqlSession = MybatisUtils.getSqlSession();
UserDao mapper = sqlSession.getMapper(UserDao.class);
List<User> userList = mapper.getUserList();
for (User user:userList) {
System.out.println(user);
}
}catch (Exception e){
e.printStackTrace();
}
finally {
//关闭sqlSession
sqlSession.close();
}
}
}
四:你可能遇到的错误
- 配置文件没有注册
- 绑定接口不对
- 方法名不对
- 返回类型不对
- Maven导出资源问题
- 核心配置文件中不能有中文注释
- jdbc缺少时区配置