MyBatis框架学习

系列文章目录

JavaSE
基础知识、数据类型学习万年历项目代码逻辑训练习题
代码逻辑训练习题方法、数组学习图书管理系统项目
面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习
集合学习IO流、多线程学习仓库管理系统JavaSE项目
员工管理系统、多表查询、反射实现DBHelper学习DML、DDL、数据库对象学习
JavaWeb
网络编程、各种标签、CSS学习ECMAScript、BOM学习DOM、jQuery学习
Servlet、JSP、Cookie、Ajax学习融资管理系统JavaWeb项目
框架
MyBatis框架学习逆向工程、Spring框架IOC、AOP学习SpringMVC框架学习
SpringBoot框架学习招聘网站框架项目Vue介绍、窗体内操作、窗体间操作学习
Vue路由配置、网络请求访问框架项目、element组件介绍学习标准管理系统Vue项目
微服务
Linux安装、Nginx反向代理、负载均衡学习Docker学习Jenkins学习
Nexus学习Spring Security学习RabbitMQ学习
Redis学习MongoDB学习MongoDB学习
Nacos学习Spring Session学习Spring Gateway学习
JSR 303学习OpenFeign学习Hystrix学习


前言

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


一、框架简介

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

二、MyBatis框架

1. MyBatis基本信息

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

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中下载如下两个工具
在这里插入图片描述
MyBatisX可以测试Mapper映射的对不对
Lombok可以以以下很少的代码代替全参构造、无参构造、getset方法以及同String方法
在这里插入图片描述


总结

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

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攸攸太上

感谢支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值