javaWeb开发之java操作数据库
1.JDBC
使用Java语言操作关系型数据库的一套API
本质:
sun公司官方定义的一套操作所有关系型数据库的规范,即接口。
各个数据库厂商去实现这套接口,提供数据库驱动jar包。
我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
2.JDBC入门程序
需求:基于JDBC程序,执行update语句(update user set age = 25 where id = 1)
步骤:
创建一个maven项目,引入依赖;并准备数据库表user。
代码实现:编写JDBC程序,操作数据库
依赖:

JDBC程序:

3.JDBC查询数据
需求:基于JDBC执行如下select语句,将查询结果封装到User对象。
步骤:
先创建实体User类,在main.java.jbdc.pojo中,再在test中创键jbdctest测试类



ResultSet(结果集对象):ResultSet rs = statement.executeQuery()
next():将光标从当前位置向前移动一行,并判断当前行是否为有效行,返回值为boolean
true:有效行,当前行有数据
false:无效行,当前行没有数据
getXxx(…):获取数据,可以根据列的编号获取,也可以根据列名获取(推荐)

JDBC执行DQL语句:
ResultSet rs = statement.executeQuery();
JDBC执行DML语句:
int rowsAffected = statement.executeUpdate();
4.预编译SQL
与静态SQL不同的是,预编译SQL的参数是动态传递的,更安全性能更高

5.Mybatis
mybatis比JDBC更简洁
入门程序:使用Mybatis查询所有用户数据

步骤:
先创建实体类User,再配置Mybatis做数据库链接(在application.properties中),再编写持久层接口(UserMapper),最后再test中编写测试
配置Mybatis(固定的,假设web01是要操作的数据库)



SpringBoot的单元测试类上需要加注解 @SpringBootTest:
@SpringBootTest:会在单元测试运行时,加载springBoot的环境
注意:测试类所在包需要与引导类包名相同(或放在引导类所在包的子包下)
6.数据库连接池
数据库连接池是个容器,负责分配、管理数据库连接(Connection)
它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个

标准接口:DataSource
官方(sun)提供的数据库连接池接口,由第三方组织实现此接口。
功能:获取连接


7.增删改查操作
删除用户:delete
需求:根据id删除用户信息
Mapper接口:


新增用户:insert
需求:添加一个用户


修改用户:update
需求:根据id更新用户消息

查询用户:select
需求:根据用户名和密码查询用户消息

@Param注解的作用是为接口的方法形参起名字的
@Param注解的使用场景:
如果接口方法形参中,需要传递多个参数,需要通过@Param注解为参数起名字;
在基于SpringBoot官方骨架创建的SpringBoot项目中,该注解可以省略
8.XML映射配置
在Mybatis中,既可以通过注解配置SQL语句,也可以通过XML配置文件配置SQL语句
默认规则:
XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
XML映射文件的namespace属性为Mapper接口全限定名一致
XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致

配置XML映射文件的位置:(application.properties中)
mybatis.mapper-locations=classpath:mapper/*.xml

namespace是UserMapper的路径,resultType是放回的结果的存放路径,即user的路径
Id是usermapper查找的方法名
注意:使用xml记得删除usermapper中的select注解
9.SpringBoot配置文件
SpringBoot配置文件application.properties:臃肿 层级结构不清晰
application.yml配置文件:简介,数据为中心

yml配置文件格式:
数值前边必须有空格,作为分隔符
使用缩进表示层级关系,缩进时,不允许使用Tab键,只能用空格(idea中会自动将Tab转换为空格)
缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
#表示注释,从这个字符一直到行尾,都会被解析器忽略
注:
yml配置文件中以0开头的值表示八进制,如果想表示其本身含义,需要用' '引起来
更多推荐

所有评论(0)