Mybatis配置学习

Mybatis介绍:

MyBatis的前身就是iBatis,iBatis本是apache的一个开源项目,2010年5月这个项目由apahce sofeware foundation 迁移到了google code,并且改名为MyBatis。
iBATIS 一词来源于“internet”和“abatis”(铁丝网)的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果集的检索。MyBatis 使用简单的 XML 或注解用于配置和原始映射,将接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 对象)映射成数据库中的记录。

  • Mybatis 结构图
    在这里插入图片描述
    在这里插入图片描述

  • Mybatis 配置

  • mybatis配置
    SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。
    mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml中加载。

  • 通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂

  • 由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。

  • mybatis底层自定义了Executor接口操作数据库,Executor接口有两个实现,一个是基本实现、一个是缓存实现。

  • Mapped Statement也是mybatis一个底层对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sql的id即是Mapped statement的id。

  • Mapped Statement对sql执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

  • Mapped Statement对sql执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过 Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。


  • 开发环境
    引入log4j打印mybatis执行sql的日志信息
mybatis-3.2.2.jar					mybatis核心包
mysql-connector-java-5.1.28-bin.jar	mysql jdbc驱动
junit-4.9.jar						单元测试
# mybatis依赖包,在mybatis.zip中提供
asm-3.3.1.jar
cglib-2.2.2.jar
commons-logging-1.1.1.jar
javassist-3.17.1-GA.jar
log4j-1.2.17.jar
slf4j-api-1.7.5.jar
slf4j-log4j12-1.7.5.jar
  • 引入DTD文件提示
    -
    在这里插入图片描述
    增加:
    在这里插入图片描述
    在这里插入图片描述
  • 引入log4j打印SQL语句
    在classpath中建立一个名叫log4j.properties的文件,内容如下:
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t]
  • 创建核心配置文件sqlMapConfig.xml
    ---- 1. 配置事务
    在这里插入图片描述
    JDBC直接使用jdbc的事务
    MANAGED 容器管理事务,mybatis 什么都不要做。

---- 2. 数据源DataSource
UNPOOLED 非池化的
POOLED 池化的
JNDI 方式

---- 3.核心配置文件 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="test">
    	<environment id="test">
    		<transactionManager type="JDBC"/>
               <dataSource type="POOLED">
                    <property name="driver" value="com.mysql.jdbc.Driver"/>
                    <property name="url" value="jdbc:mysql://localhost:3306/chat?characterEncoding=utf8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="root"/>
                </dataSource>
    	</environment>
    </environments>
</configuration>

这就是mybatis的一个典型的配置文件。在这个配置文件中,我们可以清楚得看到一些关键信息。
第一,有一个environments这个元素,在这个元素里面配置的是一个一个的environment元素,每一个environment元素有一个id做为名字,
而environments元素上面有一个default属性,引用environment元素的名称,很容易想象出他们之间的关系。在environments里面可以定义多个enviroment元素,使用default属性指定一个默认的environment。而在environment里面,定义了一组数据库相关的东西,包括transactionManager,这个元素代表着怎么去管理事务,而下面的dataSource就很明显了,代表连接数据库的相关信息。在这里,dataSource有一个属性type,这里我们写的是POOLED,很明显,使用连接池来做mybatis的连接提供。在dataSource里面,配置了四个属性,做为数据库连接信息配置

  • POJO对象
public class TUser {

	private int id;
	private String name;
	private Integer age;
	private Integer roleId;
	//此处省略getter/setter方法
	}
  • 创建映射文件 TUserMapper.xml
    在mybatis中,需要自己去控制sql,所以我们的配置文件会像下面这样。在User的同级包下,添加一个XML文件,起名为UserMapper.xml,代表这个文件是User对象的映射文件
<?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.feian.pojo">
	<select id="find" resultType="com.feian.pojo.TUser">
		select * from t_user
	</select>
</mapper>
  • 在sqlMapConfig.xml 声明TUserMapper.xml
<!-- 声明xml文件 -->
	<mappers>
		<mapper resource="com/feifan/pojo/TUserMapper.xml" />
	</mappers>

猜你喜欢

转载自blog.csdn.net/qq_16183731/article/details/84729440