首页 > 其他分享 >Mybatis二

Mybatis二

时间:2023-06-10 11:24:17浏览次数:36  
标签:插件 封装 映射 SQL 使用 Mybatis id

编码格式错误

控制台错误提示:
MalformedByteSequenceException: 1 字节的 UTF-8 序列的字节 1 无效。
解决方案,在pom文件中加入配置

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

分页插件

现在我们要学习使用一个常用的mybatis的插件 --> 分页插件-PageHelper
使用流程

使用流程

引入依赖

<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.0</version>
</dependency>

全局配置文件使用插件

<!-- 插件 -->
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"/>
</plugins>

【在执行查询前设置】
// 参数1: 当前页
// 参数2: 每页大小
PageHelper.startPage(2,2);

ORM映射

2.1 MyBatis自动ORM失效

MyBatis只能自动维护库表”列名“与”属性名“相同时的一一对应关系,二者不同时,无法自动ORM

2.2方案一:列的别名

在SQL中使用 as 为查询字段添加列别名,以匹配属性名。

方案二:结果映射(ResultMap - 查询结果的封装规则)

通过< resultMap id="" type="" >映射,匹配列名与属性名。

<mapper namespace="com.qf.mapper.UserMapper">
<!--定义resultMap标签-->
<resultMap id="findUserByIdResultMap" type="user">
<!--关联主键与列名-->
<id property="idd" column="id" />
</resultMap>
<!--使用resultMap作为ORM映射依据-->
<select id="findUserById" resultMap="findUserByIdResultMap">
select id,username,password,phone,create_time,sex,money from tb_user where
id = #{id}
</select>
</mapper>

多表联查

3.1 OneToOne

案例:订单 ---> 用户 (1 VS 1) 一个订单只会属于一个人

因为在创建数据库的表,用户表中没有订单的信息,订单表中没有用户的信息,因此我们需要重新创建扩展类XXXXOV,包含以上全部属性,扩展类可以继承以上一个实体类,私有化创建另一个全局成员变量

XXX.xml(扩展类的映射文件)

<resultMap id=""orderWithUserResultMap" type=""OrderVO">
<!-- 封装查询主体XXX: -->
<id column="oid" property="oid"/>
<result column="xxxx" property="xxxx"/>
。.......................
<!-- 一对一映射,需要封装关联的XXX对象 -->
<!-- 一对一映射,需要特殊标签 association-->
<!-- property="user" 是OrderVO类中的属性,javaType是user属性的类型 -->
<association property=""user" javaType="User">
<!-- 下面正常的列和属性 一一映射 --
<id column="id" property="id"/>
<result column="username" property="username"/>
<result column="xxxx" property="xxxx"/>
...................
</association>
</resultMap>
<!-- 多表联查,直接返回resultType无法封装关联的那个对象,就使用使用resultMap手动映射 -->
<select id=""findXXX" resultMap="orderWithUserResultMap">
SELECT
***************
</select>

OneToMore

与上面OneToOne不同的是<association property="xxx" javaType="Xxxxx">替换为<collection property="orderList" ofType="com.qf.model.Order">

关联查询总结

正常封装使用resultMap
一对一封装使用association
一对多封装使用collection

动态sql

常见的动态SQL语法

标签:插件,封装,映射,SQL,使用,Mybatis,id
From: https://www.cnblogs.com/qiyuancc/p/17470950.html

相关文章

  • mybatis-动态构建SQL
    又学习到了,今天翻着队友写的代码,我看到了个注解,起初还以为是自定义的,我搜了下才发现,竟然是mybatis自带的这个注解,我竟然不知道,又是孤陋寡闻的一天,记录一下这个注解。查找了下这个注解发现这个注解是四个:我看了下与@Select有啥区别,这个@SelectProvider是能够加多条件判断的,看下面......
  • mybatis拦截器实现数据权限
    前端的菜单和按钮权限都可以通过配置来实现,但很多时候,后台查询数据库数据的权限需要通过手动添加SQL来实现。比如员工打卡记录表,有id,name,dpt_id,company_id等字段,后两个表示部门ID和分公司ID。查看员工打卡记录SQL为:selectid,name,dpt_id,company_idfromt_record当一个总......
  • mybatis逆向工程增强版
    1. 配置环境  123相关配置和基础版一样,在course-23中有详细介绍,这里不做赘述只需要在generatorConfig.xml中修改如下位置即可<!--targetRuntime有两个值:MyBatis3Simple:生成的是基础版,只有基本的增删改查。MyBatis3:生成的是增强版,除了基本的......
  • mybatis分页插件之分页原理
    1. limit分⻚  126mysql的limit后⾯两个数字:第⼀个数字:startIndex(起始下标。下标从0开始。)第⼆个数字:pageSize(每⻚显示的记录条数)假设已知⻚码pageNum,还有每⻚显示的记录条数pageSize,第⼀个数字可以动态的获取吗?startIndex = (pageNum - 1) * pageSize所以,标准通⽤的mysql......
  • Mybatis框架及原理实例分析
    摘要本篇文章只是个人阅读mybatis源码总结的经验或者个人理解mybatis的基本轮廓,作为抛砖引玉的功能,希望对你有帮助,如果需要深入了解细节还需亲自去阅读源码。mybatis基本架构mybatis的源码应该算是比较容易阅读的,首先mybatis核心功能就是执行Sql语句,但在其基础上又有许多增强的地方......
  • MyBatis框架及原理分析
    MyBatis是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架,其主要就完成2件事情:封装JDBC操作利用反射打通Java类与SQL语句之间的相互转换MyBatis的主要设计目的就是让我们对执行SQL语句时对输入输出的数据管理更加方便,所以方便地写出SQL和方便地获取SQL的执行结果才是MyBa......
  • 01-mybatis-快速入门-代理开发、配置文件
    文章目录MybatisMybatis入门案例1、创建User表,添加数据2、创建模块,搭建框架2.1创建模块注意:完善项目目录2.2导入坐标2.3编写MyBatis核心配置文件2.4编写sql映射文件2.5编码3、解决SQL映射文件的警告提示Mapper代理开发1、定义同名接口2、设置namespace并修改核心配置mappe......
  • 02-MyBatis-CRUD-配置文件、参数封装、mybatisX插件、动态sql, 简单的用注解开发
    文章目录MybatisCRUD练习1,配置文件实现CRUD1.1环境准备Debug01:别名mybatisx报错1.2查询所有数据1.2.1编写接口方法1.2.2编写SQL语句1.2.3编写测试方法1.2.4起别名解决上述问题1.2.5使用resultMap解决上述问题1.2.6小结1.3查询详情1.3.1编写接口方法1.3.2编写SQL语句......
  • mybatis离谱BUG
    一、idea中resuorces和test文件不识别解决:手动设置标记 二、编码格式问题:控制台错误提示:MalformedByteSequenceException:1字节的UTF-8序列的字节1无效。解决方案,在pom文件中加入配置<properties><project.build.sourceEncoding>UTF-8</project.build.source......
  • Mybatis的配置与简单使用
    Mybatis的开发步骤官网入门手册中说明如下:创建项目加入依赖执行SQLXMLXML配置文件中包含了对MyBatis系统的核心设置,包括获取数据库连接实例的数据源(DataSource)以及决定事务作用域和控制方式的事务管理器(TransactionManager)获得SqlSessionFactoryBuilder获得SqlS......