当前位置: 首页 > news >正文

上海模板网站微信小程序开发常见问题

上海模板网站,微信小程序开发常见问题,网站层次,青岛网页制作服务目录 一、JDBC规范【了解】 1. JDBC介绍 2. JDBC示例 3. JDBC的问题 二、MyBatis入门【重点】 1. Mybatis是什么 2. Mybatis使用步骤 3. Mybatis入门案例 1.创建SpringBoot工程 2.创建Mapper 3.功能测试 三、连接池【了解】 1. 什么是连接池 2. 有哪些数据库连接池…

目录

一、JDBC规范【了解】

1. JDBC介绍

2. JDBC示例

3. JDBC的问题

二、MyBatis入门【重点】

1. Mybatis是什么

2. Mybatis使用步骤

3. Mybatis入门案例

1.创建SpringBoot工程

2.创建Mapper

3.功能测试

三、连接池【了解】

1. 什么是连接池

2. 有哪些数据库连接池

3. 如何在项目里使用Druid连接池

四、Lombok【重点】

1. Lombok介绍

2. Lombok用法

3. 使用示例


一、JDBC规范【了解】

1. JDBC介绍

Java DataBase Connectivity,是Java连接数据库,是Sun公司提供的的API规范,用于执行SQL语句。是一切Java操作数据库的基础技术。

Java里的“规范”,通常指的是接口

JDBC的作用:实现Java程序对不同数据库的统一访问

数据库驱动:由数据库厂商提供的,实现了JDBC接口规范的一些API实现类,这些类打成jar包,我们称为驱动包

  • 操作什么数据库,就要有什么驱动包

  • 如果要操作MySQL,就必须有MySQL驱动包:我们有maven坐标

<dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version>
</dependency>

2. JDBC示例

准备数据库表

create database if not exists db3;
use db3;    
create table user(id int unsigned primary key auto_increment comment 'ID',name varchar(100) comment '姓名',age tinyint unsigned comment '年龄',gender tinyint unsigned comment '性别, 1:男, 2:女',phone varchar(11) comment '手机号'
) comment '用户表';insert into user(id, name, age, gender, phone) VALUES (null,'白眉鹰王',55,'1','18800000000');
insert into user(id, name, age, gender, phone) VALUES (null,'金毛狮王',45,'1','18800000001');
insert into user(id, name, age, gender, phone) VALUES (null,'青翼蝠王',38,'1','18800000002');
insert into user(id, name, age, gender, phone) VALUES (null,'紫衫龙王',42,'2','18800000003');
insert into user(id, name, age, gender, phone) VALUES (null,'光明左使',37,'1','18800000004');
insert into user(id, name, age, gender, phone) VALUES (null,'光明右使',48,'1','18800000005');

准备实体类

public class User {private Integer id;private String name;private Integer age;private Integer gender;private String phone;//get 和 set方法,略//toString方法,略
}

JDBC示例

