MyBatis的介绍
我的理解:MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。
官方理解:MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
MyBatis入门
快速入门
操作步骤
- 搭建环境(创建springboot工程,数据库表,实体类)
- 引入相关依赖,配置MyBatis(数据库连接信息)
#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
#连接数据库的用户名
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=1234
- 编写sql语句(注解/XML)
package com.zjd.springbootmybatisquickstart.pojo; import ch.qos.logback.core.model.INamedModel; public class User { private Integer id; private String name; private Short age; private Short gender; private String phone; public User() { } public User(Integer id, String name, Short age, Short gender, String phone) { this.id = id; this.name = name; this.age = age; this.gender = gender; this.phone = phone; } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Short getAge() { return age; } public void setAge(Short age) { this.age = age; } public Short getGender() { return gender; } public void setGender(Short gender) { this.gender = gender; } public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; } @Override public String toString() { return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", gender=" + gender + ", phone='" + phone + '\'' + '}'; } }
测试,运行后控制台输出所有数据
JDBC介绍
JDBC:是使用java语言操作关系型数据库的一套API,只是一套规范,实现由数据库厂商提供,厂商提高的实现又叫驱动jar包
三大缺点:硬编码 繁琐 资源浪费性能降低
数据库连接池
数据库连接池:是一个容器,负责分配,管理数据库连接
优势:资源重用,提示系统响应速度,避免数据库连接重用问题
常用连接池有Druid,hakari,其中springboot会自带连接池hakari
切换Druid数据库连接池
--粘贴进pom.xml文件
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.8</version>
</dependency>
lombok
Lombok是一个实用的]ava类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、tostring等方法,并可以自动化生成日志变量,简化java开发、提高效率。
注解 | 作用 |
@Getter/@Setter | 为所有的属性提供get/set方法 |
@ToString | 会给类自动生成易阅读的 toString 方法 |
@EqualsAndHashCode | 根据类所拥有的非静态字段自动重写 equals 方法和 hashcode 方法 |
@Data | 提供了更综合的生成代码功能(@Getter+@Setter+ @ToString+@EqualsAndHashCode) |
@NoArgsConstructor | 实体类生成无参的构造器方法 |
@AllArgsConstructor | 为实体类生成除了static修饰的字段之外带有各参数的构造器方法。 |
MyBatis基础增删改查
日志输出
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
开启mybatis的驼峰命名自动映射开关
mybatis.configuration.map-underscore-to-camel-case=true
删除
描述:点击删除按钮后,前端就会给服务点发送请求,把这条数据删除掉
根据主键id删除
预编译
根据主键id批量删除
插入
//普通新增 @Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)" + "value (#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{dept_id},#{create_time},#{update_time})") public void insert(Emp emp);//新增(主键返回)
@Options(keyProperty = "id",useGeneratedKeys = true) //keyProperty = "id"意思是主键会封装到emp对象的id属性当中,useGeneratedKeys = true意思是需要拿到生成主键值 @Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)" + "value (#{username},#{name},#{gender},#{image},#{job},#{entrydate},#{dept_id},#{create_time},#{update_time})") public void insert(Emp emp);
更新
@Update("update emp set username = #{},name = #{}, gender = #{}, image = #{}, job = #{}, " + "entrydate = #{}, dept_id = #{}, create_time = #{}, update_time = #{}") public void update(Emp emp);
MyBatis动态SQL
详细,写的很好