所有资料打包下载:有需要的可以下载。下载网址如下:
等我五六篇文章写完统一发出来
一:扩展知识
1~什么是ORM?
【what】 ORM的全称是 对象/关系的数据库映射(Object Relational Mapping)。可以理解成:完成面对对象的编程语言到关系数据库的映射。【why】该模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
2~ORM的作用?
ORM的作用:把持久化对象的保存,修改,删除等操作转化成对数据库的操作。
3~ORM的优点缺点?
ORM的缺点是会”牺牲程序的执行效率和会固定思维模式”。
从系统结构上来看,采用ORM的系统一般都是多层系统,系统的层次多了,效率就会降低。ORM是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。
在我们开发系统时,一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。
在对对象做持久化时,ORM一般会持久化所有的属性,有时,这是不希望的。
但ORM是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。
4~流行的ORM工具简介
1)JPA:本身是一种ORM规范,不是ORM产品。JPA的最大优势在于它是官方标准,具有通用性。针对各种类型的数据库都提供了相应的解决方法
2)Hibernate:最流行的ORM框架,全自动化的ORM框架,具有灵活设计,优秀性能特性
3)Mybatis:半自动化的ORM框架,允许开发人员直接编写Sql语句,更加灵活
【总结】:上述主要是扩展一下你的个人知识,稍微的记住什么是ORM,为什么使用ORM一句话,ORM的作用是什么!主流产品有哪几个就可以了。接下来,进入我们这篇文章的正题,Mybatis
一:Mybatis的简介
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式执行sql并将结果映射成java对象并返回。
二:mybatis的架构底层原理
【注意:】如果该图片看不清楚的话,你拖到另一个页面打开,可以看得很清楚哦
三:Mybatis的入门程序
1. 下载Mybatis的开发包。下载的地址是:
https://github.com/mybatis/mybatis-3/releases
【注意:】我这里演示的版本是:mybatis-3.2.7版本,并且写完所有博客之后我会把所有的资料,笔记,整合jar,开发所需要的mysql等包一并打包给大家,有需要的可以下载。或者自己去官网下载都可以
2:创建一个java项目—-》把需要导入的包,一并导入。第一张图演示如何找mybatis的所有包,【特别注意一点的是】这里需要针对数据库的操作,所以需要导入数据库的jar包
结果演示:
3:在src下面创建log4j.properties 和mybatis-config.xml
<!--Copy以下这段代码,到log4j.properties里面。里面代码是固定的-->
<!--这段代码的意思是:打印输出日志,并且mybatis默认使用log4j作为输出日志信息。-->
# 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] - %m%n
<!--主核心配置文件,就七八个主要的标签,所有的标签都写在了configuration里面。后面一片会详细的讲解。-->
<!--下面使用的是environments标签,配置数据库的信息。一般都会看得懂的-->
<?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配置将废除 -->
<!--默认的环境ID(default=development),每个enviroment元素定义的环境(id="development"),
其实环境的ID是可以随意命名的,建议简洁有意义。而默认环境一定要匹配定义的其中一个环境的ID
-->
<!--总结:default 和id值需要相同,名字任取。但是要简介。参考我的命名-->
<environments default="development">
<environment id="development">
<!--
JDBC:这个配置就是直接使用了JDBC的提交和回滚设置,它依赖于从数据源得到的连接来管理事物范围
-->
<!-- 使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</dataSource>
</environment>
</environments>
</configuration>
4、在mybatis数据库下创建一张tb_user的表,等会做测试使用
DROP TABLE IF EXISTS tb_user1;
CREATE TABLE tb_user1 (
id int(11) NOT NULL AUTO_INCREMENT,
username varchar(20) NOT NULL,
sex char(10) NOT NULL,
age int(11) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
5、创建User对象的podo
/**
* 用户实体
* @author admin
* 【注意】下面还有生成成员变量的get跟set方法呢
*/
public class User {
private String username;
private String sex;
private Integer age;
public User(){
}
6、引入sql映射文件,创建UserMapper.xml,该文件主要是来写user的sql操作的,可以放在同级目录之下
<!--引入约束文件-->
<?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,还有一个很重要的作用,后面会讲 -->
<mapper namespace="user">
<!--以下这里写的是sql语句-->
</mapper>
7、加载映射文件。需要在mybaits-config.xml核心配置文件中加载该xml文件
<!-- 加载映射文件 -->
<mappers>
<!--resource:写该UserMapper.xml的路径-->
<mapper resource="dgut/xiaozheng/podo/UserMapper.xml"/>
</mappers>
8、写测试案例
测试添加操作
8.1 在UserMapper文件中,写一个插入的语句
/*
parameterType:传入的参数类型
useGeneratedKeys:自动生成主键策略,可以不写
*/
<insert id="save" parameterType="dgut.xiaozheng.podo.User" useGeneratedKeys="true">
insert into tb_user(username,sex,age) values (#{username},#{sex},#{age})
</insert>
8.2,写一个JunitTest
@Test
public void testSave() throws IOException{
//需要一个获取文件的流
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
//初始化mybatis.创建sqlSessionFactory类的实例
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
//创建session实力
SqlSession session = sqlSessionFactory.openSession();
//创建user对象
User user = new User("小郑","男",25);
//插入数据,这里的user表示上面的命名空间,通过命名空间调用里面的id,这样才能保证说sql的id唯一
session.insert("user.save", user);
//提交事务
session.commit();
session.close();
}
9、结果显示:
10、操作成功
【总结:】通过上述的入门程序,我们已经对mybatis的开发步骤有一个较为清晰的思路。导入jar包–》引入核心配置文件,配置数据库—》写podo—》写该podo的数据库映射文件—》主配置文件需要加载副配置文件—》在映射文件中,写sql语句—-》测试案例,直接可调用该sql语句,进行增删改查……………..
可能你会对主配置文件,映射配置文件如何配置不大清晰,并且测试案例中的SqlSessionFactory也是不清晰。接下来会详细讲配置文件和Mybatis几个常用的类。不用担心,入门案例看着写就好。并且其中该注释的我都加了注释,应该是可以看得懂的额