package com.itheima;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;public class DemoJdbc {public static void main(String[] args) throws Exception {//1. 注册驱动Class.forName("com.mysql.cj.jdbc.Driver");//2. 获取连接Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");//3. 创建SQL执行平台PreparedStatement pstmt = conn.prepareStatement("select * from user");//4. 执行SQLResultSet resultSet = pstmt.executeQuery();//5. 处理结果List<User> userList = new ArrayList<>();while (resultSet.next()) {User user = new User();int id = resultSet.getInt("id");user.setId(id);String name = resultSet.getString("name");user.setName(name);int age = resultSet.getInt("age");user.setAge(age);int gender = resultSet.getInt("gender");user.setGender(gender);String phone = resultSet.getString("phone");user.setPhone(phone);userList.add(user);}//6. 释放资源resultSet.close();pstmt.close();conn.close();userList.forEach(System.out::println);}
}

3. JDBC的问题

  • 硬编码问题:数据库连接信息等等参数,都在Java源码里写死了。如果将来部署到生产环境后,需要调整配置,就不得不修改源码

    Mybatis整合SpringBoot,把所有参数写到了配置文件,可以很方便的修改,而不用修改源码

  • 操作太繁琐:执行一条SQL语句,要写十几行甚至几十行代码

    Mybatis对JDBC做了再封装,执行一条SQL只需要很少的代码就能实现

  • 性能不够强:每次操作数据库,Java程序都会与数据库建立连接、创建Connection对象;操作完成要释放关闭掉。在数据库操作高峰期,会有频繁的对象创建与销毁,非常消耗性能

    Mybatis使用了连接池技术解决这个问题

二、MyBatis入门【重点】

1. Mybatis是什么

MySQL是持久层Dao层的框架,它用于简化JDBC的操作。

拓展:目前持久层的框架,常见的有:

  • Mybatis:目前国内最流行的Dao层框架

  • Hibernate:国内使用的少了,国外使用的很多。国内的一些老项目,可能使用的是Hibernate

  • SpringData JPA:对持久层的技术再封装,比如对Hibernate再封装,提供了更简便的操作

2. Mybatis使用步骤

  1. 准备数据库和表:前边JDBC里已经准备过了,略

  2. 准备一个maven工程:

    创建一个SpringBoot工程,添加依赖、配置文件、引导类

  3. 使用Mybatis操作数据库

    准备实体类:一张表通常要准备一个类。类的属性和表的字段要对应

    修改配置文件:准备数据库的连接信息,包括驱动类名、地址、帐号、密码

    编写一个接口,接口里写一个方法,方法上配置SQL语句

    调用这个接口的方法,就可以了

3. Mybatis入门案例

1.创建SpringBoot工程

如果要创建空的maven工程,改造成SpringBoot工程,只需要三件事:

  • 依赖:SpringBoot父工程坐标和起步依赖

<!-- SpringBoot父工程坐标 --><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.3</version></parent><dependencies><!--mybatis的起步依赖--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency><!-- mysql驱动包, 刚刚发布的最新版本的驱动包--><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency><!--springboot单元测试--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>
  • 配置:创建一个名称为application.properties的文件,放到src\main\resources目录里

  • 引导类:创建一个引导类,固定写法

@SpringbootApplication
public class 引导类名{public static void main(String[] args){SpringApplication.run(引导类.class, args);}
}

准备配置文件

修改application.properties文件,添加如下配置:

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db3
spring.datasource.username=root
spring.datasource.password=root

准备实体类

前边JDBC部分已经创建了User类,直接复制过来使用即可

2.创建Mapper

package com.itheima.mapper;import com.itheima.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;import java.util.List;/*** 1. Mapper接口,名称通常是XxxMapper,比如UserMapper、DeptMapper* 2. Mapper接口,上边加@Mapper注解,目的是让SpringBoot扫描这个注解,生成它的对象放到IoC容器里。类似于@Controller、@Service*/
@Mapper
public interface UserMapper {/*** 查询所有用户,得到List<user>*/@Select("select * from user")List<User> queryAll();
}

3.功能测试

注意:

  • 单元测试类上需要加@SpringBootTest,然后才可以在测试类里使用@Autowired注入

package com.itheima;import com.itheima.mapper.UserMapper;
import com.itheima.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTest
public class MybatisTest {@Autowiredprivate UserMapper userMapper;@Testpublic void testQueryAll(){List<User> userList = userMapper.queryAll();userList.forEach(System.out::println);}
}

三、连接池【了解】

1. 什么是连接池

池化思想,用于提供有限数量的资源对象,重复利用,可以减少频繁创建对象与销毁对象的开销。

  • 创建池子:在池子里初始化一堆对象,备用

  • 使用的时候:如果需要使用,就从池子里取出一个进行使用;使用完成,再把对象交还到池子里

  • 例如:线程池,数据库连接池

数据库连接池:

  • 只需要池子里准备少量的Connection连接对象,就可以支持海量的数据库操作。因为这些对象是可以循环使用的

  • 避免频繁创建Connection与数据库建立连接所造成的资源开销,从而大大提升性能

2. 有哪些数据库连接池

  • DBCP:比较早的连接池,早期Tomcat内置的有这种连接池

  • C3P0:使用相对广泛的连接池

  • Druid:德鲁伊,Alibaba提供的连接池技术,它以丰富的功能著称,除了连接池的基本功能,还具备数据库的监控能力

  • HikariCP:以性能著称的连接池,SpringBoot官方内置了HikariCP连接池,默认使用的

所有连接都有相同的使用规范:

  • 所有连接池类都必须实现javax.sql.DataSource接口

  • 从任意连接池里获取连接的方法,都是getConnection()

3. 如何在项目里使用Druid连接池

1.添加druid的起步依赖

<dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.2.8</version>
</dependency>

2.配置一下,指定使用Druid连接池:只要修改application.properties文件

#没有指定使用哪种连接池,默认使用的是HikariCP
#spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_homework
#spring.datasource.username=root
#spring.datasource.password=root
#如果想指定使用Druid连接池
spring.datasource.druid.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.druid.url=jdbc:mysql://localhost:3306/mybatis_homework
spring.datasource.druid.username=root
spring.datasource.druid.password=root

四、Lombok【重点】

1. Lombok介绍

Lombok是一个插件,目前已经被idea内置进去了。

用于在代码编译过程中,帮我们生成一些代码。从而让我们的代码更简洁

2. Lombok用法

  1. 添加lombok的依赖坐标

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId>
</dependency>

2.使用Lombok简化代码:通过注解实现的

  • @Data:加在实体类上,Lombok会帮我们给实体类生成无参构造、所有成员变量的get和set方法、toString、equals、hashCode等等方法

  • @NoArgsConstructor:加在实体类上,Lombok会帮我们生成无参构造

  • @AllArgsConstructor:加在实体类上,Lombok会帮我们生成全参构造

  • @Getter:生成get方法的。可以加在类上,也可以加在某个成员变量上

  • @Setter:生成set方法的。可以加在类上,也可以加在某个成员变量上

3. 使用示例

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Emp {private Integer id;private String username;private String password;private String name;private Integer gender;private String image;private Integer job;
}

http://www.yayakq.cn/news/597191/

相关文章:

  • 网站建设优化兼职app开发用到的技术
  • 手机端网站关键字排名做网站如何适应分辨率
  • 网站服务器共享的 vps微商城平台排行榜前十名
  • 做网站需要美工吗全屋定制设计培训学校哪里有
  • 兰州网站外包菜鸟教程网站开发
  • 福建建设银行招聘网站最全的wordpress 中文手册
  • 电龙网站建设两个wordpress互通
  • 做网站要钱吗?四川城乡建设网站首页
  • 南京市网站建设公司建湖做网站的公司
  • 地情网站建设方案wordpress 父页面跳转
  • 网站开发 质量管理wordpress icp
  • 360做网站吗wordpress event
  • 江北区城乡建设部网站首页单位网站及政务新媒体建设管理
  • 怎么做自己的网站自建一个页面网站开发入那个科目
  • 黑龙江网站设计便宜的网站建设
  • 域名注册之后如何建设网站长春一般做一个网站需要多少钱
  • 安阳哪里做360网站做心理咨询可以在哪些网站发贴
  • 北京网站优化公司获取更多付费流量
  • 安徽教育云网站建设wordpress快应用
  • 媒体网站推广方法关于网站建设的实训报告
  • 网站备案幕布拍照是什么做外贸网站需要什么卡
  • 宁波网站建设股份公司网站里的搜索怎么做的
  • 网站开发用户注册招聘网站建设的意义
  • 建站程序排名整站优化工具
  • 企业网站建设的报价网站flash引导页
  • 协会类网站免费模板综合性门户网站有哪些
  • 提供服务的网站wordpress 播放优酷
  • 网站改版 域名wordpress改站点地址
  • 什么网站可以做产品入驻成都网站建设与开发
  • 教你如何建网站关于网站建设的工作计划