MyBatis常见问题

简介: Mybatis的核心设计理念是基于原生sql进行的,正是由于这个设计理念使得Mybatis相对于Hibernate框架执行效率更高,但是代码的可移植性差,由于Mybatis是一个轻量级的框架,框架本身提供的功能较少,但是使用的灵活性更高

一、什么是Mybatis

1、Mybatis是一个类似于Hibernate的ORM持久层开源框架,

2、Mybatis通过XML或者注解配置和映射,实现对数据库的访问

3、Mybatis的核心设计理念是基于原生sql进行的,正是由于这个设计理念使得Mybatis相对于Hibernate框架执行效率更高,但是代码的可移植性差,由于Mybatis是一个轻量级的框架,框架本身提供的功能较少,但是使用的灵活性更高。

二、结果集映射

1、结果集映射是在Mybatis的xml映射文件中进行配置的一个映射,表示查询语句结果集中每一条记录如何转换成对应的java对象,将我们的java对象和数据表中的字段一一对应。

2、他是通过resultMap这个标签进行配置,里面属性有type和id,id是这个结果集映射的唯一一个标识,用于查询标签的一个引用,type属性用于设置查询结果需要转换的java对象,就是相对应的实体类,可以写全类名,当我们在Mybatis配置文件中配置默认扫描包或者配置类的别名的时候可以使用类名或者别名

3、一共有2个字标签,分别是id和result,id于配置数据表主键对应关系,result用于设置其他字段和类属性的一个对应,这两个标签都有2个属性,propery和column,分别设置java对象的属性和数据表字段名

三、动态SQL

1、Mybatis的动态SQL是Mybatis灵活性的一种体现,可以通过外部传入的参数,使用一系列标签,灵活的拼接sql语句

2、里面主要有这几个标签,if、where、set、foreach、choose、when、otherwise,

3、if标签用来进行条件判断,有一个test属性,添加判断条件,多个if标签时,记得用。where标签取代sql中的where命令,若标签中无任意结果,则where不会出现在sql中,记得在前面加一个and用来连接;set标签用来取代sql中update set命令;foreach标签进行循环遍历,有collection、item、open、close、separator属性,分别指传入的参数类型,临时变量、语句开始和结束需要拼接的内容,分隔符;choose、when、otherwise相当于java中的多重if结构

四、#和$区别

1、两者都是用来进行参数传递

2、#的方式更常用,内部封装了prepareStatement接口,进行预编译处理,相当于JDBC中为?占位符赋值,这种相对安全,号取到的数据会那需要使用正确的格式,拼接到sql中

3、当比较而言#更加的安全,能有效的方式sql注入

五、多表间关联查询

1、开发中经常查询数据会用到多张表进行查询,比如查询一个用户可以有多个订单,但是用户表和商品表是两张不同的表,如果要查询用户以及其对应的商品信息就需要用到多表联查

2、主要有两种方式,第一种编写带有连接查询的sql,将需要的字段从多张表中取出,放入结果集,首先在实体类中添加属性对应数据表中字段,其次,在映射文件的结果集映射中添加result标签,为新增的属性设置对应字段,最后修改查询sql,添加连接查询,

3、这种方式很少用,方式二是,使用标签通过指定的格式进行配置,在查询时自动获取相关数据表的数据,主要用到两个标签,association处理多对一的关系,一般设置在多的一方的配置文件中,用于子表查询主表,collection标签处理一对多,设置在一的一方的配置文件中,用于主表查询子表,

4、如何使用呢?首先在实体类中添加属性,一的一方添加多的一方的集合对象,泛型是多的一方的对象,多的一方添加一的一方的对象,其次在配置文件的结果集中添加标签,多的一方用association,一的一方用collection,对标签进行配置,分别有property、column、select属性,property自动查询的结果保存到那个实体类,column设置携带到查询语句中的字段,select设置自动执行的sql语句的id,最后需要添加对应数据表的结果集映射进来。

目录
相关文章
|
存储 SQL Java
|
Java 数据库连接 数据库
Mybatis 注解方式操作数据库常见问题
Mybatis 注解方式操作数据库常见问题
Mybatis 注解方式操作数据库常见问题
|
SQL XML 安全
MyBatis常见问题
Mybatis是一个类似于Hibernate的ORM持久层开源框架,
681 0
MyBatis常见问题
|
XML Java 数据库连接
mybatis新手入门常见问题集(持续更新)
一、参数为集合  Q:parameterType指的的类型是集合类型还是对象?  A:都可以,甚至不用在xml中指定也可以。第一,mybatis会对传入的参数进行判断是不是list或者array,第二,mybatis是根据ONGL表达式,即 【参数.属性】 这样的格式,通过反射去获取和注入属性值,传入的参数为集合的时候,不管指定parameterType的那一个,上面说的两点都能发挥功能。
1760 0
|
SQL Java 数据库连接
Mybatis基础: 常见问题与FAQ
Mybatis基础: #{...} 和 ${...} 的区别MyBatis将 #{…} 解释为JDBC prepared statement 的一个参数标记。而将 ${…} 解释为字符串替换。理解这两者的区别是很有用的, 因为在某些SQL语句中并不能使用参数标记(parameter markers)。
896 0
|
1月前
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
111 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
1月前
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
54 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
|
1月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
312 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
1月前
|
SQL Java 数据库连接
mybatis使用二:springboot 整合 mybatis,创建开发环境
这篇文章介绍了如何在SpringBoot项目中整合Mybatis和MybatisGenerator,包括添加依赖、配置数据源、修改启动主类、编写Java代码,以及使用Postman进行接口测试。
17 0
mybatis使用二:springboot 整合 mybatis,创建开发环境
|
1月前
|
Java 数据库连接 API
springBoot:后端解决跨域&Mybatis-Plus&SwaggerUI&代码生成器 (四)
本文介绍了后端解决跨域问题的方法及Mybatis-Plus的配置与使用。首先通过创建`CorsConfig`类并设置相关参数来实现跨域请求处理。接着,详细描述了如何引入Mybatis-Plus插件,包括配置`MybatisPlusConfig`类、定义Mapper接口以及Service层。此外,还展示了如何配置分页查询功能,并引入SwaggerUI进行API文档生成。最后,提供了代码生成器的配置示例,帮助快速生成项目所需的基础代码。