Java笔记-18、Web后端基础 MyBatis

数据库连接池

数据库连接池是个容器,负责分配、管理数据库连接(Connection)。
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。
优势:

  1. 资源重用
  2. 提升系统响应速度
  3. 避免数据库连接遗漏

springboot默认使用hikari(追光者)数据库连接池。

Druid(德鲁伊)连接池是阿里巴巴开源的数据库连接池。功能强大,性能优秀,是Java语言最好的数据库连接池之一。

#切换连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

增删改查操作

删除

// 根据ID删除用户信息
@Delete("delete from user where id = #{id}")
public void deleteById(Integer id);
  • #{...}执行时,会替换为?,生成预编译SQL,参数值传递,安全、性能高(推荐)。
  • ${...}拼接符。直接将参数拼接在SQL语句中,存在SQL注入问题,表名、字段名动态设置时使用,不安全、性能低。
@Select("select id,name,score from ${tableName} order by ${sortField}")

新增用户

添加一个用户

@Insert("insert into user(username,password,name,age) values(#{username},#{password},#{name},#{age})")

public void insert(User user);

#{}里填的是User对象的属性名

修改用户

根据ID更新用户信息

@Update("update user set username=#{username},password=#{password},name=#{name},age=#{age} where id=#{id}")
public void update(User user);

查询用户

根据用户名和密码查询用户信息

@Select("select * from user where username=#{username} and password=#{password}")
public User findByUsernameAndPassword(@Param("username") String username, @Param("password") String password);

如果声明的是多个参数,需要用到@Param,注解的作用是为接口的方法形参起名字的。
基于官方骨架创建的springboot项目中,接口编译时会保留方法形参名,@Param注解是可以省略的,只要形参和注解中的名字一样即可。

XML映射配置

默认规则:
1.XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)。
2.XML映射文件的namespace属性为Mapper接口全限定名一致。
3.XML映射文件中sql语句的id与Mapper 接口中的方法名一致,并保持返回类型一致。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.study.mapper.UserMapper">
    <select id="findAll" resultType="com.study.pojo.User">
        select * from user
    </select>
</mapper>

CleanShot 2025-03-11 at 10.27.43@2x

resultType是指示查询返回的单条结果按照哪个类进行封装。

#在application.properties中指定XML映射配置文件的位置
mybatis.mapper-locations=classpath:mapper/*.xml

MyBatisX

使用MyBatisX插件提升开发效率,自动跳转。

MyBatis配置

application.properties如果配置项过多,层次不清晰。
SpringBoot项目提供了多种属性配置方式(properties、yaml、yml)。

spring:
    datasource:
        driver-cLass-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://Localhost:3306/web01
        username: root
        password: 1234

注意事项:

  1. 数值前边必须有空格,作为分隔符。
  2. 使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格)。
  3. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
  4. #表示注释,从这个字符一直到行尾,都会被解析器忽略。

在yml格式的配置文件中,如果配置项的值是以0开头的,值需要使用''引起来,因为以0开头在yml中表示8进制的数据。

posted @ 2025-03-07 00:08  subeipo  阅读(14)  评论(0)    收藏  举报