Web开发-JavaEE应用&ORM框架&SQL预编译&JDBC&MyBatis&Hibernate&Maven

知识点:

0、安全开发-JavaEE-构建工具-Maven

1、安全开发-JavaEE-ORM框架-JDBC

2、安全开发-JavaEE-ORM框架-Mybatis

3、安全开发-JavaEE-ORM框架-Hibernate

4、安全开发-JavaEE-ORM框架-SQL注入&预编译

一、演示案例-WEB开发-JavaEE-构建工具-Maven

IDEA配置maven(用来安装依赖,类似于pythonpip)

参考:https://blog.csdn.net/cxy2002cxy/article/details/144809310






二、演示案例-WEB开发-JavaEE-ORM框架-JDBC(javaEE原生)

参考:https://www.jianshu.com/p/ed1a59750127

1、引用依赖(pom.xml)

java连接mysql数据库
https://mvnrepository.com/







2、注册数据库驱动

bash 复制代码
Class.forName("com.mysql.jdbc.Driver");



3、建立数据库连接

bash 复制代码
String url ="jdbc:mysql://localhost:3306/phpstudy";
Connection connection=DriverManager.getConnection(url,"root","123456");






4、创建Statement执行SQL

bash 复制代码
Statement statement= connection.createStatement();
ResultSet resultSet = statement.executeQuery(sql);


5、结果ResultSet进行提取

bash 复制代码
while (resultSet.next()){
    int id = resultSet.getInt("id");
    String page_title = resultSet.getString("page_title");
    .......
}



安全注入例子:

安全写法(预编译):PreparedStatement

bash 复制代码
安全写法(预编译): "select * from admin where id=?"
//固定执行语句,无论在这个执行语句加什么内容都不会改变执行语句本身


不安全写法(拼接)

bash 复制代码
 "select * from admin where id="+id


三、演示案例-WEB开发-JavaEE-ORM框架-Hibernate

AI帮写一个案例


1、引用依赖(pom.xml)

https://mvnrepository.com/

bash 复制代码
hibernate-core,mysql-connector-java


2、Hibernate配置文件(操作数据库)

bash 复制代码
src/main/resources/hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- 数据库连接配置 -->
        <property name="hibernate.connection.driver_class">com.mysql.cj.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/phpstudy?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">123456</property>
 
        <!-- 数据库方言 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL8Dialect</property>
 
        <!-- 显示 SQL 语句 -->
        <property name="hibernate.show_sql">true</property>
 
        <!-- 自动更新数据库表结构 -->
        <property name="hibernate.hbm2ddl.auto">update</property>
 
        <!-- 映射实体类 -->
        <mapping class="com.example.entity.User"/>
    </session-factory>
</hibernate-configuration>

3、映射实体类开发

用来存储获取数据:

bash 复制代码
src/main/java/com/example/entityUser.java

4、Hibernate工具类

用来Hibernate使用:

bash 复制代码
src/main/java/com/example/util/HibernateUtil.java

5、Servlet开发接受(sql执行代码在这)

bash 复制代码
src/main/java/com/example/servlet/UserQueryServlet.java

安全注入例子:

安全写法

bash 复制代码
String hql = "FROM User WHERE username=:username";


不安全写法

bash 复制代码
String hql = "FROM User WHERE username='"+username+"'";



四、演示案例-WEB开发-JavaEE-ORM框架-MyBatis



1、引用依赖(pom.xml)

bash 复制代码
mybatis,mysql-connector-java


2、MyBatis配置文件(数据库账号密码)

bash 复制代码
src/main/resources/mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/phpstudy?serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="AdminMapper.xml"/>
    </mappers>
</configuration>

3、AdminMapper.xml创建(执行sql语句)

bash 复制代码
src/main/resources/AdminMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.jdbcdemo43.mapper.AdminMapper">
    <select id="selectAdminById" resultType="com.example.jdbcdemo43.model.Admin">
SELECT * FROM admin WHERE id = #{id}
    </select>
</mapper>

4、创建数据实体类(存储数据)

bash 复制代码
com/example/mybatisdemo43/model/Admin.java

5、创建mapper实体类(触发事件)

bash 复制代码
com/example/mybatisdemo43/mapper/AdminMapper.java

6、创建servlet接受类(接收请求值,并响应结果)

bash 复制代码
com/example/mybatisdemo43/servlet/SelectServlet.java

安全注入例子

安全写法

bash 复制代码
select * from admin where id = #{id}


不安全写法

bash 复制代码
select * from admin where id = ${id}


相关推荐
Deepsleep.20 分钟前
融山科技前端面经
前端·科技·状态模式
浪裡遊25 分钟前
前端热门面试题day1
前端·javascript·vue.js·前端框架
Moment28 分钟前
表单验证太复杂?用 Zod 让它变得简单又安全
前端·javascript·typescript
codingandsleeping29 分钟前
Git 子模块 (Submodule) 使用介绍
前端·git
云端看世界29 分钟前
ECMAScript 引用记录
前端·javascript
前端涂涂35 分钟前
nodejs导入文件模块和导入文件夹
前端
云端看世界37 分钟前
ECMAScript script加载和全局顶层代码申明实例化
前端·javascript
陈随易38 分钟前
pnpm v10防恶意软件立大功,Bun一个PR最高7万奖金
前端·后端·程序员
云端看世界39 分钟前
ECMAScript 环境记录
前端·javascript
云端看世界44 分钟前
ECMAScript 执行上下文概念和基本操作
前端·javascript·ecmascript 6