标签:eve 编写 rop action 模型 java类 完全 文档 方法体
大家都知道当前比较流行的框架,如Spring、SpringMVC、Hibernate、Mybatis等框架,那今天咱们来讲讲当前比较流行的企业框架Mybatis。
首先先来介绍一下Mybatis这个框架:Mybatis是一个开源的数据持久化层框架,它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询,存储过程和高级映射,几乎消除了所有的JDBC代码和参数设置及结果集的检索。
接下来说说Mybatis的优缺点:
优点:与JDBC相比,减少了50%以上的代码量,最简单的持久化框架,小巧简单易学,SQL代码从程序中彻底分离,可重用。提供了XML标签,支持编写动态SQL,提供映射标签,支持对象与数据库的ORM字段映射。那么什么是ORM呢?
ORM(Object RelationMapping)即对象关系映射,是一种数据持久化技术,它在对象模型和关系型数据库之间建立对应关系。
接下来说说Mybatis的缺点:
SQL语句编写量大,对于开发人员有一定的要求,数据库移植性差
首先我们的去Mybatis的官方网站(http://mybatis.org)下载最新Release版本的Mybatis
压缩包解压后可以看到一下的目录结构
在根目录下存放着mybatis-3.2.2.jar,为Mybatis的jar文件,Mybatis-3.2.2.pdf为Mybatis官方使用文档
lib目录下存放着编译依赖包,接下来来介绍一下Mybatis编译的依赖包
其次是mybatis-3-mybatis-3.2.2.zip(Mybatis源码包):里面是Mybatis的所有源代码
目录结构就讲到这,至于具体创建Mybatis项目在这我就不多说了
接下来再介绍一下Mybatis的核心配置文件configuration.xml
Mybatis核心配置文件主要用于配置数据库连接和Mybatis运行时所需要的各种特性,包含了设置和影响Mybatis行为的属性
接下来说说配置文件中的基本要素
<?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>
<!-- 引入database.properties -->
<properties resource="database.properties"/>
<!-- 配置mybatis的log实现LOG4J -->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!-- 配置mybatis多套运行环境 -->
<environments default="development">
<environment id="development">
<!-- 配置事务管理,采用JDBC的事务管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- POOLED:mybatis自带的数据源,JNDI:基于Tomcat的数据源 -->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<!-- 将mapper文件加入到配置文件中 -->
<mappers>
<mapper resource="POJO/UserMapper.xml"/>
</mappers>
</configuration>
mybatis-config.xml文件的几个常用元素的作用如下:
在这里我稍微提一下注意事项:mybatis-config.xml文件的元素节点是有一定的顺序,节点位置若不按照顺序排位的话,那么XML文件会报错,至于元素的排列顺序是:
1.properties
2.settings
3.typeAliases
4.typeHandlers
5.objectFactory
6.objectWrapperFactory
7.plugins
8.environments?
9.databaseIdProvider
10.mappers
常用元素的顺序大致就是这样的,大家可以参考一下
有了Mybatis的核心配置文件后,接下来就要准备持久化类和SQL映射文件
那么什么是持久化类呢?持久化类是指其实例状态需要被Mybatis持久化到数据库中的类,在应用的设计中,持久化类通常对应业务中的业务实体,Mybatis一般采用POJO编程模型来实现持久化类,与POJO类配合完成持久化工作是Mybatis最常见的工作模式
既然都讲到这了,我就再讲讲什么是POJO吧!
POJO(Plain Ordinary Java Object):从字面上来说就是普通的Java对象,POJO类可以简单地理解为符合JavaBean规范的实体类,它不需要继承和实现任何特殊的Java基类或者接口,JavaBean对象的状态保存咋属性中,访问属性必须通过对应的getter和setter方法
接下里我用实例来向大家演示一下
public class User {
private Integer id; //id
private String userCode; //用户编码
private String userName; //用户名称
private String userPassword; //用户密码
private Integer gender; //性别
private Date birthday; //出生日期
private String phone; //电话
private String address; //地址
private Integer userRole; //用户角色
private Integer createdBy; //创建者
private Date creationDate; //创建时间
private Integer modifyBy; //更新者
private Date modifyDate; //更新时间
//省略getter,setter方法
接下来,继续进行SQL映射文件的创建,完成与POJO(实体类)的映射,该文件也是一个XML文件,命名为UserMapper.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="POJO.UserMapper">
<!-- 查询用户列表记录数 -->
<select id="count" resultType="int">
select count(1) as count from smbms_user
</select>
</mapper>
上面的代码就是所定义的SQL语句,其中元素的含义是
1.mapper:映射文件的根元素节点,只有一个属性namespace
2.select:表示查询语句,是Mybatis最常用的元素之一,常用属性如下
resultType属性:表示SQL语句返回值类型,此处通过SQL语句返回的是Int数据类型
SQl映射文件也弄好了,接下来就是创建测试类了,具体的实现步骤:
1.读取全局配置文件:mybatis-config.xml
String resource="mybatis-config.xml";
//获取mybatis-config.xml文件的输入流
InputStream is=Resource.getResourceAsStream(resource);
2.创建SQLSessionFactory对象,此对象可以完成对配置文件的读写
SQLSessionFactory factory=new SqlSessionFactoryBuilder().build(is);
3.创建SQLSession对象,此对象的作用是调用mapper文件进行数据操作,需要注意的是必须先将mapper文件引入到mybatis-config.xml中才能起效
int count=0;
SqlSession sqlSession=null;
sqlSession=factory.openSession();
//Mybatis通过mapper文件的namespace和子元素的id来找到对应的SQL,从而执行查询操作
count=sqlSession.selectOne("cn.smbms.dao.user.UserMapper.count");
logger.debug("UserMapperTest count------>"+count);
4.关闭SqlSession对象
sqlSession.close();
上面咱们已经成功地将Mybatis搭建出来了,下面再来说说Mybatis的核心要素
首先介绍一下Mybatis的核心接口和类
SqlSessionFactoryBuilder负责构建SQLSessionFactory,并且提供了多个build()方法的重载,分别是
SqlSessionFactoryBuilder的最大特点就是:用过即丢。一旦创建了SQLSessionFactory对象之后,这个类就不再需要存在了,因此SqlSessionFactoryBuilder的最佳范围就是存在于方法体内,也就是局部变量而已。
SqlSessionFactory简单的理解就是创建SqlSession实例的工厂。所有的Mybatis应用都是以SQLSessionFactory实例为中心,SQLSessionFactory的实例可以通过SqlSessionFactoryBuilder对象来获取
SqlSessionFactory对象一旦创建,就会在整个应用程序中始终存在。没有理由去销毁或再创建它,并且在应用程序运行中也不建议多次创建SQLSessionFactory,怎么说呢,你可以吧SqlSessionFactoryBuilder当做创建工厂的工人,而SQLSessionFactory就是创建好的工厂,一般来说工厂创建好了之后,工人就不需要了,而工厂会被保留下来,这就是它们的生命周期吧!
以上就是本文所介绍Mybatis的内容了,大致的核心都介绍完了,接下来你可以自己去消化一下,加油!
标签:eve 编写 rop action 模型 java类 完全 文档 方法体
原文地址:https://www.cnblogs.com/MagicLoser/p/9922029.html