Mybatis开发者快速入门必知

10 篇文章 0 订阅
7 篇文章 0 订阅

(15Min)

一、MyBatis作用

    MyBatis 是一款优秀的持久层框架,它是帮助您快速开发数据库应用的工具。它支持自定义 SQL、存储过程以及高级映射。它是一款半自动ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL延迟加载缓存等特性,但它的数据库无关性较低。

注:持久化就是将程序的数据在持久状态和瞬时状态转化的过程

1、它支持定制化 SQL、存储过程以及高级映射。
2、它避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。
3、它可以使用简单的 XML注解配置和映射原生类型接口Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

传统的JDBC代码太复杂了。简化、框架、自动化。不用Mybatis也可以。但用了更好。

 

优点:

  •     简单易学、灵活;
  •     sql和代码的分离,提高了可维护性。
  •     提供映射标签,支持对象与数据库的orm字段关系映射
  •     提供对象关系映射标签,支持对象关系组建维护
  •     提供xml标签,支持编写动态sql。

二、ORM

Object Relation Mapping 对象关系映射.对象指的是面向面向对象,关系指的是数据库中的表,

ORM

 对象与关系的映射(ORM)

 

半自动ORM:

用MyBatis进行开发的,需要手写SQL语句,而ORM框架例如Hibernate则不需要编写SQL语句。正因为如此,MyBatis使用自定义SQL,所以更加灵活,尤其在多表操作

三、MyBatis

1、架构

2、MyBaits核心对象

SqlSession对象,该对象包含了执行SQL语句的所有方法,例如JDBC里面Connection

MappedStatement对象,该对象负责对SQL封装,用于存储需要映射的SQL语句及参数等信息

Executor接口,将传递过来的参数动态生成SQL语句,负责查询缓存。

ResultHandler对象,用户返回结果集合,封装成想要的数据类型,可以自定义返回类型。

最重要的对象

3、配置文件

两个,一个是Mybatis自身的配置,一个是对OR映射的配置,内含所需的SQL。

4、执行流程

四、操作

两个方式:映射配置文件、注解

1、map文件方式

2、注解方式

2.1配置

 以下为查询,增加、删除和修改的步骤类似。

<!--在控制台显示SQL语句-->
  <settings>  <setting name="logImpl" value="STDOUT_LOGGING"/></settings>

<!--加载使用注解的接口所在的包-->

<mappers>   <package name="mapper"/>    </mappers>
2,2 在以上包的的接口中增加注解及相应的DQL

public interface UserToBanjiMapper {
    @Select("select * from user")
    List<User> findUser();
}
   

2.3 测试

private SqlSession sqlSession;

private UserTpBanjiMapper mapper;

this.sqlSession = SqlSessionUtils.getSession();

mapper = sqlSession.getMapper(UseToBanjiMapper.class);

List<User> users= mapper.findUser();

        for (User user: users) {
            System.out.println(user.getId() + "," + user.getNumber());
        }

在这里插入图片描述

 3.一对一映射的注解

    @Select("select * from user")
    @Results({
            @Result(column = "id",property = "id"),
            @Result(column = "name",property = "name"),
            @Result(
                    property = "c",
                    javaType = Banji.class,
                    column = "cid",
                    one = @One(select = "onetoone.BanjiMapper.findById")
            )
    })
    List<User> findAll();

要传入的参数 id 就是在UserMapper中SQL查询出来的结果中的一个列。

public interface BanjiMapper {

    @Select("select * from bani where id=#{id}")
    Banji findById(Integer id);
}

测试

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值