JavaWeb开发——SSM基础 数据库后端操作:MyBatis
MyBatis官网:https://mybatis.org/mybatis-3/zh_CN/index.html%5D%28https://mybatis.org/mybatis-3/zh_CN/index.html
文章目录
1 概述
JDBC(Java DataBase Connectivity)是sun公司官方定义的一套使用Java语言操作所有关系型数据库的API(规范)。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
MyBatis(官网:https://mybatis.org/mybatis-3/zh_CN/index.html)是一款优秀的持久层框架,用于简化JDBC的开发。
- 准备工作(创建SpringBoot工程、数据库表user、实体类User)
- 在application.properties中配置数据库连接:引入MyBatis的相关依赖,配置数据库的连接信息——四要素
# application.properties # 驱动类名称 spring.datasource.driver-class-name = com.mysql.cj.jdbc.Driver # 数据库连接的url spring.datasource.url = jdbc:mysql://localhost:3306/数据库 # 连接数据库的用户名 spring.datasource.username = 用户名 # 连接数据库的密码 spring.datasource.password = 密码
- 用注释
@Mapper
定义mapper接口,并在操作注释中编写SQL语句(或者用XML映射文件):运行时会自动生成该接口的实体类对象(代理对象),并将该对象成为Bean交给IOC容器管理/* mapper.UserMapper.java */ @Mapper public interface UserMapper { @Select("select * from user") public List<User> list(); // 查询全部用户信息 }
- 单元测试:使用依赖注入(DI)
/* SpringbootMybatisQuickstartApplicationTests.java */ @SpringBootTest class SpringbootMybatisQuickstartApplicationTests { @Autowired private UserMapper userMapper; @Test public void testListUser() { List<User> userList = userMapper.list(); userList.stream().forEach(System.out::println); } }
默认在MyBatis中编写SQL语句是不识别的,可如下图右键配置,并在Idea中配置MySQL数据库的连接(参见MySQL数据库基础教程)以识别表信息
要想查看MyBatis的日志,可以在application.properties中添加以下内容:
# 指定mybatis输出日志的位置,输出控制台
mybatis.configuration.log-impl = org.apache.ibatis.logging.stdout.StdOutImpl
2 数据库连接池
数据库连接池是负责分配、管理数据库连接(Connection)的容器。它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。
优势:资源重用、提升系统响应速度、避免数据库连接遗漏
DataSource:sun公司官方提供的数据库连接池标准接口,由第三方组织实现此接口,用于获取连接
Connection getConnection() throws SQLException;
Hikari连接池是SpringBoot默认的连接池。
Druid(德鲁伊)连接池是阿里巴巴开源的数据库连接池项目,功能强大,性能优秀,是Java语言最好的数据库连接池之一。切换成Druid数据库连接池只需引入起步依赖druid-spring-boot-starter
,详见:官方文档。
3 lombok工具包
Lombok是一个实用的lava类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashCode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率。Lombok会在编译时自动生成对应的java代码,使用时需要安装一个lombok的插件(Idea自带)并引入依赖lombok
。
常用的Lombok注解 | 作用 |
---|---|
@Getter /@Setter |
为所有的属性提供 get/set 方法 |
@ToString |
会给类自动生成易阅读的 toString 方法 |
@EqualsAndHashCode |
根据类所拥有的非静态字段自动重写 equals 方法和 hashCode 方法 |
@Data |
提供了更综合的生成代码功能(@Getter +@Setter +@ToString +@EqualsAndHashCode ) |
@NoArgsConstructor |
为实体类生成无参构造器 |
@AllArgsConstructor |
为实体类生成除了static修饰的字段外的全参构造器 |
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {
private Integer id;
private String username;
private String password;
private String name;
private Short gender; // 性别:1男,2女
private String image; // 图像url
private Short job; // 职位:1班主任,2讲师,3保安
private LocalDate entrydate;<