Mybatis

时间:2024-10-29 10:10:21

系列文章目录

mybatis的用法

目录

系列文章目录

一、Mybatis是什么?

二、了解SpringBoot

1.优点

2.SpringBoot项目结构

三、Mysql增删改查

1.删除操作

2.参数占位符

​​​​​​3.新增操作

4.更新操作

5.查询操作

数据封装:

四、XML映射文件

五、动态SQL语句

1.if

2.set

3.foreach

4.sql和include 

六、yml配置文件

yml语法

配置文件优先级 

一、Mybatis是什么?

MyBatis是一款优秀的 持久层 框架,用于简化JDBC的开发。MyBatis本是 Apache的一个开源项目iBatis。

官网: https://mybatis.org/mybatis-3/zh/index.html

二、了解SpringBoot

1.优点

SpringBoot 是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring 应用的初始搭建以及开发过程。

SpringBoot程序优点: 自动配置 起步依赖(简化依赖配置) 辅助功能(内置服务器等)

2.SpringBoot项目结构

三、Mysql增删改查

1.删除操作

在映射接口中定义方法,使用注解

@Delete ( "delete from es_user where id = #{id}" ) // 使用 #{key}
式获取方法中的参数值
public void deleteById ( Integer id )

2.参数占位符

在Mybatis中提供的参数占位符有两种:${...} 、#{...}

#{...} 执行SQL时,会将#{…}替换为?,生成预编译SQL,会自动设置参数值 使用时机:参数传递,都使用#{…}

${...} 拼接SQL。直接将参数拼接在SQL语句中,存在SQL注入问题 使用时机:如果对表名、列表进行动态设置时使用,这个也有使用场景,例如:在sql语句需要传入表名,只能永$

​​​​​​3.新增操作

使用insert注解

主键返回:

默认情况下,执行插入操作时,是不会主键值返回的。 如果我们想要拿到主键值,需要在Mapper接口中的方法上添加一个 Options注解 ,并在注解中指定属性 useGeneratedKeys=true和 keyProperty="实体类属性名" 。

4.更新操作

使用update注解

5.查询操作

数据封装:

实体类属性名和数据库表查询返回的字段名一致,mybatis会自动封装。 如果实体类属性名和数据库表查询返回的字段名不一致,不能自动封装

解决方案: 1. 起别名 2. 开启驼峰命名 3. 结果映射

四、XML映射文件

在Mybatis中使用XML映射文件方式开发,需要符合一定的规范:

1. XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和 Mapper接口放置在相同包下(同包同名)

2. XML映射文件的 namespace 属性值为Mapper接口全限定名

3. XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致

XML中返回主键有两种方法:

1.<!-- 使用useGeneratedKeys和keyProperty属性设置 返回主键id -->

<insert id="insert_id" useGeneratedKeys="true" keyProperty="id">

2.<!-- 使用子标签selectKey设置 返回主键id -->

<selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER">

        select LAST_INSERT_ID()

</selectKey>

五、动态SQL语句

SQL语句会随着用户的输入或外部条件的变化而变化,这就是动态SQL。

1.if

<if> :用于判断条件是否成立 使用test属性进行条件判断,如果条件为true,则拼接SQL,否则不拼接

<if test = " 条件表达式 " >
要拼接的 sql 语句
</if>

使用 <where> 标签代替SQL语句中的where关键字

<where> 只会在子元素有内容的情况下才插入where子句,而且会自动去除子句的开头的AND或OR! 

where小结: 如果where中所有条件不成立,则SQL语句中不会产生where

where标签中只要有一个条件成立,SQL语句中就会产生where

where标签可以自动去除多余的and或or,保证SQL语句格式正确

2.set

对于更新操作中的set,使用set标签

<set> :动态的在SQL语句中插入set关键字,并会删掉额外的逗号。(用 于update语句中)

3.foreach

使用 <foreach> 标签可以拼接得到 in(参数列表) ,进而完成批量删除功能。

<foreach collection="集合名称" item="集合遍历出来的元素/项" separator="每一次遍历使用的分隔符" open="遍历开始前拼接的片段" close="遍历结束后拼接的片段">

        #{item属性值}

</foreach>

4.sql和include 

<sql> :定义可重用的SQL片段

<include> :通过属性refid,引入指定的SQL片段

六、yml配置文件

特点:

更简洁,易于阅读 容易与脚本语言交互 以数据为核心,重数据轻格式

yml语法

大小写敏感

数值前边必须有空格,作为分隔符

使用缩进表示层级关系,缩进时只能用空格,不允许Tab键(idea中会自动 将Tab转换为空格)

缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

# 表示单行注释,从这个字符一直到行尾,都会被解析器忽略

以下是一些基本的配置

spring :
datasource :
# 驱动类全包名
driver-class-name : com.mysql.cj.jdbc.Driver
url : jdbc : mysql : //localhost : 3306/book-store
# 用户名密码
username : root
password : briup
type : com.alibaba.druid.pool.DruidDataSource
mybatis :
configuration :
# 日志输出
log-impl : org.apache.ibatis.logging.stdout.StdOutImpl
# 开启驼峰命名
map-underscore-to-camel-case : true
# 配置映射文件路径
mapper-locations : classpath : mapper/**/*.xml
# 配置扫描指定包下自定义类,配置完成后:类的全包名 只写 类名
type-aliases-package : com.briup.domain

配置文件优先级 

1. properties配置文件

2. yml配置文件

3. yaml配置文件