MyBatis框架系列之MyBatis简介以及MyBatis HelloWorld实现

MyBatis简介

1.1 MyBatis历史

  1)MyBatis是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation 迁移到了Google Code,随着开发团队转投Google Code旗下, iBatis3.x 正式更名为MyBatis ,代码于2013年11月迁移到Github。
  2)iBatis一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。 iBatis 提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

1.2 MyBatis简介

  1) MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。
  2) MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
  3) MyBatis可以使用简单的XML或注解用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。
  4) Mybatis 是一个 半自动的ORM(Object Relation Mapping)框架。

1.3 如何下载MyBatis

1) 下载网址
https://github.com/mybatis/mybatis-3/
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

1.4 为什么要使用MyBatis – 现有持久化技术的对比

1) JDBC
  ① SQL夹在Java代码块里,耦合度高导致硬编码内伤
  ② 维护不易且实际开发需求中sql有变化,频繁修改的情况多见
2) Hibernate和JPA
  ① 长难复杂SQL,对于Hibernate而言处理也不容易
  ② 内部自动生产的SQL,不容易做特殊优化
  ③ 基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。导致数据库性能下降
3) MyBatis
  ① 对开发人员而言,核心sql还是需要自己优化
  ② sql和java编码分开,功能边界清晰,一个专注业务、一个专注数据

MyBatis HelloWorld

开发环境的准备

1) 导入MyBatis框架的jar包、Mysql驱动包、log4j的jar包

  myBatis-3.4.1.jar
  mysql-connector-java-5.1.37-bin.jar
  log4j.jar

2) 导入log4j 的配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m  (%F:%L) \n"/>
        </layout>
    </appender>
    <logger name="java.sql">
        <level value="debug"/>
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info"/>
    </logger>
    <root>
        <level value="debug"/>
        <appender-ref ref="STDOUT"/>
    </root>
</log4j:configuration>

创建测试表

-- 创建库
CREATE DATABASE test_mybatis;
-- 使用库
USE test_mybatis;
-- 创建表
CREATE TABLE tbl_employee(
   id INT(11) PRIMARY KEY AUTO_INCREMENT,
   last_name VARCHAR(50),
   email VARCHAR(50),
   gender CHAR(1)
);

创建javaBean

public class Employee {

	private Integer id ; 
	private String lastName; 
	private String email ;
	private String gender ;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]";
	}

创建MyBatis的全局配置文件

1) 参考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>
	<!-- 数据库连接环境的配置 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis_1129" />
				<property name="username" value="root" />
				<property name="password" value="1234" />
			</dataSource>
		</environment>
	</environments>
	<!-- 引入SQL映射文件,Mapper映射文件 	-->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>

创建Mybatis的sql映射文件

1) 参考MyBatis的官方手册

<?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="suibian">
	<select id="selectEmployee" resultType="com.atguigu.myabtis.helloWorld.Employee">
		select id ,last_name lastName ,email ,gender from tbl_employee where id = #{id}
		<!-- select * from tbl_employee  where id = #{id} -->
	</select>
</mapper>

测试

1) 参考MyBatis的官方手册

	@Test
	public void test() throws Exception {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = 
					new SqlSessionFactoryBuilder().build(inputStream);
		System.out.println(sqlSessionFactory);
		
		SqlSession session  = sqlSessionFactory.openSession();
		try {
			Employee employee = 
					session.selectOne("suibian.selectEmployee", 1001);
			System.out.println(employee);
		} finally {
			session.close();
		}
	}

Mapper接口开发MyBatis HelloWorld

1) 编写Mapper接口

public interface EmployeeMapper {
	public Employee getEmployeeById(Integer id );	
}

2) 完成两个绑定

  ① Mapper接口与Mapper映射文件的绑定:
在Mppper映射文件中的标签中的namespace中必须指定Mapper接口的全类名
  ② Mapper映射文件中的增删改查标签的id必须指定成Mapper接口中的方法名.

3) 获取Mapper接口的代理实现类对象

@Test
public void test()  throws Exception{
	String resource = "mybatis-config.xml";
	InputStream inputStream =
             Resources.getResourceAsStream(resource);
	SqlSessionFactory sqlSessionFactory = 
			new SqlSessionFactoryBuilder()
          .build(inputStream);		
	SqlSession session =  sqlSessionFactory.openSession();
	
	try {
		//Mapper接口:获取Mapper接口的 代理实现类对象
		EmployeeMapper mapper =
             session.getMapper(EmployeeMapper.class);		
		Employee employee = 
              mapper.getEmployeeById(1006);
		System.out.println(employee);
	} finally {
		session.close();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

java水泥工

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

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

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

打赏作者

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

抵扣说明:

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

余额充值