javaweb

一.Javaweb的简介

javaweb即用Java语言来开发网站

网页--javaweb程序--数据库

二.JDBC(Java数据库连接)

JDBC就是使用Java语言操作关系型数据库的一套API。

MySQL驱动就是MySQL的实现类。

1.入门

(1)注册驱动

(2)获取连接

(3)定义SQL语句

(4)获取执行对象

(5)执行SQL语句

(6)处理结果

(7)释放资源

2.JDBC API

(1)Driver Manager(驱动管理类)

i.注册驱动

ii.获取连接 getConnection(url,user,password)

url:连接路径

语法:jdbc:mysql://ip地址:端口号(3306)/数据库名

(2)connection(数据库连接对象)接口

作用:i.获取执行SQL语句的对象

ii.管理事务: 开始:Setutocommit(boolean);

提交:commit();

回滚:rollback();(在try-catch中)

(3)Statement(对象)

executeUpdate(sql)执行DDL,DML

executeQuery(sql)执行DQL,返回值:resultset结果集对象

(4)resultset结果集对象

boolean next();将游标下移一行并判断

getxxx(参数)参数可以是列的编号或名称,xxx为数据类型,Int/String

(5)preparedStatement接口(防止sql注入)

作用:预编译Sql语句并执行。

useserverPrestmts=true开启预编译功能

mysql服务器-》检查sql语法-》编译-》执行sql

三.数据库连接池

好处:资源复用,提高速度,避免数据库连接遗漏。

负责分配,管理数据库连接。

常见的有:Durid,DBCP,C3P0

四.Maven

专门管理和构建Java项目的工具。

仓库:本地仓库,远程仓库,中央仓库

1.Maven的基本使用

命令:

compile 编译

test 测试

package 打包

install 安装

clean 清理

eg.mvn compile

2.Maven的生命周期

分为3套:clean,default,site(产生报告,发生站点)

同一个生命周期中,执行后边的命令,前面的所有命令都会自动执行。

3.Idea配置Maven

Maven坐标是资源的唯一标识。

坐标的组成:groupId:定义当前Maven项目隶属组织的名称(域名反写)

artifaltId:Maven项目的名称(模块名称)

version:定义当前的版本号

如何显示Maven侧面按钮。

4.依赖管理

(1)使用坐标导入jar包

<dependencies>标签

<dependency>

<groupId>

<artifactId>

<version>

<scope>

(2)自动导入

(3)快捷方式

ALT+insert

(4)依赖范围

scope默认compile

可以设置对应jar包的作用范围:编译环境,测试环境,运行环境

五.Mybatis

1.简介

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

javaEE的三层框架:持久层,表现层,业务层

持久层:将数据保存到数据库的那一层代码。

2.JDBC的缺点

(1)硬编码问题:注册驱动,SQL语句

(2)操作繁琐:手动设置参数,手动封装结果集

3.Mybatis的快速入门

ALT+鼠标左键==整列编辑

(1)创建表,导入数据

(2)创建模块,导入坐标

(3)编写Mybatis配置文件

(4)编写SQL映射文件

(5)定义类,加载配置文件,获取sqlsessionFactory对象,获取SQL session对象

执行SQL,释放资源

4.解决SQL映射文件的警告提示

IDEA不认识数据库中的表,应该让其与数据库联系。

5.Mapper代理开发

