mybatis介绍(一)

简介

MyBatis前身是Apache基金会的开源项目iBatis,在2010年该项目脱离Apache基金会,迁移到Google Code,并正式更名为MyBatis。在2013年11月,MyBatis代码迁移到GitHub。

一、什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

二、为什么要学习MyBatis?

传统的数据库操作技术-JDBC
SQL语句嵌在Java代码里,耦合度高。
实际开发中SQL语句变化频繁,导致难以维护。

Hibernate框架
内部对SQL语句做了较厚的封装,难以优化。
不适合大数据量、高并发、低延迟的场景。

三、入门案例:

1、创建maven工程,添加jar依赖
  <dependencies>
  	<dependency>
  		<groupId>org.mybatis</groupId>
  		<artifactId>mybatis</artifactId>
  		<version>3.4.6</version>
  	</dependency>
  	<dependency>
  		<groupId>mysql</groupId>
  		<artifactId>mysql-connector-java</artifactId>
  		<version>5.1.47</version>
  	</dependency>
  </dependencies>
2、创建mybatis的配置文件(mybatis-conf.xml),名字自定义:

该配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。 XML 配置文件的详细内容后面再探讨,这里先给出一个简单的示例:

<?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/zmf?characterEncoding=utf-8"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="com/sxt/mapper/BookMapper.xml"/>
  </mappers>
</configuration>
3、创建bean对象
package com.sxt.bean;
public class Book {
	private Integer id;	
	private String name;
	private String author;
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getAuthor() {
		return author;
	}
	public void setAuthor(String author) {
		this.author = author;
	}
	@Override
	public String toString() {
		return "Book [id=" + id + ", name=" + name + ", author=" + author + "]";
	}
}
4、创建映射文件:
<?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.sxt.mapper.BookMapper">

	<select id="query" resultType="com.sxt.bean.Book">
    	select * from book;
    </select>
  <select id="queryById" resultType="com.sxt.bean.Book">
    select * from book where id = #{id}
  </select>
  
  <insert id="insert" parameterType="com.sxt.bean.Book">
  	insert into book(name,author) values (#{name},#{author})
  </insert>
  
  <update id="update" parameterType="com.sxt.bean.Book">
  	update book set name = #{name},author = #{author} where id = #{id}
  </update>
  
  <delete id="delete" parameterType="java.lang.Integer">
  	delete from book where id = #{id}
  </delete>
</mapper>
5、创建dao层接口:
package com.sxt.mapper;

import java.util.List;

import com.sxt.bean.Book;

public interface BookMapper {

	public List<Book> query();
	
	public List<Book> queryById(Integer id);
	
	public Integer insert(Book book);
	
	public Integer update(Book book);
	
	public Integer delete(Integer id);
}
6、测试:
public class Main {

	SqlSession session;
	BookMapper mapper;
	@Before
	public void before() throws IOException {
		InputStream is = Resources.getResourceAsStream("mybatis-conf.xml");
		SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
		session = sessionFactory.openSession();
		mapper = session.getMapper(BookMapper.class);
	}
	/**
	 * 查询所有书籍
	 */
	@Test
	public void query() {
		List<Book> list = mapper.query();
		for (Book book : list) {
			System.out.println(book);
		}
	}
	/**
	 * 根据id查询一本书
	 */
	@Test
	public void queryById() {
		List<Book> list = mapper.queryById(1);
		for (Book book : list) {
			System.out.println(book);
		}
	}
	/**
	 * 添加一本书
	 */
	@Test
	public void insert() {
		Book book = new Book();
		book.setName("毛毛雨怎么炼成的");
		book.setAuthor("薛老师");
		Integer insert = mapper.insert(book);
		System.out.println(insert);
	}
	/**
	 * 更新数据
	 */
	@Test
	public void update() {
		Book book = new Book();
		book.setName("你有毒吧");
		book.setAuthor("薛老师");
		book.setId(8);
		Integer update = mapper.update(book);
		System.out.println(update);
	}
	/**
	 * 根据book的id进行删除数据
	 */
	@Test
	public void delete() {
		Integer delete = mapper.delete(8);
		System.out.println(delete);
	}
	
	@After
	public void after() {
		session.commit();
		session.close();
	}
}

测试结果:
查询结果:
在这里插入图片描述
在这里插入图片描述
添加结果:
在这里插入图片描述
修改结果:
在这里插入图片描述
删除结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值