MyBatis

MyBatis框架

MyBatis HelloWorld

  1. 数据准备。
  2. 导入 jar 包。
  3. 在 src 下创建映射配置文件。
  4. 在 src 下创建核心配置文件。
  5. 编写测试类完成相关 API 的使用。
  6. 运行测试查看结果。

MyBatis 相关 API

Resources
  • org.apache.ibatis.io.Resources:加载资源的工具类。

  • 核心方法

    返回值方法名说明
    InputStreamgetResourceAsStream(String fileName)通过类加载器返回指定资源的字节输入流
SqlSessionFactoryBuilder
  • org.apache.ibatis.session.SqlSessionFactoryBuilder:获取 SqlSessionFactory 工厂对象的功能类。

  • 核心方法

    返回值方法名说明
    SqlSessionFactorybuild(InputStream is)通过指定资源字节输入流获取SqlSession工厂对象
SqlSessionFactory
  • org.apache.ibatis.session.SqlSessionFactory:获取 SqlSession 构建者对象的工厂接口。

  • 核心方法

    返回值方法名说明
    SqlSessionopenSession()获取SqlSession构建者对象,并开启手动提交事务
    SqlSessionopenSession(boolean autoCommit)获取SqlSession构建者对象,如果参数为true,则开启 自动提交事务
SqlSession
  • org.apache.ibatis.session.SqlSession:构建者对象接口。用于执行 SQL、管理事务、接口代理。
返回值方法名说明
ListselectList(String statement,Object paramter)执行查询语句,返回List集合
TselectOne(String statement,Object paramter)执行查询语句,返回一个结果对象
intinsert(String statement,Object paramter)执行新增语句,返回影响行数
intupdate(String statement,Object paramter)执行修改语句,返回影响行数
intdelete(String statement,Object paramter)执行删除语句,返回影响行数
voidcommit()提交事务
voidrollback()回滚事务
TgetMapper(Class cls)获取指定接口的代理实现类对象
voidclose()释放资源

映射配置文件

  • 映射配置文件包含了数据和对象之间的映射关系以及要执行的 SQL 语句。

  • <mapper>:核心根标签。

    • namespace 属性:名称空间
  • <select>:查询功能标签。

  • <insert>>:新增功能标签。

  • <update>:修改功能标签。

  • <delete>:删除功能标签。

    • id 属性:唯一标识,配合名称空间使用
    • parameterType 属性:指定参数映射的对象类型
    • resultType 属性:指定结果映射的对象类型
  • SQL 获取参数

    • #{属性名}

核心配置文件

  • 核心配置文件包含了 MyBatis 最核心的设置和属性信息。如数据库的连接、事务、连接池信息等。
  • <configuration>:核心根标签。
  • <properties>:引入数据库连接信息配置文件标签。
  • <typeAliases>:起别名标签。
  • <environments>:配置数据库环境标签。
  • <environment>:配置数据库信息标签。
  • <transactionManager>:事务管理标签。
  • <dataSource>:数据源标签。
  • <property>:数据库连接信息标签。
  • <mappers>:引入映射配置文件标签。

接口代理方式实现 Dao 层

  • 接口代理方式可以让我们只编写接口即可,而实现类对象由 MyBatis 生成。

  • 实现规则

    1. 映射配置文件中的名称空间必须和 Dao 层接口的全类名相同。
    2. 映射配置文件中的增删改查标签的 id 属性必须和 Dao 层接口的方法名相同。
    3. 映射配置文件中的增删改查标签的 parameterType 属性必须和 Dao 层接口方法的参数相同。
    4. 映射配置文件中的增删改查标签的 resultType 属性必须和 Dao 层接口方法的返回值相同。
  • 获取动态代理对象

    • SqlSession 功能类中的 getMapper() 方法。

映射配置文件 - 动态 SQL

<if>标签
  • <where>:条件标签。如果有动态条件,则使用该标签代替 where 关键字。
  • <if>:条件判断标签。
<if test= "条件判断" >
	查询条件拼接
</if>
<foreach>标签
  • <foreach>:循环遍历标签。适用于多个参数或者的关系。
<foreach collection= "" open= "" close= "" item= "" separator= "" >
	获取参数
</foreach>
  • 属性
    • collection:参数容器类型,(list-集合,array-数组)。
    • open:开始的 SQL 语句。
    • close:结束的 SQL 语句。
    • item:参数变量名。
    • separator:分隔符。
