MyBatis框架学习

admin2024-08-27  15

系列文章目录

第一章 基础知识、数据类型学习
第二章 万年历项目
第三章 代码逻辑训练习题
第四章 方法、数组学习
第五章 图书管理系统项目
第六章 面向对象编程:封装、继承、多态学习
第七章 封装继承多态习题
第八章 常用类、包装类、异常处理机制学习
第九章 集合学习
第十章 IO流、多线程学习
第十一章 仓库管理系统项目
第十二章 员工管理系统、多表查询、反射实现DBHelper学习
第十三章 DML、DDL、数据库对象学习
第十四章 网络编程、各种标签、CSS学习
第十五章 ECMAScript、BOM学习
第十六章 DOM、jQuery学习
第十七章 Servlet、jsp、Cookie、Ajax学习
第十八章 融资管理系统项目
第十九章 MyBatis框架学习


文章目录

  • 系列文章目录
  • 前言
  • 一、框架简介
  • 二、MyBatis框架
    • 1. MyBatis基本信息
      • 1.1 ORM解释
      • 1.2 自动化与半自动化区别
    • 2. MyBatis与传统JDBC比较
    • 3. 操作步骤
      • 3.1 创建Java项目
      • 3.2 导入jar包,mysql连接,mybayis
      • 3.3 创建实体类Emp
      • 3.4 创建mybatis的核心配置文件SqlMapConfig.xml
      • 3.5 创建mybatis的SQL映射文件
      • 3.6 创建测试类
  • 三、应用工具
  • 总结

前言

本文会讲述:
框架简介
MyBatis框架的介绍与使用
在下攸攸太上,我是外星人。


一、框架简介

框架是一个半成品,使程序员不用考虑公共问题,框架会代替程序员做;程序员可以专心于业务的实现,保证核心业务逻辑的开发质量;结构统一,便于学习和维护;缩短开发的时间和周期。
框架是一个提供了可重用的公共结构的半成品,为构建程序提供了极大的遍历,提供了可重用的设计。
框架使混乱的东西变得结构化,保证了程序结构风格统一。
框架有很多约束,必须按照步骤按部就班的进行操作,但也包含了很多设计模式和基础功能。
一般小型项目中不适用框架,大型规模使用框架的效果极佳。

二、MyBatis框架

1. MyBatis基本信息

MyBatis是一个基于Java的数据持久层(ORM)框架。把实体类和SQL语句之间建立了映射关系,是一种半自动化的ORM实现。取代了原本Dao的作用。

1.1 ORM解释

ORM 对象关系映射,是一种数据持久化技术
O:Object 对象:java里的实体类(对象)
R:Relation 关系:关系型数据库(表)
M:Mapping 映射:提供一种机制,实现映射

1.2 自动化与半自动化区别

半自动化:需要程序员编写sql语句,才能完成指定功能。
全自动化:无需程序员编写sql语句,直接操作实体类对象,就可以对应的操作数据库表里的数据。
有全自动为什么还需要半自动化?
多表查询的时候,分页查询的时候,全自动在进行修改的的时候反而很复杂

MyBatis 可以使用简单的XML或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

2. MyBatis与传统JDBC比较

MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。
JDBC操作步骤:
1、定义数据库连接参数
2、打开数据库连接
3、声明SQL语句
4、预编译并执行SQL语句
5、遍历查询结果
6、处理事务
7、关闭数据库连接
MyBatis只需要定义数据库连接参数与声明SQL语句

3. 操作步骤

3.1 创建Java项目

3.2 导入jar包,mysql连接,mybayis

3.3 创建实体类Emp

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Emp {
    private Integer empno;
    private String ename;
    private String job;
    private Integer mgr;
    private Date hiredate;
    private Double sal;
    private Double comm;
    private Integer deptno;
}

3.4 创建mybatis的核心配置文件SqlMapConfig.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>
	<!--获取数据库连接四对象-->
    <properties resource="jdbc.properties"></properties>
    <!--类型别名,设置entry包下的所有类,都可以以首字母小写的别名来访问,减少代码冗余度-->
    <typeAliases>
        <package name="entry"/>
    </typeAliases>
    <!--配置MySql环境-->
    <environments default="emploee">
        <environment id="emploee">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="${mysql.driver}"/>
                <property name="url" value="${mysql.url}"/>
                <property name="username" value="${mysql.username}"/>
                <property name="password" value="${mysql.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--设置映射器-->
    <mappers>
        <package name="mapper"/>
    </mappers>
</configuration>

3.5 创建mybatis的SQL映射文件

接口EmpMapper(相当于Dao)

import entry.Emp;
import java.util.ArrayList;
public interface EmpMapper {
    ArrayList<Emp> selectByEmp(Emp emp);
    ArrayList<Emp> selectByInfo(Emp emp);
    int insertEmp(Emp emp);
    int updateEmp(Emp emp);
    ArrayList<Emp> selectByList(ArrayList<Integer> list);
}

EmpMapper.xml(相当于DaoImpl)

<?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="mapper.EmpMapper">
    <select id="selectByEmp" parameterType="emp" resultType="emp">内部写Sql语句</select>
    <select id="selectByInfo" parameterType="emp" resultType="emp"></select>
    <insert id="insertEmp" parameterType="emp" useGeneratedKeys="true" keyProperty="empno"></insert>
    <update id="updateEmp" parameterType="emp"></update>
    <select id="selectByList" parameterType="java.util.ArrayList" resultType="emp">    </select>
</mapper>

在映射文件中,我们一般只使用insert、delete、update、select元素

3.6 创建测试类

public class TestEmp {
    public static void main(String[] args) throws IOException {
        InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(is);
        SqlSession session = factory.openSession();
        EmpMapper mapper = session.getMapper(EmpMapper.class);
        System.out.println("新增:");
        Emp emp = new Emp();
        emp.setEname("权某");
        emp.setJob("活着");
        emp.setMgr(985);
        mapper.insertEmp(emp);
        session.commit();
        System.out.println("if查找");
        ArrayList<Emp> emps = mapper.selectByEmp(emp);
        for (Emp e : emps) {
            System.out.println(e);
        }
        System.out.println("修改");
        emp.setJob("因活着被捕");
        mapper.updateEmp(emp);
        session.commit();
        System.out.println("ifelse查找");
        emps = mapper.selectByInfo(emp);
        for (Emp e : emps) {
            System.out.println(e);
        }
        System.out.println("list查找");
        ArrayList<Integer> list = new ArrayList<>();
        list.add(10);
        list.add(30);
        emps = mapper.selectByList(list);
        for (Emp e : emps) {
            System.out.println(e);
        }
    }

三、应用工具

File>Setting>Pulgins中下载如下两个工具MyBatis框架学习,在这里插入图片描述,第1张
MyBatisX可以测试Mapper映射的对不对
Lombok可以以以下很少的代码代替全参构造、无参构造、getset方法以及同String方法
MyBatis框架学习,在这里插入图片描述,第2张


总结

今天讲解了MyBatis框架的理论及应用。
话说,在下如今身陷情关,你们地球人有没有什么外星人对地球人告白的好方法啊?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!