6、JavaWeb-Mybatis

本文介绍了Mybatis作为持久层框架的使用,包括快速入门步骤,配置SQL提示,与JDBC的对比,数据库连接池(如Druid)的应用,以及Lombok工具包如何简化实体类。内容涵盖了从基础配置到实践技巧的全面讲解。
摘要由CSDN通过智能技术生成

P116 Mybatis-入门

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

持久层就是三层控制中的Dao层,数据访问层/持久层,

P117 Mybatis-入门-快速入门程序

步骤:

  • 创建springboot工程,数据表和实体类

  • 引入mybatis依赖,配置Mybatis,数据库连接信息,在properites中编写

  • 编写sql语句,基于注解或者基于xml方式

要引入Mybatis Framework和mysql driver

mybatis操作数据库就是在java中编写sql,

按照mybatis规范需要定义一个持久接口mapper,加上注解@Mapper,表明是mybatis的持久接口,

在mybatis中只需要定义mapper接口就可以了,不需要定义实现类,因为程序在运行时框架底层就自动定义了实现类,

依赖解释:

<!--        mysql驱动包-->
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

建立表格和数据,如图:

在这里插入图片描述

属性与字段是一一对应的。

配置数据库的连接信息可以如下:

#四要素

#驱动类名称
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#数据库连接的url
spring.datasource.url=jdbc://localhost::3306/javawebstudy-mybatis
#连接数据库的用户
spring.datasource.username=root
#连接数据库的密码
spring.datasource.password=12345

SQL语句使用注解的方式实现,放在mapper包中,例如:

@Mapper  // 框架运行时会自动生成该接口的实现类对象(代理对象)
// 并且将该对象交给IOC容器管理
public interface UserMapper {
//    查询全部用户信息
    // 多条信息封装到集合当中
    // 加上注解,表名是SQL查询
    @Select("select * from user")
    public List<User> list();
}

单元测试的方法应该在test目录中进行,其中@SpringBootTest注解就是springboot整合单元测试的注解,有这个注解单元测试方法在运行的就会自动加载整个环境,创建IOC容器,再通过依赖注入获取到需要的bean对象,

进行单元测试,输出效果如下所示:

在这里插入图片描述

P118 Mybatis-入门-配置SQL提示

默认mybatis中编写SQL语句是不识别的,可以如下配置:
在这里插入图片描述

不提示表名,是因为idea和数据库没有建立连接,不识别表信息,应在idea中配置mysql数据库连接。

P119 Mybatis-入门-JDBC

mybais简化JDBC的使用

JDBC:java database connectivity,使用java操作关系型数据库的一套API

JDBC仅仅是借口,具体的实现依据数据库的不同而不同,各个厂商提供的实现就是驱动,提供数据库驱动jar包。

在这里插入图片描述

使用的是JDBC的接口,真正执行的代码是驱动Jar包中的实现类。

在原始JDBC中,连接数据库信息是写死在java代码中,硬代码,一旦发生变动,代码需要重新更改后打包编译运行,解析封装字段也很繁琐,频繁获取连接,资源浪费

在mybatis中解决方法为:

  • 直接操作properties配置文件

  • Mybatis自动将查询结果进行封装

  • 通过spring.datasource,spring底层会自动采用数据库连接池技术统一管理好分配这些连接,因此执行sql语句的时候,每次从连接池中获取连接就可以了,然后执行sql语句,执行完毕后再将连接归还给连接池,起到复用,类似线程池

P120 Mybatis-数据库连接池

数据库连接池类似线程池,也是一个容器,存储的是数据库的一个个连接对象connection,即负责分配、管理数据库连接connection.

允许应用程序重复使用一个现有的数据库连接,而不是重新再建立一个。

会释放空闲时间超过最大空闲时间的连接,来避免因为没有释放连接而引起的数据库连接遗漏。

优势:

  • 资源重用

  • 提升系统响应速度

  • 避免数据库连接遗漏

实现的标准接口:DataSource

要想获取一个连接,可以使用getConnection()

常见的数据连接池:

  • C3P0

  • DBCP

  • Druid,常用

    • Durid连接池是阿里巴巴开源的数据库连接池项目

    • 功能强大,性能优秀,是java语言最好的数据库连接池之一

  • Hikari,springboot中默认自带

在项目中使用Druid,例如:

  • 先引入相关的起步依赖,假设是springboot2x版本则是下面的
<!--        引入Druid依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.2.8</version>
        </dependency>

假设是springboot3x版本则是下面的,

<!--        引入Druid依赖-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-3-starter</artifactId>
            <version>1.2.20</version>
        </dependency>

进行单元测试则成功切换到Druid数据池,

在这里插入图片描述

  • 配置数据库连接信息

P121 Mybatis-lombok工具包介绍

使用lombok解决实体类创建的臃肿现象,使用一些注解解决了问题,就不需要再去声明一系列get、set等方法。

lombok是一个实用的java类库,通过注解的形式自动生成构造器、getter/setter、equals、hashcode、tostring等方法,可以自动化生成日志变量,简化java开发,提高效率。

在这里插入图片描述

引入依赖:

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

然后实体类可以是:

@Data
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Integer gender;
    private String phone;
}

以后就可以使用lombok的注解简化实体类的定义

  • 33
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java EE 项目的目录结构可以根据具体的需求进行灵活设计,但一般情况下,推荐使用以下的标准目录结构: ``` project ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ ├── controller │ │ │ ├── dao │ │ │ ├── entity │ │ │ ├── service │ │ │ └── util │ │ ├── resources │ │ │ ├── mapper │ │ │ └── db.properties │ │ └── webapp │ │ ├── WEB-INF │ │ │ ├── classes │ │ │ ├── lib │ │ │ └── web.xml │ │ ├── css │ │ ├── js │ │ ├── images │ │ └── index.jsp │ └── test │ ├── java │ └── resources ├── target ├── pom.xml └── README.md ``` 其中,各个目录的作用如下: - `src/main/java`:存放项目的 Java 源代码,按照包名分层,一般包括 `controller`、`dao`、`entity`、`service` 和 `util` 等包; - `src/main/resources`:存放项目的配置文件和资源文件,一般包括数据库连接配置文件 `db.properties`、MyBatis 的 mapper 文件等; - `src/main/webapp`:存放 Web 应用的 Web 资源,包括 JSP 页面、CSS 样式表、JavaScript 脚本等; - `src/test/java`:存放项目的测试代码; - `src/test/resources`:存放测试代码所需要的资源文件; - `target`:存放编译后的 .class 文件、打包后的 .war 文件等; - `pom.xml`:Maven 项目管理工具的配置文件; - `README.md`:项目说明文件。 以上是一种常见的 Java EE 项目目录结构,但并不是唯一的标准。在实际开发中,可以根据项目的具体需求进行合理的调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值