SQL片段抽取
  • 我们可以将一些重复性的 SQL 语句进行抽取,以达到复用的效果。

  • <sql>:抽取 SQL 语句标签。

    <sql id= "片段唯一标识" >抽取的SQL语句</sql>
    
  • <include>:引入 SQL 片段标签。

    <include refid= "片段唯一标识" />
    

核心配置文件 – 分页插件

  • 分页:可以将很多条结果进行分页显示。
  • 分页插件 jar 包:pagehelper-5.1.10.jar jsqlparser-3.1.jar
  • <plugins>:集成插件标签。
  • 分页助手相关 API
    • PageHelper:分页助手功能类。
    • startPage():设置分页参数
    • PageInfo:分页相关参数功能类。
    • getTotal():获取总条数
    • getPages():获取总页数
    • getPageNum():获取当前页
    • getPageSize():获取每页显示条数
    • getPrePage():获取上一页
    • getNextPage():获取下一页
    • isIsFirstPage():获取是否是第一页
    • isIsLastPage():获取是否是最后一页

多表操作

一对一
  • <resultMap>:配置字段和对象属性的映射关系标签。

    • id 属性:唯一标识
    • type 属性:实体对象类型
  • <id>:配置主键映射关系标签。

  • <result>:配置非主键映射关系标签。

    • column 属性:表中字段名称
    • property 属性: 实体对象变量名称
  • <association>:配置被包含对象的映射关系标签。

    • property 属性:被包含对象的变量名
    • javaType 属性:被包含对象的数据类型
一对多
  • <resultMap>:配置字段和对象属性的映射关系标签。

    • id 属性:唯一标识
    • type 属性:实体对象类型
  • <id>:配置主键映射关系标签。

  • <result>:配置非主键映射关系标签。

    • column 属性:表中字段名称
    • property 属性: 实体对象变量名称
  • <collection>:配置被包含集合对象的映射关系标签。

    • property 属性:被包含集合对象的变量名
    • ofType 属性:集合中保存的对象数据类型
多对多
  • <resultMap>:配置字段和对象属性的映射关系标签。

    • id 属性:唯一标识
    • type 属性:实体对象类型
  • <id>:配置主键映射关系标签。

  • <result>:配置非主键映射关系标签。

    • column 属性:表中字段名称
    • property 属性: 实体对象变量名称
  • <collection>:配置被包含集合对象的映射关系标签。

    • property 属性:被包含集合对象的变量名
    • ofType 属性:集合中保存的对象数据类型

注解开发 单表操作

  • 注解可以简化开发操作,省略映射配置文件的编写。

  • 常用注解

    • @Select(“查询的 SQL 语句”):执行查询操作注解
    • @Insert(“查询的 SQL 语句”):执行新增操作注解
    • @Update(“查询的 SQL 语句”):执行修改操作注解
    • @Delete(“查询的 SQL 语句”):执行删除操作注解
  • 配置映射关系

<mappers>
	<package name="接口所在包"/>
</mappers>

注解实现多表操作

  • @Results:封装映射关系的父注解。

    • Result[] value():定义了 Result 数组
  • @Result:封装映射关系的子注解。

    • column 属性:查询出的表中字段名称
    • property 属性:实体对象中的属性名称
    • javaType 属性:被包含对象的数据类型
    • one 属性:一对一查询固定属性
    • many 属性:一对多查询固定属性
  • @One:一对一查询的注解。

    • select 属性:指定调用某个接口中的方法
  • @Many:一对多查询的注解。

    • select 属性:指定调用某个接口中的方法

构建SQL语句

  • org.apache.ibatis.jdbc.SQL:构建 SQL 语句的功能类。通过一些方法来代替 SQL 语句的关键字。

    • SELECT()
    • FROM()
    • WHERE()
    • INSERT_INTO()
    • VALUES()
    • UPDATE()
    • DELETE_FROM()
  • @SelectProvider:生成查询用的 SQL 语句注解。

  • @InsertProvider:生成新增用的 SQL 语句注解。

  • @UpdateProvider:生成修改用的 SQL 语句注解。

  • @DeleteProvider:生成删除用的 SQL 语句注解。

    • type 属性:生成 SQL 语句功能类对象
    • method 属性:指定调用方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值