/**
* 一、mabatis是一个持久层框架,是apache下的顶级项目
* mybatis让开发者专注于sql中,通过mybatis提供的映射方式
* 自由灵活生成(半自动化,大部分需要开发者编写sql)满足需要的sql语句
* mybatis可以将向preparedStatement中的输入参数自动进行输入映射,
* 将查询结果集灵活映射成Java对象(输出映射)
*
* 二、SqlMapConfig.xml(mybatis的全局配置文件) 配置mybatis的运行环境
* 配置了数据源,事务等mybatis运行环境
* 配置映射文件(配置sql语句)
* mapper.xml(映射文件)
*
* 三、SqlSessionFactory会话工厂
* 作用:创建SqlSession
*
* SqlSession(会话)
* 作用:操作数据库(发出sql增删改查)
*
* Executor(执行器)
* 作用:SqlSession内部通过执行器操作数据库
* POJO(Plain Ordinary Java Object)简单的Java对象,普通的JavaBeans
* mapperd statement(底层封装对象) 输入参数类型:Java简单类型,hashmap,pojo自定义
* 作用:对数据库存储封装,包括sql语句,输入参数、输出结果类型
*
* mysql
*
* 四、Mybatis的运行原理(执行流程)
* 1、创建mybatis的全局配置文件
* 2、通过配置文件创建会话工厂SqlSessionFactory
* 3、根据会话工厂创建会话SqlSession,一个接口,面向用户即程序员的接口
* 4、SqlSession会话操作数据库,内部通过执行器(也是一个接口:基本执行器,缓存执行器)
* 操作数据库
* 5、mapped statement(底层封装对象)
* @author 陌上花开
*
*/
Mybatis:
1、mybatis配置文件SqlMapConfig.xml
2、mybatis核心:
mybatis输入映射
mybatis输出映射
3、mybatis的动态sql
Ibatis:
1、创建数据库,并在eclipse中创建与之对应的JavaBean User.java
private int userId;
private String userName;
2、导入jar包
3、建立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>
<!-- 和spring整合后environments配置將移除 -->
<environments default="development">
<environment id="development">
<!-- 使用jdbc事物管理,事物控制由mybatis進行 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由mybatis管理 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/travel?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
4、创建sqlmap文件夹,在其文件夹下创建数据库表与sql语句的映射配置文件User.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">
<!-- namespace命名空间,作用就是对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用
-->
<mapper namespace="test">
<!-- 在映射文件中配置很多sql语句 -->
<!-- 通过select执行数据库查询
id:标识映射文件中的sql,称为statement的ID
将sql语句封装到mappedStatement对象中
#{}标识一个占位符号
parameterType:指定输入参数的类型
#{userId}:其中的userId表示接收输入的参数,参数名就是userId
如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或其他名称
resultType:指定sql输出结果所映射的Java对象类型
select指定resultType表示将单条记录所映射成的Java对象
-->
<select id="findUserById" parameterType="int" resultType="com.fzy.mybatis.po.User">
select * from users where userId = #{userId}
</select>
</mapper>
5、在mybatis配置文件中,加载映射配置文件
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
6、为了看到整个执行的过程,可以配置一个log4j.properties让log4j生效
# Global logging configuration
# 在开发环境下日志级别要设置称DEBUG,生产环境设置成info或error
log4j.rootLogger=DEBUG, stdout
# MyBatis logging configuration...
#log4j.logger.org.mybatis.example.BlogMapper=TRACE
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
# Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
7、通过配置文件创建会话工厂SqlSessionFactory
//mybatis配置文件
String resource = "SqlMapConfig.xml";
//SqlSession sqlSession;
//得到配置文件名
inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
8、根据会话工厂创建会话SqlSession(一个接口,面向用户即程序员的接口,作用是操作数据库(发出sql增删改查))
//通过工厂得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
9、SqlSession操作数据库,内部通过执行器(executor:一个接口,基本执行器,缓存执行器)操作数据库
10、mappedStatement(底层封装对象),作用:对数据库存储封装,包括sql语句,输入参数,输出结果类型。
//通过SQLSession操作数据库
//第一个参数:映射文件中statement的id,等于=namespace.statement的id
//第二个参数:指定和映射文件中所匹配的parameterType类型的参数
// sqlSession.selectOne结果是与映射文件所匹配的resultType类型的对象
User user = sqlSession.selectOne("test.findUserById", 1);
System.out.println(user);
//释放资源
sqlSession.close();
原文:https://www.cnblogs.com/fzywhy/p/9577832.html