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}


相关推荐
德育处主任34 分钟前
p5.js 掌握圆锥体 cone
前端·数据可视化·canvas
mazhenxiao36 分钟前
qiankunjs 微前端框架笔记
前端
无羡仙43 分钟前
事件流与事件委托:用冒泡机制优化前端性能
前端·javascript
秃头小傻蛋43 分钟前
Vue 项目中条件加载组件导致 CSS 样式丢失问题解决方案
前端·vue.js
CodeTransfer43 分钟前
今天给大家搬运的是利用发布-订阅模式对代码进行解耦
前端·javascript
阿邱吖1 小时前
form.item接管受控组件
前端
韩劳模1 小时前
基于vue-pdf实现PDF多页预览
前端
鹏多多1 小时前
js中eval的用法风险与替代方案全面解析
前端·javascript
KGDragon1 小时前
还在为 SVG 烦恼?我写了个 CLI 工具,一键打包,性能拉满!(已开源)
前端·svg
LovelyAqaurius1 小时前
JavaScript中的ArrayBuffer详解
前端