mybatis映射器的用法

        在了解我们今天的主角JDBC之前呢,我们先来浅谈一下JDBC(有关JDBC的简单介绍,可以参考我的上一篇博客)JDBC作为底层技术呢,它有以下几个弊端:  

从上图可以看出,我们的mybatis完美的解决了JDBC的几个弊端,Mybatis是一个半自动的化的ORM模型,它可以实现定制Sql语句,存储过程和高级映射。(还有一个全自动化的ORM模型,Hibernate,以后再为大家介绍)下来我就为大家介绍以下mybatis映射器的用法。

        从官网下载mybatis以及相关的依赖包,将所有的jar包导进我们的java项目中,如下图所示,项目的每个包分工如下,下来我们来了解一个每个包的作用。

         1.实体类:根据表的字段创建相应的实体类(包括get、set、toString方法、无参满参构造),将表中的字段映射到实体类对象中,需要注意的是,我们在创建实体类时,字段名如果和属性名不一致,会导致查询出来的结果为空,需要进行特殊的处理。

        2.获取资源:将获取数据库资源和关闭资源都放在DaoUtil文件下,用类名直接调用静态方法

3.接口和mapper.xml文件:接口中写各种抽象方法,通过抽象方法来找到我们mapper文件中的sql语句,需要特别注意的是,mapper.xml文件中的sql语句的id是唯一的不能重复的,而我们要通过我们的抽象方法名来找到我们的sql语句,所以说我们的抽象方法名不能重复,所以这里方法的重载就用不上了。

如上图所示,我在接口文件中定义了五个方法,分别是学生表的增删改查,下来,我就在sql映射文件中来写sql语句,来实现这些方法。

①新增方法,如下图所示,写法上有些需要特别注意的地方。

② 删除方法:

③修改方法:

④全部查询:

 ⑤根据条件单独查询:

以上几种都是单表查询的实现,都比较简单,在写的时候需要注意以下入参和出参类型就行。

4.测试类:在测试类中可以直接调用对应的方法名,来实现对数据库的增删改查。 

如上图所示,我举了一个新增的例子,这里需要注意的是,我们在新增的时候必须要提交事物,否则数据是新增不到数据库中的。其他的删、改、查所用到的方法都差不多。

5.主配置文件:如下图所示,在配置文件中,定义了数据库链接池,来解决JDBC资源浪费的问题

         上面就是利用sql映射文件的方式来实现映射,接下来简单介绍一下通过注解的方式来实现映射:

        如下图所示,我通过注解的方式依旧可以实现对学生表的增删改查,只是这样一来硬编码问题就依然存在,既然如此,我们为什么要采用这种方式呢,因为他在进行单表查询的时候很方便,但是复杂的查询,由于查询语句比较麻烦,所以用这种方式相对来说比较复杂,此时就会用到我们的mapper.xml映射文件来实现,总之这两种方法各有千秋,我们在使用的时候可以选择

         单表查询说完了之后,我们来说一下多表联查的情况,因为在大多数情况下,多表联查的形式还是多一点,说到多表联查,就不得不提一下表之间的关系问题:一对一联查,一对多联查,多对多联查,多对一联查,这里我们只讨论一下一对一和一对多的联查方式:

        1.一对一联查:以学生和班级表为例,学生看班级就是一对一的关系,下来就演示一下这两张表联查。如下图所示,在学生的实体类中建立一个类型为Banji类型的属性,然后在我们的映射文件中利用resultMap标签和association标签来实现一对一的关系,需要主要的是,这里所有的字段名和属性必须要写上。 

        2.一对多联查:从班级来看学生,就是一对多的关系,如下图所示,和一对一的关系很类似,我在班级的实体类中建了一个学生类型的list集合,来映射学生数据,在映射文件中利用collection标签来实现一对多。

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值