Mybatis笔记(持续更新)

本文介绍了Mybatis作为数据持久层框架的基本概念、工作流程,包括配置文件、映射文件的设置,以及如何通过接口与XML文件进行映射。重点讨论了结果集映射、动态SQL语句的编写,展示了在实际开发中的应用,如一对多、多对多的映射关系处理。此外,还提及了Mybatis的日志配置和自定义日志实现。
摘要由CSDN通过智能技术生成

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 :

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值