ORM框架–Mybatis—需要程序员自己写SQL语句,需要掌握Java,和sql语句
–Hibernate—纯面向对象的,不需要程序员自己写SQL语句,完全使用操作对象,需要掌握Java
1.什么是Mybatis?
Mybatis—>OEM框架—>对JDBC进行封装,是数据持久层的框架,数据持久层的技术,与JDBC操作步骤类似,所以为了减少繁琐,对JDBC进行了封装
框架:简单,好用,易上手,对一些东西进行封装
MyBatis是一个简化和实现了 Java 数据持久化层(persistence layer)的开源框架,它抽象了大量的JDBC冗余代码,并提供了一个简单易用的API和数据库交互。
MyBatis的前身是iBATIS,iBATIS于2002年由ClintonBegin创建。MyBatis3是iBATIS的全新设计,支持注解和Mapper。
MyBatis流行的主要原因在于它的简单性和易使用性。在Java应用程序中,数据持久化层涉及到的工作有:将从数据库查询到的数据生成所需要的Java对象;将Java对象中的数据通SQL持久化到数据库中。
MyBatis通过抽象底层的JDBC代码,自动化SQL结果集产生Java对象、Java对象的数据持久化数据库中的过程使得对SQL的使用变得容易。
2.基本流程总结
1.建立配置文件,实现映射文件的路径
2.建立mapper映射文件,在SQLMapper映射配置文件中配置SQL语句
3.建立一个接口,配置文件的方法要关联到接口中,实现在映射接口中的方法与关系映射文件的sql对应
4.建立实现类,编写java代码完成插入操作
3.以下是博主的教师给的一些mybatis配置的详细内容
mybatis的核心包只有一个mybatis-3.x.0.jar
mybatis的两种文件:
1)mybatis的配置文件:mybatis-config.xml,其中包括数据库连接信息,类型别名等等
特点:名字一般是固定的,位置是src下面
2)mybatis的映射文件:XxxxxMapper.xml,这个xml文件中包括Xxxx类所对应的数据库表的各种增删改查sql语句
特点:名字一般为XxxxMapper.xml,Xxxx是对应类的名字
位置不固定,一般放到一个专门的package里面
接下来是
mybatis中的映射接口XxxxMapper.java(和XxxxMapper.xml中的sql语句进行映射)
最终实现类通过XxxxMapper接口的实现类对象来调用xml中的SQL语句
其中还写了一个
mybatis中的SqlSession接口和sqlSessionFactory接口,专门用来产生SqlSession对象
以下是博主今天完成的作业,建立了一个书籍管理,仅供参考
Book.java :
import java.util.Date;
public class Book {
//编号
private Integer id;
//书名
private String bookName;
//作者
private String author;
//发布日期
private Date publishDate;
//价格
private Double price;
public Book() {}
public Book(Integer id, String bookName, String author, Date publishDate, Double price) {
this.id = id;
this.bookName = bookName;
this.author = author;
this.publishDate = publishDate;
this.price = price;
}
public Book(String bookName, String author, Date publishDate, Double price) {
this.bookName = bookName;
this.author = author;
this.publishDate = publishDate;
this.price = price;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Date getPublishDate() {
return publishDate;
}
public void setPublishDate(Date publishDate) {
this.publishDate = publishDate;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
@Override
public String toString() {
return "Book [id=" + id + ", bookName=" + bookName + ", author=" + author + ", publishDate=" + publishDate
+ ", price=" + price + "]";
}
}
BookMapper.xml :
<?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.briup.mappers.BookMapper">
<resultMap type="Book" id="BookResult">
<id property="id" column="id"/>
<result property="bookName" column="bookName"/>
<result property="author" column="author"/>
<result property="publishDate" column="publishDate"/>
<result property="price" column="price"/>
</resultMap>
<!-- 添加书籍 -->
<insert id="insertBook" parameterType="Book">
insert into books
values (#{id},#{bookName},#{author},#{publishDate},#{price})
</insert>
<!-- 通过ID删除书籍 -->
<delete id="deleteBook" parameterType="int">
delete from books
where id=#{id}
</delete>
<!-- 通过名称查找书籍 -->
<select id="selectBookByname" parameterType="String" resultMap="BookResult">
select *
from books
where bookName=#{bookName}
</select>
<!-- 通过ID查找书籍 -->
<select id="selectBookByid" parameterType="int" resultMap="BookResult">
select *
from books
where id=#{id}
</select>
<!-- 查找所有书籍 -->
<select id="selectBook" resultMap="BookResult">
select *
from books
</select>
<!-- 查找所有书籍的名字 -->
<select id="selectBookname" resultType="String">
select bookName
from books
</select>
<!-- 查找有多少本书籍 -->
<select id="selectBookcount" resultType="int">
select count(*)
from books
</select>
<!-- 通过ID修改书籍 -->
<update id="updateBookByid" parameterType="Book">
update from books
set bookName=#{bookName},author=#{author},publishDate#{publishDate},price=#{price}
where id=#{id}
</update>
<!-- 查询所有书籍的名字和对应的作者 -->
<select id="selectBookn" resultType="String">
select bookName
from books
</select>
<select id="selectBooka" resultType="Object">
select author
from books
</select>
<select id="selectBooknaa" resultType="Book">
select bookName,author
from books
</select>
</mapper>
BookMapper.java :
package com.briup.mappers;
import java.util.List;
import com.briup.pojo.Book;
public interface BookMapper {
public void insertBook(Book book);
public void deleteBook(int id);
public Book selectBookByname(String name);
public Book selectBookByid(int id);
public List<Book> selectBook();
public List<String> selectBookname();
public int selectBookcount();
public void updateBookByid(Book book);
public List<Book> selectBooknaa();
}
BookService.java :