MyBatis--1(Mybatis环境配置,JDBC介绍,Lombok的使用)

一、MyBatis介绍

  1. MyBatis是一款优秀的持久层框架,用于简化JDBC的开发。

持久层(Dao层):数据访问层(数据库相关)

  1. MyBatis本是Apache的一个开源项目iBatis, 2010年这个项目由apache迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。
  2. 官网:https://mybatis.org/mybatis-3/zh/index.html

二、MyBatis入门

1.使用Mybatis查询所有用户数据

  1. 准备工作(创建springboot工程、数据库表user、实体类User);
  2. 引入Mybatis的相关依赖,配置Mybatis:
//在application.properties文件中配置下列信息
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.username=root
spring.datasource.password=1234


  1. 编写SQL语句(注解/XML):
@Mapper
public interface UserMapper {
	@Select("select * from user")
	public List<User> list();
}
  1. 在springboot的测试类中进行测试:
@SpringBootTest //springboot 整合单元测试的注解
class SpringBootMybatisQuickstarApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void testListUser() {

        List<User> userList=userMapper.list();
        userList.stream().forEach(user -> {
            System.out.println(user);
        });
    }
}

2.在上述Java中的@select注解里的的SQL语句配置提示

  1. 选中SQL语句,右键Show Context Actions;
  2. 继续选择lnject language or reference;
  3. 选择mysql(SQL)。

编写SQL语句时对表名没有提示:

  • 产生原因:ldea和数据库没有建立连接,不识别表信息
  • 解决方式:在ldea中配置MySQL数据库连接

三、JDBC介绍

1.介绍

  • JDBC: (Java DataBase Connectivity ),就是使用Java语言操作关系型数据库的一套APl。

2.原始JDBC的连接

	//1.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");

	//2.获取连接
    String url = "jdbc:mysql://localhost:3306/mybatis ";
    String username = "root";
    String password = "1234";
    Connection conn = DriverManager.getConnection(url, username, password);
	
	//3.获取执行SQL的对象Statement,执行SQL
    String sql = "select * from user";
    Statement statement = conn.createStatement();
    ResultSet resultSet = statement.executeQuery(sql);
    List<User> userList = new ArrayList<>();
	while(resultSet.next())
    {
        int id = resultSet.getlnt("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);
		
	//4.释放资源
        statement.close();
        connection.close();

    }

3.存在的问题

  1. 硬编码:用户名,密码等数据库四要素在Java连接程序中都是写死的,若更换则需要修改,重新编译,运行,代码的灵活性不强;
  2. 繁琐:对每个从数据库获取的数据的字段需要进行封装,真实环境中操作的字段会很多,则效率低下;
  3. 资源浪费性能降低:每次JDBC连接数据库,会得到连接,最后释放连接,多次运行会导致性能降低,资源的浪费。

4.解决:在MyBatis中进行JDBC

  1. 配置:将数据库配置的四要素直接写在一个单独的文件中:application.properties,方便操作。
  2. 封装:在MyBatis中没有解析结果,在@Mapper注解的类中,自动将查询的结果封装到集合中,查询封装的每一条对象都会封装成一个User对象,而所有的User对象又会封装到一个List集合中,整个过程自动化进行。
  3. 连接:在程序执行SQL语句之前会初始化一定数量的连接池,spring.datasource连接到数据库连接池中,用完之后有归还到连接池里,做到连接的复用,就不用单行频繁的连接和释放连接所造成的资源的浪费(类似于线程池)。

四、数据库连接池

1.数据库连接池

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

优点:资源重复使用,提升系统响应速度,避免数据库连接遗漏。

2.连接技术

  1. 标准接口:DataSource
  • 官方(sun)提供的数据库连接池接口,由第三方组织实现此接口。
  • 功能:获取连接
Connection getConnection () throws SQLException;
  1. 常见产品
  • Hikari(springboot默认),Druid,C3PO,DBCP
  1. Druid(德鲁伊)
  • Druid连接池是阿里巴巴开源的数据库连接池项目
  • 功能强大,性能优秀,是Java语言最好的数据库连接池之一

3.切换Druid数据库连接池(在官网有详细说明)

  1. 官网:https://github.com/alibaba/druid/tree/master/druid-spring-boot-starter
  2. pom.xml中的依赖:
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid-spring-boot-starter</artifactId>
    <version>1.2.8</version>
</dependency>
  1. application.properties文件中的配制:
spring.datasource.driver-class-name=com.mysqL.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.username=root
spring.dataspurce.password=1234
  1. 配制法二:或者在application.properties文件中的配制:
spring.datasource.druid.driver-class-name=com.mysqL.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/mybatis
spring.datasource.druid.username=root
spring.dataspurce.druid.password=1234

五、lombok

1.Lombok介绍:

  • Lombok是一个实用的Java类库,能通过注解的形式自动生成构造器getter/setterequalshashcodetoString等方法,并可以自动化生成品志变量,简化java开发、提高效率。
注解 作用
@Getter/@Setter 为所有的属性提供get/set方法
@ToString 会给类自动生成易阅读的toString方法
@EqualsAndHashCode 根据类所拥有的非静态字段自动重写equals方法和hashcode方法
@Data 提供了更综合的生成代码功能(@Getter +@Setter +@ToString +@EqualsAndHashCode)
@NoArgsConstructor 为实体类生成无参的构造器方法
@AllArgsConstructor 为实体类生成除了static修饰的字段之外带有各参数的构造器方法。

2.引入lombok依赖

 <!-- lombok依赖 -->
        <dependency> 
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

注意:Lombok会在编译时,自动生成对应的java代码。我们使用lombok时,还需要安装一个lombok的插件(idea只要不是太老版本,自带)。

猜你喜欢

转载自blog.csdn.net/m0_63144319/article/details/131023682