MyBatis数据库配置与SQL操作全解析

一.配置数据库

properties

复制代码
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
连接数据库的⽤⼾名
spring.datasource.username=
连接数据库的密码
spring.datasource.password=

yml

复制代码
spring:
  datasource:
  url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
  username: 
  password: 
  driver-class-name: com.mysql.cj.jdbc.Driver

@Mapper注解:表示是MyBatis中的Mapper接⼝

程序运行时, 框架会自动生成接口的实现类对象(代理对象),并给交Spring的IOC容器管理

二.打印MyBatis日志

properties

复制代码
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

yml

复制代码
mybatis:
  configuration: 
  log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

三.参数传参

⽅法中添加⼀个参数,将方法中的参数,传给SQL语句,#{ } 的方式获取方法中的参数

@Param:设置参数的别名, 如果使用@Param 设置别名, #{ }里面的属性名必须和

@Param 设置的⼀样

1.MyBatis SQL注解形式

增(insert)
复制代码
@Insert("SQL语句")
Integer insert(传入的参数/对象)

获取自增的元素:可以用@Options(useGeneratedKeys = true, keyProperty = "获取的元素")

删(Delete)
复制代码
@Delete("SQL语句")
void delete(传入的参数/对象)
改(Update)
复制代码
@Update("SQL语句")
void update(传入的参数/对象)
查(Select)
复制代码
@Select("SQL语句")
List<数据库类型及对象> 方法名()

方法用对象UserInfo接收返回结果, MySQL查询出来数据为⼀条, 就会自动赋值给对象

方法用List<UserInfo>接收返回结果, MySQL查询出来数据为⼀条或多条时, 也会自动赋值给List

解决MySQL中自动映射问题

数据库中没有驼峰大小写分割只能用下划线分割

1.起别名

查询中使用as来给数据库中的变量名改名,将下划线分割的名字改为Java的驼峰式

2.Results映射

在查询SQL写完后加上@Results注解来进行手动映射

复制代码
@Results(id=" "{
            @Result(column = "数据库中变量名",property = "Java的驼峰式")
})
使⽤ id 属性给该 Results 定义别名,
使⽤ @ResultMap 用来复⽤映射的名字  @ResultMap(value=" ")
3.配置驼峰自动转换
复制代码
yml
mybatis: 
  configuration:
    map-underscore-to-camel-case: true #配置驼峰⾃动转换
驼峰命名规则: abc_xyz => abcXyz_

2.MyBatis XML形式

配置连接
properties
复制代码
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
#连接数据库的⽤⼾名
spring.datasource.username=
#连接数据库的密码
spring.datasource.password=
#配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
mybatis.mapper-locations=classpath:文件夹/XML文件名.xml
yml
复制代码
# 数据库连接配置
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  #配置 mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件
  mybatis:
    mapper-locations: classpath:文件夹/XML文件名.xml
持久层代码

在引用SQL查询的类方法上加入@Mapper

在XML文件里加入

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="XML文件所在的绝对路径">
</mapper>

增(Insert)

复制代码
<insert id="创建接口方法名">
  SQL语句
</insert>

如果创建接口时加上了@Param更改了传入变量的名SQL语句中传入参数就更改为

复制代码
#{更改名.对象中的属性名}

自增属性

复制代码
<insert id="创建接口方法名" useGeneratedKeys="true" keyProperty="id">

删(Delete)

复制代码
<delete id="创建接口方法名">
  SQL语句
</delete>

改(Update)

复制代码
<update id="创建接口方法名">
  SQL语句
</update>

查(Select)

复制代码
<select id="创建接口方法名" resultType="创建传入对象文件所在的绝对路径">
  SQL语句
</select>

解决MySQL中自动映射问题------数据库中没有驼峰大小写分割只能用下划线分割

起别名和配置驼峰自动转换一摸一样

结果映射

复制代码
<resultMap id="BaseMap" type="创建传入对象文件所在的绝对路径">
    #用主键来更好识别唯一数据
    <id column="主键名" property="主键名"></id>
    <result column="数据库中变量名" property="Java的驼峰式"></result>
</resultMap

#{ }是预编译SQL和${ }是即时SQL区别

#{ }使用的是预编译SQL, 通过 ? 占位的方式, 提前对SQL进行编译, 然后把参数填充到SQL语句中

#{ } 会根据参数类型, 自动拼接引号

${ }会直接进行字符替换, ⼀起对SQL进⾏编译,就会有SQL注入的安全性问题

排序功能, 表名, 字段名作为参数时要用到${ }

相关推荐
2301_822366352 小时前
使用Scikit-learn构建你的第一个机器学习模型
jvm·数据库·python
csdn2015_4 小时前
MyBatis Generator 核心配置文件 generatorConfig.xml 完整配置项说明
java·mybatis
csdn2015_4 小时前
generatorConfig.xml 配置 Controller、Service 完整教程
xml·mybatis
万邦科技Lafite4 小时前
一键获取京东商品评论信息,item_reviewAPI接口指南
java·服务器·数据库·开放api·淘宝开放平台·京东开放平台
自可乐4 小时前
Milvus向量数据库/RAG基础设施学习教程
数据库·人工智能·python·milvus
weixin_307779134 小时前
C#实现两个DocumentDB实例之间同步数据
开发语言·数据库·c#·云计算
盒马coding4 小时前
深度解密MySQL2PG工具MySQL至PostgreSQL语法全景拆解过程
数据库·mysql·postgresql
tb_first4 小时前
万字超详细苍穹外卖学习笔记2
java·jvm·数据库·spring·tomcat·maven
Nandeska4 小时前
13、MySQL半同步复制示例
数据库·mysql