Mybatis简要介绍

1 介绍

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。

2 入门

  • 下载地址:https://github.com/mybatis/mybatis-3/releases
  • mybatis的核心包:mybatis-3.2.7.jar
  • mybatis也会有一些依赖包,下载完成后在lib目录中即可查看。
  • 步骤
    (1) 创建一个java工程
    (2) 把包导入工程
    (3) 导入log4j.propertis文件,mybatis默认使用log4j作为输出日志信息
    (4) 在资源目录中创建sqpMapConfig.xml(mybatis的核心配置文件)文件,并对其进行配置。
    创建约束:创建约束
    环境配置:环境配置
    加载映射:加载映射
    package:将某个包下所有映射文件都加载进来

3 数据库操作

  • 创建实体类User,属性有id,usename,password,在实体类上加上注解(需要导包和添加插件),get、set、tostring方法创建实体类
    完成后创建dao包,在dao包中对数据库进行操作(这使用mapper动态代理开发)。
    (1)在dao包下创建一个UserDao接口
    (2)在dao包下创建一个xml文件,文件名与UserDao名字要相同(这里定义为UserDao.xml)
    (3)将dao包到sqlMaperConfig.xml中的mappers映射中
    (4)操作UserDao.xml
    命名
    注意:
  • 在UserDao.xml给mapper命名,namespace与dao中接口的路径相同
  • 接口的方法名必须要与UserDao.xml中定义的每个的statement(即对数据库增删改查)的id相同
  • 接口中方法出入的参数和UserDao.xml中定义的每个sql的parameterType的类型要相同
  • 接口中方法输出的参数和UserDao.xml中定义的每个sql的resultType的类型要相同
    操作xml文件操作dao
  1. 在使用的过程中,如果传入的参数类型(parameterType)是简单数据类型,就可以忽略不写,如Integer等
  2. #{}和${}的区别:
  • #{}表示一个占位符号,可以防止sql注入。可以接收简单类型,也可以接收实体类,大括号中可以是value,也可以是其他值。
  • 后者表示拼接sql串,可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value。
  1. parameterType:指定输入参数类型,mybatis通过ognl从输入对象中获取参数值拼接在sql中。
    resultType:指定输出结果类型,mybatis将sql查询结果的一行记录数据映射为resultType指定类型的对象。
  2. selectOne和selectList
  • selectOne:查询一条数据,如果使用selectOne查询多条数据就会报错
  • selectList:查询多条数据,可以使用selectList查询一条数据,也可查询多条

4 sqlMapConfig.xml配置文件

mybatis除了自身支持一些别名外,还可以自己设置别名。
typeAliases:设置别名
设置别名

5. 动态sql

通过mybatis提供的各种标签方法实现 动态拼接。
if标签:
if拼接
test:只有当test为true时,后面的代码才会拼接到前面的代码后面
where标签:
where标签
可以有多个where标签,同时也是只有test为true时才会执行。
froeach标签:
foreach标签
当传入的参数的类型为如List这种需要遍历的类型时,可以使用foreach标签对其进行遍历,来获取其中的数据。
foreach中的属性:collection:需要遍历的集合 item:内容 index:索引 open:开始的时候需要加的,如“(” close:结束的时候需要加的东西,如“)” separator用什么分隔其中的数据(open、close这些都是需要才加)

6.sql片段

抽取重复使用的sql语句(类似java中方法的抽取)
抽取

7 多数据查询

当要查询的数据为多个表时,就可以使用多数据查询,当数据为一对一时,使用resultMap加association查询;当数据为一对多时,使用resultMap加collection查询。
一对一:一对一
一对多:(这里使用了延时操作,即collection中多了两个属性column和select,使用延时需要在sqlMapConfig.xml文件中配置)
延时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值