在执行sql时,有硬代码问题。需要固定的(例如:"test.selectAll)

方法:获取接口代理对象,执行sql

创dirtory时,名字起法:(例如:com/.../...类似于Java中的com.... ....一致)

方式:1.创建一个接口与sql的映射文件名一致,且置于同一个目录下

2.在接口中创建方法,返回值类型与参数类型一致,id为方法名

3.在测试类中,获取sqlsession对象

sqlsession.getMapper(userMapper.class)

4.获取Mapper代理对象

userMapper.selectAll();

environment:配置数据库连接环境信息

可以配置多个环境,用default属性切换不同信息。

注意配置标签时,要注意顺序。

Mybatis完成操作需要三步:编写接口方法-》编写sql-》执行方法

6.配置文件进行增删改

查看所有:(1)数据库字段的名称与实体类的不同(不可自动封装数据):1.起别名2.sql片段,使用sql标签

3.resultMap:id:完成主键字段的映射/ result:完成一般字段的映射=》column:表的列名

property:实体类的属性名

先定义<resultMap>标签,在<select>标签中,将resultType替换成resultMap

查看详情:就是根据id查询,mybatis参数占位符:#{}==》将会被替换成?为了防止sql注入

eg.<select id="..." resultMap="...">

select * from 表名 where id=(=可能会是>/<)#{id(与接口方法中的局部变量名称一样)};

</select>

如果是>/<,则需要进行特殊字符的处理。

1.转义字符:<==》&lt;

2.CDATA区:<![CDATA[ < ]]>

条件查询:参数接收:1.散装参数:如果方法中有多个参数,用Param("参数占位符")

2.对象参数(接收参数,处理参数eg.companyname="%"+companyname+"%"表示companyname前后字符任意,封装对象)

3.Map集合参数

动态条件查询:动态sql即sql语句会随着用户的输入或外部条件的而变化

(1)多条件:在select标签中添加if标签,if:条件判断 test:写条件表达式

如果遇到问题是条件1不成立,后面会有语法错误(即多了一个and)。

方案1:恒等式,where1=1 and...

方案2:用where关键字,<where>.....</where>

(2)单条件查询

从多个条件中选择一个

choose(when==>相当于case,otherwise==》default)

添加:<insert>

1.需要手动提交事务:sqlsession.commit();

2.可以设置自动提交事务:在获取sqlsession对象时,session sql=sqlsessionFactory.opensession(true);

复制代码
<insert id="add" useGeneratedKeys="true" keyProperty="id">
    insert into user(name,age,sex)values(#{Name},#{Age},#{Sex})
</insert>

id的值会被获取出来

修改:①修改全部字段

编写Mapper接口,返回类型void

编写SQL映射文件,执行方法

②修改动态字段

删除:

①删除一个:

②批量删除:

需要接收id数组

collection属性表示表要遍历的数组

Mybatis会将数组参数,封装成一个Map集合

六、Mybatis参数传递

提供了ParamNameResolver类,进行参数封装。

1.Mybatis接口方法中可以接受各种各样的参数

①单个参数:

pojo类型(eg.brand),collection,Map,list,Array,其他类型

②多个参数:

需要加注解:==》替换Map集合中的arg键名,可读性更高。

封装成Map集合,可不加注解,

一个参数对应两个键(arg0,param1)/(arg1,param2)

③单个注解:

1.pojo类:直接使用,属性名与参数占位符名称一致即可。

2.Map类型:直接使用,键名与参数占位符一致即可。

3.Collection:封装成Map集合

7.注解完成增删改查

直接写入接口类中。

使用注解开发会比配置文件开发更为方便,不需要在xml文件里添加SQL语句。

查询:@Select

添加:@Insert

修改:@Update

删除:@Delete

注解完成简单功能,配置文件完成复杂功能。

相关推荐
Chen-Edward34 分钟前
有了Spring为什么还有要Spring Boot?
java·spring boot·spring
陈小桔1 小时前
idea中重新加载所有maven项目失败,但maven compile成功
java·maven
小学鸡!1 小时前
Spring Boot实现日志链路追踪
java·spring boot·后端
xiaogg36782 小时前
阿里云k8s1.33部署yaml和dockerfile配置文件
java·linux·kubernetes
逆光的July2 小时前
Hikari连接池
java
微风粼粼2 小时前
eclipse 导入javaweb项目,以及配置教程(傻瓜式教学)
java·ide·eclipse
番茄Salad2 小时前
Spring Boot临时解决循环依赖注入问题
java·spring boot·spring cloud
天若有情6732 小时前
Spring MVC文件上传与下载全面详解:从原理到实战
java·spring·mvc·springmvc·javaee·multipart
祈祷苍天赐我java之术2 小时前
Redis 数据类型与使用场景
java·开发语言·前端·redis·分布式·spring·bootstrap
Olrookie3 小时前
若依前后端分离版学习笔记(二十)——实现滑块验证码(vue3)
java·前端·笔记·后端·学习·vue·ruoyi