系列文章目录
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。
二、了解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.Driverurl : jdbc : mysql : //localhost : 3306/book-store# 用户名密码username : rootpassword : briuptype : com.alibaba.druid.pool.DruidDataSourcemybatis :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配置文件