栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mybatis学习、使用和代码解析(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mybatis学习、使用和代码解析(一)

写在前面

说到mybatis,那可太熟悉了,几乎是所有的java开发从业者的必备框架之一。面试也非常喜欢的mybatis的内部实现和组成。我们在使用mybatis的时候往往都是配合SpringBoot一起。SpringBoot的自动配置会为我们日常的开发提供极大的便利,包括mybatis的配置,SpringBoot都为我们配置好了,我们只需要写写mapper就能优雅的请求到mysql的数据,而不需要走建立连接,配置sql,请求数据,处理结果等复杂流程。所以本文想尽可能的从最初的起点开始,看看mybatis是怎么实现整个流程的。

什么是mybatis

它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,我们可以在配置中定制化sql代码,隐藏繁杂的数据连接请求过程,并且支持缓存、延迟加载等特性。

那什么是ORM呢,ORM指的是对象-关系映射(Object-Relational Mapping,简称ORM),可以描述为一个java对象与mysql中的一个表的映射,一个对象就像是表中的一条记录,对象的每个参数就与表中的每个字段保持一致。想象下如果不使用这种框架,每一次请求都需要重新处理返回值,校验等。代码重复率高且不便于维护。至于为什么叫半自动化,因为mybatis的sql是可以由我们自己控制的,那就可以控制返回的数据集,相比Hibernate更加灵活,Hibernate则是一种全自动的ORM框架,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取。

一个简单的实现-实例代码

我们看看mybatis是怎么使用的
项目结构

依赖配置

    

        
            org.mybatis
            mybatis
            3.4.4
        
        
            org.projectlombok
            lombok
            1.16.8
        
        
            junit
            junit
            4.12
        
        
            mysql
            mysql-connector-java
            8.0.19
        
    

User实体对象

package com.df.mybatis.dao.model;

import lombok.Data;

@Data
public class User {

    private Long id;

    private Long userId;

    private String userName;

    private Long tel;

    private Integer created;

    private Integer updated;

    private Integer isDeleted;
}

User的查询query

package com.df.mybatis.dao.query;

import lombok.Data;

@Data
public class UserQuery {

    private Long id;

    private Long userId;

}

UserMapper接口

package com.df.mybatis.dao.mapper;

import com.df.mybatis.dao.model.User;
import com.df.mybatis.dao.query.UserQuery;
import org.apache.ibatis.annotations.Param;

import java.io.IOException;
import java.util.List;

public interface UserMapper {

    List selectByCondition(UserQuery userQuery) throws IOException;

}

用于sql映射的xml文件







    
        `User`