MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
在学习Maven之前最好先去复习一下JDBC、Mysql、JAVA基础、Junit和Maven知识。
首先,我们先在IDEA新建一个MAVEN的普通项目并在pom.xml文件内导入相关所需要的jar包。(等待导入的过程中最好去确认下setting->Build,Execution->Build Tools->Maven里使用的版本是不是自己下载安装的版本)
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
我们再新建一个子module-MyBatis-01创建项目便于后期的维护。因为每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的,所以采用XML 中构建SqlSessionFactory。先创建XML文件里面包含了对 MyBatis 系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器。
XML 头部的声明,它用来验证 XML 文档的正确性。environment 元素体中包含了事务管理和连接池的配置。mappers 元素则包含了一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。为了避免产生乱码问题,在url后缀加上useUnicode=true&characterEncoding=UTF-8"。
SqlSessionFactoryBuilder这个类可以被实例化、使用和丢弃,一单创建sqlSessionFactory就不再需要它; SqlSessionFactory它一旦被创建就在应用运行期间一直存在;SqlSession每个线程都有一个,但不是线程安全的。即每收到一个Http请求就会打开一个Session,返回一个响应就关闭它。一定要记得Finnaly块进行关闭操作!
然后通过Resources 的工具类从类路径位置加载资源文件构建出 SqlSessionFactory 实例。
String resource;
InputStream inputStream;
{
try {
//使用MyBatis获取sqlSessionFactory对象
resource = "org/mybatis/example/mybatis-config.xml";
inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSession getSessin(){
//这样就可以从sqlSessionFactory中获得sqlSession实例
//它包含了面向数据库执行执行所有sql语句的方法
SqlSession sqlSession = sqlSessionFactory.openSession();
return sqlSession;
}
紧接着我们要建数据库、建实体类,具体步骤我就一笔带过啦!
定义Dao层的包,并实现XML文件相当于dao的实现类!
<?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.dao.UserDao"> //命名空间绑定接口类的路径
//select查询语句
<select id="getUser" resultType="User"> //id为重写的方法名 resultType为方法返回类型
select * from mybatis.user; //查找mbatis数据库的user表
</select>
</mapper>
然后要mapper注册,在mybatis-config.xml添加实现UserDao的xml文件的映射关系(这就类似于要在web.xml里面配置Servlet映射)。
<mappers>
<mapper resource="com/dao/UserMapper.xml"/>
</mappers>
</configuration>
运行是出现了这个错误...
在Project Structure里面修改了
project setting里修改了
Seetting ->Build->Java compiler里面修改
再不行就修改pom.xml文件
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>11</java.version>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
这样应该就可以了(注意! 最好是修改父module的pom.xml上或者全部pom.xml都修改),然后配置项目文件的导出。
回顾过程:
1.导入mybatis和mysql的jar包
2.创建mybatis-config.xml配置数据库文件,创建MyBatisUtils工具类加载初始化xml文件
3.写实体类和接口,写接口的实现类XML文件,绑定标签、方法和返回类型,编写sql语句
4.写test测试