MyBatis(1)——快速入门

目录

Mybatis简介

Mybatis历史

为什么使用Mybatis

Mybatis下载

第一个Mybatis程序:Mybatis-HelloWorld  

第一步 创建表

第二步 创建工程

第三步 创建实体类,mybatis配置文件

第四步 编写测试类

工程目录

学习中遇到的问题

总结

参考资料

其他补充


Mybatis简介

        • MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。

        • MyBatis 避免了几乎所有的 JDBC 代码和手动设 置参数以及获取结果集。

        • MyBatis可以使用简单的XML或注解用于配置和原 始映射,将接口和Java的POJO(Plain           Old Java Objects,普通的Java对象)映射成数据库中的记录。

Mybatis历史

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

为什么使用Mybatis

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

Mybatis下载

        官方地址:https://github.com/mybatis/mybatis-3/
        咱们这里使用的是mybatis-3.4.1,如下图:Releases链接下有所有mybatis版本。

第一个Mybatis程序:Mybatis-HelloWorld  

        HelloWorld简单版
                – 创建一张测试表
                – 创建对应的javaBean
                – 创建mybatis配置文件,sql映射文件
                – 测试

第一步 创建表

DROP DATABASE IF EXISTS mybatis;
CREATE DATABASE mybatis DEFAULT CHARACTER SET utf8;

use mybatis;

CREATE TABLE tbl_employee (
	id int NOT NULL AUTO_INCREMENT, 
	last_name varchar(255), 
	gender char(1), 
	email varchar(255), 
	PRIMARY KEY (id)) 
ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO tbl_employee (last_name, gender, email) VALUES ('Tom', '1', 'Tom@qq.com');

第二步 创建工程

在IDEA中新建个普通工程,并引入必需的包。

注: 我的mysql版本是6.0.3 。有可能和你的mysql版本不一致。你需要换成你的mysql版本对应的jar包和数据库连接。

第三步 创建实体类,mybatis配置文件

        实体类:

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配置文件

<?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="org.gjt.mm.mysql.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	<!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
	<mappers>
		<mapper resource="EmployeeMapper.xml" />
	</mappers>
</configuration>

        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="com.atguigu.mybatis.EmployeeMapper">
<!-- 
namespace:名称空间;
id:唯一标识
resultType:返回值类型
#{id}:从传递过来的参数中取出id值

public Employee getEmpById(Integer id);
 -->
	<select id="selectEmp" resultType="com.atguigu.mybatis.bean.Employee">
		select id,last_name lastName,email,gender from tbl_employee where id = #{id}
	</select>
</mapper>

 注:tbl_employee表中last_name和java实体类lastName 是不对应的。此处如果不写别名的话,最后查询结果中 lastName的值就会为null。

第四步 编写测试类

public SqlSessionFactory getSqlSessionFactory() throws IOException {
		String resource = "mybatis-config.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		return new SqlSessionFactoryBuilder().build(inputStream);
	}
	/**
	 * 1、根据xml配置文件(全局配置文件)创建一个SqlSessionFactory对象 有数据源一些运行环境信息
	 * 2、sql映射文件;配置了每一个sql,以及sql的封装规则等。 
	 * 3、将sql映射文件注册在全局配置文件中
	 * 4、写代码:
	 * 		1)、根据全局配置文件得到SqlSessionFactory;
	 * 		2)、使用sqlSession工厂,获取到sqlSession对象使用他来执行增删改查
	 * 			一个sqlSession就是代表和数据库的一次会话,用完关闭
	 * 		3)、使用sql的唯一标志来告诉MyBatis执行哪个sql。sql都是保存在sql映射文件中的。
	 * 
	 * @throws IOException
	 */
	@Test
	public void test() throws IOException {
		// 获取sqlSession实例,能直接执行已经映射的sql语句
		// selectOne方法的两个参数 :
		// sql的唯一标识:statement Unique identifier matching the statement to use.
		// 执行sql要用的参数:parameter A parameter object to pass to the statement.
		SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
		SqlSession openSession = sqlSessionFactory.openSession();
		try {
			Employee employee = openSession.selectOne(
					"com.atguigu.mybatis.EmployeeMapper.selectEmp", 1);
			System.out.println(employee);
		} finally {
			openSession.close();
		}
	}
}

运行测试方法:

工程目录

学习中遇到的问题

1. 文中所说的mysql版本不一致问题。

2. conf文件没有配置为源文件,导致加载SqlSessionFactory时找不到mybatis全局配置文件。

conf文件右击-->最后选择Resource Root (因为我已经是源文件,所以没有该选项)

总结

        后续增加

参考资料

        重新学习的尚硅谷Mybatis视频。

其他补充

        Hibernate :sql自己不编写,sql不能优化。一些复杂查询不能定制sql。HQL可以定制sql,但是增加学习负担。 Hibernate是全字段映射。比如有100个字段,如果想查询单个字段,需要用HQL或者其他解决办法。

        Mybatis:Sql与java代码分离。 只需要关注SQL编写即可,学习代价比较低。半自动,轻量级框架。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值