MyBatis快速入门第二讲——MyBatis的快速入门

MyBatis介绍

MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。MyBatis是一个优秀的持久层框架,它对JDBC的操作数据库的过程进行了封装,使开发者只需要关注SQL本身,而不需要花费精力去处理例如注册驱动、创建Connection、创建Statement、手动设置参数、结果集检索等JDBC繁杂的过程代码了。
MyBatis通过xml或注解的方式将要执行的各种Statement(Statement、PreparedStatemnt、CallableStatement)配置起来,并通过Java对象和Statement中的SQL进行映射生成最终执行的SQL语句,最后由MyBatis框架执行SQL语句并将结果映射成Java对象并返回。

MyBatis框架的架构

知道了MyBatis框架是个什么东东之后,我们还需要从全局或者整体上对MyBatis框架有一个比较清晰的认识,MyBatis框架的架构如下图所示。
这里写图片描述
对于以上架构图,我们该怎样去理解呢?可以从以下几点去理解。

  1. SqlMapConfig.xml,此文件作为MyBatis的全局配置文件,配置了MyBatis的运行环境等信息。mapper.xml文件即SQL映射文件,文件中配置了操作数据库的SQL语句,此文件需要在SqlMapConfig.xml文件中进行加载;
  2. 通过MyBatis环境等配置信息构造SqlSessionFactory(即会话工厂);
  3. 由会话工厂创建SqlSession(即会话),操作数据库需要通过SqlSession;
  4. MyBatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器;
  5. MappedStatement也是MyBatis一个底层封装对象,它包装了MyBatis配置信息以及SQL映射信息等。mapper.xml文件中一个SQL对应一个MappedStatement对象,SQL的id即是MappedStatement对象的id
  6. MappedStatement对象对SQL执行输入参数进行定义,包括HashMap、基本类型、pojo,Executor通过该对象在执行SQL前将输入的Java对象映射至该SQL中,输入参数映射就是JDBC编程中对PreparedStatement对象设置参数;
  7. MappedStatement对象对SQL执行输出结果进行定义,包括HashMap、基本类型、pojo,Executor通过该对象在执行SQL后将输出结果映射至Java对象中,输出结果映射过程相当于JDBC编程中对结果集的解析处理过程。

MyBatis入门

MyBatis下载

MyBatis框架的代码现在是由Github来管理的,地址是https://github.com/mybatis/mybatis-3/releases。大家可从该地址下载最新版本的MyBatis框架。温馨提示:本系列教程使用的是mybatis-3.2.7这个版本的MyBatis框架,该版本的MyBatis框架的目录结构如下图所示。
这里写图片描述

开发需求

首先,我们肯定是要明确开发需求的,即使用MyBatis框架能干啥?我们可以使用MyBatis框架来实现以下功能:

  1. 根据用户id查询用户信息;
  2. 根据用户名称模糊查询用户信息列表;
  3. 添加用户;
  4. 更新用户;
  5. 删除用户。

环境搭建

开发需求明确之后,我们就要搭建开发环境了。开发环境搭建的详细步骤如下:

  • 【第一步】,使用Eclipse创建一个普通的Java工程,例如01-mybatis;
  • 【第二步】,加入jar包。工程所需加入的jar包有MyBatis核心包、依赖包以及MySQL数据驱动包。
    在这里插入图片描述
  • 【第三步】,在classpath下创建一个日志记录文件(命名为log4j.properties就好)。我们可在01-mybatis工程下新建一个config源码包,并在该源码包下创建一个日志记录文件,即log4j.properties。
    在这里插入图片描述
    该日志记录文件的内容如下:
    # 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
    
    在这里,我们必须明确一点的就是,MyBatis框架默认使用log4j来输出日志信息。
  • 【第四步】,在classpath下创建SqlMapConfig.xml文件。我们同样可以在config源码包下创建该文件。
    在这里插入图片描述
    一开始,我们不妨将该文件中的内容写成下面这样:
    <?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配置将废除, default属性表示使用哪一个环境? -->
    	<environments default="development">
    		<environment id="development">
    			<!-- 使用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="liayun" />
    			</dataSource>
    		</environment>
    		<environment id="test">
    			<!-- 使用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="liayun" />
    			</dataSource>
    		</environment>
    	</environments>
    </configuration>
    
    SqlMapConfig.xml是MyBatis框架的核心配置文件,以上文件的配置内容为数据源、事务管理。温馨提示:等后面MyBatis和Spring两个框架整合之后,environments的配置将被废除。
  • 【第五步】,创建一个po类,即User.java。我们可在src目录下新建一个名为com.meimeixia.mybatis.pojo的包,并在该包下创建一个po类(即User.java)。该po类将作为MyBatis进行SQL映射使用,po类通常与数据库表相对应。
    public class User {
         
    	private int id;
    	private String username;// 用户姓名
    	private String sex;// 性别
    	private Date birthday;// 生日
    	private String address;// 地址
    	public int getId() {
         
    		return id;
    	}
    	public void setId(int id) {
         
    		this.id = id;
    	}
    	public String getUsername() {
         
    		return username;
    	}
    	public void setUsername(String username) {
         
    		this.username = username;
    	}
    	public String getSex
  • 37
    点赞
  • 132
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李阿昀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值