Java笔记-18、Web后端基础 MyBatis
数据库连接池
数据库连接池是个容器,负责分配、管理数据库连接(Connection)。
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。
释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。
优势:
- 资源重用
- 提升系统响应速度
- 避免数据库连接遗漏
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>

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
注意事项:
- 数值前边必须有空格,作为分隔符。
- 使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格)。
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可。
#表示注释,从这个字符一直到行尾,都会被解析器忽略。
在yml格式的配置文件中,如果配置项的值是以0开头的,值需要使用
''引起来,因为以0开头在yml中表示8进制的数据。

浙公网安备 33010602011771号