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持久层开源框架,
785 0
MyBatis常见问题
|
XML Java 数据库连接
mybatis新手入门常见问题集(持续更新)
一、参数为集合  Q:parameterType指的的类型是集合类型还是对象?  A:都可以,甚至不用在xml中指定也可以。第一,mybatis会对传入的参数进行判断是不是list或者array,第二,mybatis是根据ONGL表达式,即 【参数.属性】 这样的格式,通过反射去获取和注入属性值,传入的参数为集合的时候,不管指定parameterType的那一个,上面说的两点都能发挥功能。
1858 0
|
SQL Java 数据库连接
Mybatis基础: 常见问题与FAQ
Mybatis基础: #{...} 和 ${...} 的区别MyBatis将 #{…} 解释为JDBC prepared statement 的一个参数标记。而将 ${…} 解释为字符串替换。理解这两者的区别是很有用的, 因为在某些SQL语句中并不能使用参数标记(parameter markers)。
945 0
|
5月前
|
Java 数据库连接 数据库
Spring boot 使用mybatis generator 自动生成代码插件
本文介绍了在Spring Boot项目中使用MyBatis Generator插件自动生成代码的详细步骤。首先创建一个新的Spring Boot项目,接着引入MyBatis Generator插件并配置`pom.xml`文件。然后删除默认的`application.properties`文件,创建`application.yml`进行相关配置,如设置Mapper路径和实体类包名。重点在于配置`generatorConfig.xml`文件,包括数据库驱动、连接信息、生成模型、映射文件及DAO的包名和位置。最后通过IDE配置运行插件生成代码,并在主类添加`@MapperScan`注解完成整合
800 1
Spring boot 使用mybatis generator 自动生成代码插件
|
8月前
|
XML Java 数据库连接
微服务——SpringBoot使用归纳——Spring Boot集成MyBatis——基于注解的整合
本文介绍了Spring Boot集成MyBatis的两种方式:基于XML和注解的形式。重点讲解了注解方式,包括@Select、@Insert、@Update、@Delete等常用注解的使用方法,以及多参数时@Param注解的应用。同时,针对字段映射不一致的问题,提供了@Results和@ResultMap的解决方案。文章还提到实际项目中常结合XML与注解的优点,灵活使用两者以提高开发效率,并附带课程源码供下载学习。
627 0
|
10月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
363 2
|
Java 数据库连接 Maven
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和MyBatis Generator,使用逆向工程来自动生成Java代码,包括实体类、Mapper文件和Example文件,以提高开发效率。
541 2
mybatis使用一:springboot整合mybatis、mybatis generator,使用逆向工程生成java代码。
|
SQL JSON Java
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
这篇文章介绍了如何在Spring Boot项目中整合MyBatis和PageHelper进行分页操作,并且集成Swagger2来生成API文档,同时定义了统一的数据返回格式和请求模块。
433 1
mybatis使用三:springboot整合mybatis,使用PageHelper 进行分页操作,并整合swagger2。使用正规的开发模式:定义统一的数据返回格式和请求模块
下一篇
开通oss服务