目录
一、快速入门程序
二、配置SQL提示
三、JDBC
四、数据库连接池
五、lombok工具包
MyBatis是一款优秀的 持久层Dao层 框架,用于简化JDBC的开发。
MyBatis本是 Apache的一个开源项目iBatis, 2010年这个项目由apache迁移到了 google code,并且改名为 MyBatis。2013年11月迁移到 Github。
官网:https://mybatis.net.cn/
使用MyBatis查询所有用户数据:
@SpringBootTest //springboot整合单元测试的注解
class SpringbootMybatisQuickstartApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void testListUser(){
List userList = userMapper.list();
userList.stream().forEach(user ->{
System.out.println(user);
});
}
}
@Mapper //在运行时,自动生成该接口实现类对象(代理对象),并且将该类对象交给IOC容器管理
public interface UserMapper {
//查询全部用户信息
@Select("select * from user")
public List list();
}
默认在mybatis中编写SQL语句是不识别的。可以做如下配置:
① JDBC: (Java DataBase Connectivity ),就是使用Java语言操作关系型数据库的一套API。
② 本质:
③ 原始JDBC程序:
@Test
public void testJdbc() throws Exception {
//1. 注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2. 获取连接对象
String url = "jdbc:mysql://localhost:3306/mybatis";
String username = "root";
String password = "123456";
// 连接对象
Connection connection = DriverManager.getConnection(url, username, password);
//3. 获取执行SQL的对象Statement,执行SQL,返回结果
String sql = "select * from user";
Statement statement = connection.createStatement();
// 结果集
ResultSet resultSet = statement.executeQuery(sql);
//4. 封装结果数据
List userList = new ArrayList<>();
while (resultSet.next()){
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
short age = resultSet.getShort("age");
short gender = resultSet.getShort("gender");
String phone = resultSet.getString("phone");
User user = new User(id,name,age,gender,phone);
userList.add(user);
}
//5. 释放资源
statement.close();
connection.close();
// 6.遍历查询结果
userList.stream().forEach(user ->{
System.out.println(user);
});
}
存在弊端:
- 硬编码:注册驱动、获取连接发生变动,原始JDBC是写死Java程序的,所以需要重写编码再打包。
- 繁琐:解析结果、封装结果需要一个字段一个字段进行,但是实际开发字段数很多。
- 资源浪费、性能降低:在执行SQL语句前先要获取连接,执行完毕后又马上关闭连接,在实际开发过程中就会频繁获取和关闭连接。
所以我们还是更推荐 SpringBoot + MyBatis 整合进行数据库操作。
① 介绍:
② 优势:
③ 实现:标准接口:Datasource
Connection getConnection () throws SQLException;
C3P0、DBCP | 老版本不再使用 |
Druid(德鲁伊) |
|
Hikari | SpringBoot 默认 |
④ 切换Druid数据库连接池:
官网地址:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
在上述快速入门程序的学习中,我们编写的User实体类。
虽然只有五个属性,但是我们还是要为每一个属性提供对应的 get / set 方法以及重写 toString 方法,如果还有需求还需要提供无参构造和有参构造 ,甚至是 hashCode 和 equals 等方法。虽然可以快捷键生成,但是还需要去手动做,显得代码臃肿。
通过lombok注解: |
① 介绍:Lombok是一个实用的Java类库,能通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高效率。
② 常用注解:
注解 | 作用 |
@Getterl / @Setter | 为所有的属性提供get/set方法 |
@Tostring | 会给类自动生成易阅读的toString方法 |
@EqualsAndHashcode | 根据类所拥有的非静态字段自动重写equals 方法和hashcode方法 |
@Data | 提供了更综合的生成代码功能(@Getter +@Setter +@ToString +@EqualsAndHashCode) |
@NoArgsConstructor | 为实体类生成无参的构造器方法 |
@AllArgsConstructor | 为实体类生成除了static修饰的字段之外带有各参数的构造器方法。 |
@Data
@NoArgsConstructor //无参构造
@AllArgsConstuctor //有参构造
public class User {
private Integer id;
private String name;
private short age;
private short gender;
private String phone;
}
③ 要想使用lombok需要引入lombok依赖:
org.projectlombok
lombok
注意事项:Lombok会在编译时,自动生成对应的java代码。我们使用lombok时,还需要安装一个lombok的插件(idea自带)。