拒绝低效搬砖,快速上手MyBatis

Mybatis框架简介

       MyBatis是一个开源的数据持久层框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询,存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。Mybatis作为持久化层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置。

补存说明:

什么是数据持久化
数据持久化就是将内存中的数据模型转换为存储模型,已经将存储模型转换为内存中的数据模型的统 称。  
什么是ORM  
ORM(Object/Relational Mapping)即对象/关系映射,是一种持久化技术。 在对象模型和关系数据库模型之间建立起对应关系,  
并且提供了一种机制,通过JavaBean对象去操作 数据库表中的数据。 MyBatis通过简单的XML或者注解进行配置和原始映射,将实体类和SQL语句之间建立映射,是一种半 自动化的ORM实现。
1.下载需要的jar文件

MyBatis官网 or Github

名称说明
asm-5.2.jar操作Java字节码的类库
cglib-3.2.5.jar用来动态继承Java类或实现接口
commons-logging-1.2.jar用于通用日志处理
javassist-3.22.0-CR2.jar分析、编辑和创建Java字节码的类库
log4j-1.2.17.jar日志系统
log4j-api-2.3.jar日志系统的封装,对外提供统一的API接口
slf4j-log4j12-1.7.25.jarslf4j对log4j的相应驱动,完成slf4j绑定log4j
2.将下载好的部署到jar文件
3.创建MyBatis核心配置文件mybatis-config.xml

MyBatis核心配置文件主要用于配置数据库连接和MyBatis运行时所需的各种特性,包含了设置和影响 MyBatis行为的属性。

示例1<?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"/> 
 <!--配置log的实现为LOG4J--> 
  <settings> 
     <setting name="logImpl" value="LOG4J"/> 
   </settings> 
 <environments default="development"> 
 <environment id="development">
    <!--配置事务管理,采用JDBC的事务管理-->
      <transactionManager type="JDBC"></transactionManager> 
          <!--POOLED:mybatis自带的数据源,JNDI:基于tomcat的数据源-->
                   <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}"/> 
                    <property name="url" value="${jdbc.url}"/>  
                    <property name="username" value="${jdbc.user}"/>  
                    <property name="password" value="${jdbc.pwd}"/>  
                    </dataSource> 
   </environment>
 </environments>
 <!--将mapper文件加入到配置文件中--> 
  <mappers>
       <mapper resource="com/jikedaquan/dao/user/UserMapper.xml"/>  
  </mappers> 
  </configuration>

注意:mybatis-config.xml文件的元素节点是有一定顺序的,节点位置若不按顺序排位,那么XML文件 会报错
database.properties

  • jdbc.driver=com.mysql.jdbc.Driver
  • jdbc.user=root
  • jdbc.pwd=1234
  • jdbc.url=jdbc:mysql://localhost:3306/DiStuDio?
  • useUnicode=true&characterEncoding=utf-8&useSSL=false
mybatis-config.xml文件的几个常用元素的作用如下:

1. configuration:配置文件的根元素节点
2…properties:通过resource属性从外部指定properties属性文件 (database.properties),database.properties属性文件描述数据库连接的相关配置,包括数据库驱动 (jdbc.driver)、连接数据库的url(jdbc.url)、数据库用户名(jdbc.user)、数据库密码(jdbc.pwd),位置也 在/resoureces目录下。
3.settings:设置MyBatis运行中的一些行为,比如此处设置MyBatis的log日志实现为LOG4J,即使用 log4j实现日志功能。
4.environments:表示配置MyBatis的多套运行环境,将SQL映射到多个不同的数据库上,该元素节 点下可以配置多个environment子元素节点,但是必须指定其中一个默认运行环境(通过default指 定)。
5.environment:配置MyBatis的一套运行环境,需指定运行环境ID、事务管理、数据源配置等相关信息。
6.mappers::作用是告诉MyBatis去哪里找到SQL映射文件(该文件内容是开发者定义的映射sql语句), 整个项目中可以有1个或多个SQL映射文件
7.mapper::mappers的子元素节点,具体指定SQL映射文件的路径,其中resource属性的值表述了sql 映射文件的路径(类资源路径)

完成了MyBatis的配置文件mybatis-config.xml,接下来就要准备持久化类和SQL映射文件
4.创建持久化类和SQL映射文件

POJO(Plain Ordinary Java Object),即普通Java对象,POJO类可以简单理解为符合JavaBean规范的 实体类,它不需要继承和实现任何特殊的Java基类或者接口。
创建用户表POJO类

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;        //更新时间
    }

注意:在MyBatis中,不需要POJO类名与数据库表名一致,因为MyBaits是POJO与SQL语句之间的映 射机制,一般情况下,保证POJO对象的属性与数据库表的字段名一致即可。

示例3:
<?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.jikedaquan.dao.user.UserMapper">
    <!--查询用户表记录-->
    <select id="count" resultType="int">
        SELECT count(1) AS COUNT FROM USER
    </select>
</mapper>

上面写的配置文件的含义:
mapper:映射文件的根元素节点,只有一个属性namespace
namespace:用于区分不同的mapper,全局唯一
select:表示查询语句,是MyBatis 常用的元素之一,常用属性如下:

id属性:该命名空间下唯一标识符  
resultType属性:表示SQL语句返回值类型,此处通过SQL语句返回的是int类型

5测试类

在我们创建好了SQL映射文件,接下来就该创建测试类了,具体步骤如下:

  public static void main(String[] args) throws Exception {  
        //1.读取全局配置文件:mybatis-config.xml
        String resource="mybatis-config.xml";
        //获取mybatis-config.xml文件的输入流
        InputStream is= Resources.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();
        count=sqlSession.selectOne("com.jikedaquan.dao.user.UserMapper.count");
        //4.关闭SqlSession对象
        sqlSession.close();
        System.out.println(count);
    }

MyBatis——核心对象

  1. 每个MyBatis的应用程序都以一个SqlSessionFactory对象的实例为中心
  2. 首先获取SqlSessionFactoryBuilder对象,可以根据XML配置文件或Configuration类的实例构建该对象
  3. 然后获取SqlSessionFactory对象,改对象实例可以通过SqlSessionFactoryBuilder对象来获得
  4. 有了SqlSessionFactory对象之后,就可以进而获取SqlSession实例,SqlSession对象中完全半酣以数据库为背景的所在执行SQL操作的方法。可以用该实例来直接执行已映射的SQL语句
SqlSessionFactoryBuilder

1.SqlSessionFactoryBuilder负责构建SqlSessionFactory并且提供了多个build()方法的重载:**build()方法使用三种形式的配置信息,分别是InputStream(字节流)、Reader(字符流)、 Configuration(类)
2.SqlSessionFactoryBuilder 大特点是用过即丢

SqlSessionFactory

1.openSession()方法获取SqlSession实例,openSession()传入参数true表示关闭事务控制,自动提交,false开启事务控制机制。默认为true。

2.SqlSessionFactory一旦创建,就会在整个应用运行过程中始终存在。

sqlSessionFactory

1.openSession()方法获取SqlSession实例,openSession()传入参数true表示关闭事务控制,自动提交,false开启事务控制机制。默认为true。
2.SqlSessionFactory一旦创建,就会在整个应用运行过程中始终存在。

SqlSession

1.SqlSession是用于执行持久化操作的对象,类似于JDBC中的Connection。

2.SqlSession对应一次数据库会话,SqlSession不是线程安全的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值