一、MyBatis 到底是什么?
MyBatis框架也被称为ORM(Object/ Relational Mapping,对象关系映射)框架。所谓ORM,就是一种为了解决面向对象与关系型数据库中数据类型不匹配的技术,通过描述Java对象与数据库表之间的映射关系自动将Java应用程序中的对象持久化到关系型数据库的表中。
概述:Mybatis 是一个支持普通数据SQL查询、存储过程以及高级映射的持久层框架。开发者在开发的过程中只需对sql语句本身进行关注,不用花费太多精力去处理加载驱动、创建连接、创建Statment 语句的复杂过程。使得java开发人员可以使用面向对象的编程思想来操作数据库。
二、MyBatis 的使用和下载过程
使用方式:
方式1:官网下载地址 :https://github.com/mybatis/mybatis-3/releases 载并解压mybatis-3.4.2.zip压缩包,会得到一个名为mybatis-3.4.2的文件夹,里面有核心包mybatis-3.4.2.jar和一个lib文件夹(里面有MyBatis的依赖包)。
下载的后将jar 包放入的web工程下的lib 文件夹。
方式2: 可在 https://mvnrepository.com/ 下搜索。Mybatis 得到搜索结果如下:
点击版本号后通过maven 来进行管理jar包。只需在pom.xml 文件中导入:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency>
在方式二的条件可根据不同项目工具进行不同操作。以上方式的使用,可根据开发的项目进行选择。当然使用maven 项目工具管理,更加方便。注意:如果底层采用的是MySQL数据库,还需要将MySQL数据库的驱动JAR包添加到应用程序的类路径中;如果采用其他类型的数据库,同样需要将对应类型的数据库驱动包添加到应用程序的类路径中。
三、入门程序测试案例:
下面代码片段是关于MyBatis 入门测试的案例。这里使用的工具是IDEA和maven管理工具包。该代码片段是通过xml 配置实现。当然实现的方式还有通过注解、实现dao接口的实现类。
数据库可根据自行在本地创建。
1、Pom.xml 文件需要添加的依赖:
案例结构
2、Resources 文件夹下的配置文件:
2.1 Log4j.properties
#SetrootcategoryprioritytoINFOanditsonlyappendertoCONSOLE.
#log4j.rootCategory=INFO,CONSOLEdebuginfowarnerrorfatal
log4j.rootCategory=debug,CONSOLE,LOGFILE
#SettheenterpriseloggercategorytoFATALanditsonlyappendertoCONSOLE.
log4j.logger.org.apache.axis.enterprise=FATAL,CONSOLE
#CONSOLEissettobeaConsoleAppenderusingaPatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{ISO8601}%-6r[%15.15t]%-5p%30.30c%x-%m\n
#LOGFILEissettobeaFileappenderusingaPatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=d:\axis.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=%d{ISO8601}%-6r[%15.15t]%-5p%30.30c%x-%m\n
文件包含全局的日志配置、MyBatis的日志配置和控制台输出,其中MyBatis的日志配置用于将com.ssm包下所有类的日志记录级别设置为DEBUG。对于log4j 的使用后续将会推出一篇详细文章做讲解。
2.2 Src 创建下的resouce 目录中创建MyBatis 核心配置文件:SqlMapConfig.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="mysql">
<!--配置mysql 环境-->
<environment id="mysql">
<!--事务类型-->
<transactionManager type="JDBC"></transactionManager>
<!--数据源(连接池)-->
<dataSource type="POOLED">
<!--配置连接数据库的四个基本信息 -->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/数据库名称"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--指定映射配置文件的位置 每个dao 独立的配置文件-->
<mappers>
<mapper resource="com/chen/domain/dao/userDao.xml"/>
</mappers>
</configuration>
2.3 在resources 目录下创建与main目录下的java资源中的dao 的相同结构目录。
映射配置文件 UserDao.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="com.chen.domain.dao.IUserDao">
<!--配置查询所有-->
<select id="findAll" resultType="com.chen.domain.entity.User">
select * from user
</select>
</mapper>
3、Main 目录下的java资源
3.1 Entity 包下的User.java 文件
根据数据库表中的字段创建相关变量。创建后需要实现setter和getter 方法、toString 方法。
3.1 创建dao 包下的持久层接口
import java.util.List;
/**
* Created by Chen
* 2020/5/22 16:21
* 持久层接口
*/
public interface IUserDao {
/**
* @parm
* 查询所有
*
* */
List<User>findAll();
3.2可在test包下创建测试数据类。也可通过main 方法进行数据测试。当然,使用Junit 做测试最好,这里的是main 方法做测试。
///测试类
/**
* @param args
* 测试类,进行数据测试。
*
* */
public static void main(String[] args) throws Exception{
//1、读取配置文件
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
//2、创建SqlSessionFactory 工厂
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(is);
//3、使用工厂生成SqlSession 对象
SqlSession session = factory.openSession();
//4、使用SqlSession 创建dao 接口的代理对象
IUserDao userDao = session.getMapper(IUserDao.class);
//5、使用代理对象执行方法
List<User> users = userDao.findAll();
//遍历
for (User user:users){
System.out.println(user);
}
//6、释放资源
session.close();
is.close();
}
对于测试文件的相关调用方法将会在下一篇学习文章做详解。有错误之处,可点评,修正。