MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎全部的 JDBC 代码以及设置参数和获取结果集的工做。MyBatis 能够经过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
css
1.基于SQL语法,简单易学。 2.能了解底层组装过程。 3.SQL语句封装在配置文件中,便于统一管理与维护,下降了程序的耦合度。` 4.程序调试方便。 全部sql语句,所有定义在xml(建议)中。也能够经过注解的方式在接口上实现。这些映射文件称之为mapper。
对象关系映射 思想:对象模型和关系模型的映射。 把对象领域的一个类映射为关系领域的一个表。 类的属性映射为表的字段。 类的一个对象映射为表的一行记录。 在java程序中,把对数据库表记录的操做映射为对java对象的操做。 Hibernate 纯ORM映射框架 ,不须要编写sql语句。 编写Hql语句。 Mybatis 半ORM映射框架, sql语句须要程序员编写。
Mybatis配置文件有2种 Mybatis的主配置文件,SqlMapConfig.xml 配置mybatis总体配置信息好比:链接池,settings,plugin,mapper........ 一个工程下须要一个,保存在类路径下。src Mybatis的映射文件, xxxMapper.xml 好比:UserMapper.xml 该文件主要用来定义sql语句。保存在类路径,也能够保存在其余目录
SqlSessionFactory 用来管理SqlSession对象。 SqlSession对象,对Connection对象的封装。 SelSessionFactory 重量级的对象,建立耗费资源。属于单例对象,线程安全的。 SqlSession对象,线程不安全的,轻量级对象,每次对数据库的操做使用独立的SqlSession对象。
在Mybatis映射文件中,定义的一条sql语句,有多个组成部分, 包括:sql 语句,惟一的id,输入参数,输出参数等。 是一个总体,称做是一个statement。 Statement的做用:把输入参数,输出参数和sql语句整合到一块儿。
Execution 执行器 用来执行一个statement,把sql语句提交到数据库并执行。
mybatis用到的jar包
html
其中与日志有关的为log4j和slf4j slf4j是日志的规范,log4j是规范的实现 javassist与cblib是代理工具,用来生成代理类 javassist是java的动态代理,cglib是第三方代理 (代理是什么?好比你想买华为手机,不是去华为总部,而是去华为的销售店,销售店的手机与总部生产的手机是同样的,那么销售店就是总部的一个代理。因此代理类与目标类中的方法是相同的) 用mybatis开发工具,须要把jar包拷到工程下,可是用maven的话,直接添加依赖就好了
Maven项目对象模型(POM),能够经过一小段描述信息来管理项目的构建,报告和文档的项目管理工具软件。
如今Maven多用与管理依赖java
直接点击下一步,选择模板可能会致使项目目录不全mysql
构件坐标就是maven用来找jar包的坐标,分为三部分
GroupId(域名的反写)、ArtifactId(项目名)、版本号
建立好后,个人目录结构为
程序员
在maven所在文件夹下的conf中,找到settings.xml(默认路径在c盘user下的.m2中)
在该文件中还能够修改镜像文件spring
在pom.xml文件中导入依赖sql
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.14</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> <type>pom.lastUpdated</type> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.12</version> </dependency> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.11.0.GA</version> </dependency> <dependency> <groupId>cglib</groupId> <artifactId>cglib</artifactId> <version>3.2.5</version> </dependency> </dependencies>
引入的包与以前图片中看到的同样,还多几个单元测试的
注意MySQL的版本改成本身的数据库
在resources中建立一个xml文件,名称能够随意,可是规范的命名为SqlMapConfig
内容比较固定apache
<?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> <!-- 引入properties资源文件 ,数据库链接的资源文件--> <properties resource="DB.properties"> </properties> <!-- 配置环境 --> <environments default="development"> <environment id="development"> <!-- 配置mybatis事务管理 ,jdbc的事务管理 JDBC - 这个类型直接所有使用 JDBC 的提交和回滚功能。它依靠使用链接的数据源来管理事务的做用域。 MANAGED - 这个类型什么不作 , 它从不提交 、 回滚和关闭链接 。 而是让窗口来管理事务的所有生命周期 。 (好比说 Spring 或者 JAVAEE 服务器) --> <transactionManager type="JDBC"/> <!-- 配置数据源 UNPOOLED :这个数据源实现只是在每次请求的时候简单的打开和关闭一个链接。 虽然这有点慢,但做为一些不须要性能和当即响应的简单应用来讲 , 不失为一种好选择 不用链接池。 POOLED : 使用链接池管理connection对象 JNDI : 使用其余框架 如spring来管理链接 ${} OGNL表达式 在jsp页面中%{} --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.user}"/> </dataSource> </environment> </environments> <!-- 加载映射文件 --> <mappers> </mappers> </configuration>
xml文件的约束有两种,一种是xsd一种是dtd
引用数据库的文件
按照本身的数据库修更名称与帐号密码
其余的在注释中已经写的比较清楚了api