<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ghf183184的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ghf183184</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ghf183184]]></copyright><item><title><![CDATA[MyBatis传参数]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116796835</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116796835</guid><author>ghf183184</author><pubDate>Fri, 14 May 2021 16:41:14 +0800</pubDate><description><![CDATA[MyBatis传参数
传入参数
从java代码中把数据传入到mapper文件的sql语句中
1）parameterType ：写在mapper文件中的一个属性；表示dao接口中方法的参数的数据类型
​		例如 ：StudentDao接口
​		public Student selectStudentById(Integer id)
2）一个简单类型的参数：
​		简单类型：mybatis把java的基本数据类型和String都叫简单类型
​		在mapper文件获取简单类型的一个参数的值，使用  #{任意字]]></description><category></category></item><item><title><![CDATA[MyBatis的动态代理总结]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116788870</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116788870</guid><author>ghf183184</author><pubDate>Fri, 14 May 2021 13:44:11 +0800</pubDate><description><![CDATA[MyBatis的动态代理
动态代理
mybatis创建了dao接口的实现类，在实现类中调用SqlSession的方法执行sql语句
使用SqlSession.getMapper(dao接口.class)  获取这个dao接口的对象
使用动态代理方式

获取SqlSession对象，SqlSessionFactory.openSession()
使用getMapper方法获取某个接口的对象，sqlSession.getMapper(接口.class)
使用dao接口的方法，调用方法就执行了mapper文件中的]]></description><category></category></item><item><title><![CDATA[MyBatis 主要类介绍]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116788215</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116788215</guid><author>ghf183184</author><pubDate>Fri, 14 May 2021 13:25:52 +0800</pubDate><description><![CDATA[MyBatis 主要类介绍
Resources :
mybatis中的一个类，负责读取主配置文件
InputStream in = Resources.getResourceAsStream("mybatis.xml");

SqlSessionFactoryBuilder
读取全局配置文件，得到数据源信息，创建连接工厂SqlSessionFactory。它的特点是，当创建了SqlSessionFactory对象之后，这个类就不需要了。因此，它的最佳范围是存在于方法体内，也就是局部变量
注意：

是一个类
]]></description><category></category></item><item><title><![CDATA[三层架构]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116756453</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116756453</guid><author>ghf183184</author><pubDate>Thu, 13 May 2021 16:49:55 +0800</pubDate><description><![CDATA[三层架构
mvc : web开发中，使用mvc架构模式。m : 数据，v: 视图，c: 控制器
​			c控制器：接受请求，调用service对象，显示请求的处理结果。当前使用Servlet作为控制器
​			v视图：现在使用jsp,html,css,js。显示请求的处理结果，把m中数据显示出来
​			m数据：来自数据库MySQL，来自文件，来自网络
mvc作用：
		1.  实现解耦合
		2.  让mvc各负其职
		3.  使系统扩展更好、更容易维护

三层架构

界面层(视图层)：接收用户的请求，]]></description><category></category></item><item><title><![CDATA[Tomcat 简单了解]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116705330</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116705330</guid><author>ghf183184</author><pubDate>Wed, 12 May 2021 13:49:42 +0800</pubDate><description><![CDATA[Tomcat
概念
Tomcat服务器是一个开源的轻量级Web应用服务器，在中小型系统和并发量小的场合下普遍使用，是开发和调试Servlet、JSP程序的首选
原理

Tomcat主要组件：服务器Server，服务Service，连接器Connector、容器Container
连接器Connector和容器Container是Tomcat的核心
一个Container容器和一个或多个Connector组合在一起，加上其他一些支持的组件共同组成一个Service服务，有了Service服务便可以对外提供能力]]></description><category></category></item><item><title><![CDATA[Maven 介绍]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116704967</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116704967</guid><author>ghf183184</author><pubDate>Wed, 12 May 2021 13:45:00 +0800</pubDate><description><![CDATA[Maven介绍
maven概念模型
Maven是Apache下的一个开源项目，它是一个创新的项目管理工具，它用于对Java项目进行项目构建、依赖管理及项目信息管理
Maven包含了一个项目对象模型(Project Object Model),一组标准集合，一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System)，和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑
项目对象模型（Project Ob]]></description><category></category></item><item><title><![CDATA[JDBC 悲观锁和乐观锁]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116661641</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116661641</guid><author>ghf183184</author><pubDate>Tue, 11 May 2021 16:59:06 +0800</pubDate><description><![CDATA[并发控制
当程序中可能出现并发操作的情况时，就需要保证在并发操作的情况下数据的准确性，以此确保当前用户和其他用户一起操作时，所得到的结果和某个用户单独操作时的结果是一样的。这种手段就叫做并发控制。并发控制的目的是
保证一个用户的操作不会对另一个用户的操作结果产生不合理的影响。
如果没有做好并发控制，就可能导致数据脏读、幻读和不可重复读等问题。
并发控制，一般都和数据库管理系统(DBMS)有关。在 DBMS 中的并发控制的任务，是为了确保在多个事务同时存取数据库中的同一数据时，不破坏事务的隔离性、一致性和数据]]></description><category></category></item><item><title><![CDATA[JDBC 事务机制]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116658559</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116658559</guid><author>ghf183184</author><pubDate>Tue, 11 May 2021 15:58:21 +0800</pubDate><description><![CDATA[/*
JDBC事务机制
	1.JDBC中的事务是自动提交的
		自动提交——只要执行任意一条DML语句，则自动提交一次。这是JDBC默认的事务行动
		在实际的业务当中，通常都是N条DML语句共同联合才能完成的，必须保证他们这些DML语句在同一个事务中同时成功会同时失败
	2.设置为自动提交的重点三行代码
		conn.setAutoCommit(false);
		conn.commit();
		conn.rollback();
*/
public class JDBCTest02{
    publi]]></description><category></category></item><item><title><![CDATA[JDBC PreparedStatement简单操作]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116658046</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116658046</guid><author>ghf183184</author><pubDate>Tue, 11 May 2021 15:48:25 +0800</pubDate><description><![CDATA[public class JDBCTest02{
    public static void main(String[] args){
        Connection conn = null;
        PreparedStatement ps = null;//使用PreparedStatement(预编译的数据库操作对象)
        ResultSet rs = null;
        try{
            //1.注册驱动
            Class.for]]></description><category></category></item><item><title><![CDATA[JDBC登录实践和SQL注入解决方法]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116650857</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116650857</guid><author>ghf183184</author><pubDate>Tue, 11 May 2021 13:25:29 +0800</pubDate><description><![CDATA[登录实践操作
/*
1.会出现SQL注入操作
2.测试结果
	用户名:fff
	密码:fff' or '1'='1
	登录成功
*/
public class JDBCTest01{
    public static void main(String[] args){
        //初始化一个界面
        Map&lt;String,String&gt; userLoginInfo = initUI();
        //验证用户名和密码
        boolean loginSuc]]></description><category></category></item><item><title><![CDATA[JDBC 的简单操作(增删改查)]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116593745</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116593745</guid><author>ghf183184</author><pubDate>Mon, 10 May 2021 16:02:39 +0800</pubDate><description><![CDATA[JDBC的操作步骤
1.加载数据库驱动
2.通过DriverManager获得连接
3.通过Connection创建Statement对象
4.使用Statement执行SQL语句
5.操作结果集
6.关闭资源
JDBC 的简单操作(增删改查)
增加
在标准SQL语句中insert语句是插入语句，通过Statement接口的executeUpdate()方法可执行插入操作
insert语句的语法格式为 ：
​      INSERT INTO 表名[(字段名1,字段名2…)] VALUES(属性值1,属性值]]></description><category></category></item><item><title><![CDATA[JDBC 使用]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116592950</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116592950</guid><author>ghf183184</author><pubDate>Mon, 10 May 2021 13:18:22 +0800</pubDate><description><![CDATA[JDBC 使用
JDBC 简介
JDBC(Java DataBase Connectivity)是Java与数据库的接口规范，由Java 语言编写的类和接口组成，大致分为两类：针对Java程序员的JDBC API和针对数据库开发商的低层的JDBC driver API。而JDBC驱动程序由实施了这些接口的类组成
java数据库连接，即使用java代码发送sql语句的技术，为多种关系型数据库提供统一访问
JDBC 架构
分为双层架构和三层架构
双层 ：

作用 ：此架构中，java Applet 或应用直接访]]></description><category></category></item><item><title><![CDATA[MySQL锁机制]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116450113</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116450113</guid><author>ghf183184</author><pubDate>Thu, 06 May 2021 11:27:07 +0800</pubDate><description><![CDATA[MySQL锁机制
为了保证数据并发访问时的一致性和有效性，任何一个数据库都存在锁机制。锁机制的优劣直接影响到数据库的并发处理能力和系统性能，所以锁机制也就成为了各种数据库的核心技术之一。
锁机制是为了解决数据库的并发控制问题而产生的。如在同一时刻，客户端对同一个表做更新或查询操作，为了保证数据的一致性，必须对并发操作进行控制。同时，锁机制也为实现 MySQL 的各个隔离级别提供了保证。
可以将锁机制理解为使各种资源在被并发访问时变得有序所设计的一种规则。
如何保证数据并发访问的一致性、有效性是所有数据库必须]]></description><category></category></item><item><title><![CDATA[mysql事务]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116449424</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116449424</guid><author>ghf183184</author><pubDate>Thu, 06 May 2021 11:24:35 +0800</pubDate><description><![CDATA[MySQL事务
事务的作用
事务可以将一系列的数据操作捆绑成一个整体进行统一管理，如果某一事务执行成功，则在该事务中进行的所有数据更改均会提交，成为数据库中的永久组成部分。如果事务执行时遇到错误，则就必须取消或回滚。取消或回滚后，数据将全部恢复到操作前的状态，所有数据的更改均被清除
MySQL 通过事务保证了数据的一致性
事务的概念和特点
数据库的事务（Transaction）是一种机制、一个操作序列，包含了一组数据库操作命令。事务把所有的命令作为一个整体一起向系统提交或撤销操作请求，即这一组数据库命令要么]]></description><category></category></item><item><title><![CDATA[触发器]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116196882</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116196882</guid><author>ghf183184</author><pubDate>Tue, 27 Apr 2021 14:56:31 +0800</pubDate><description><![CDATA[触发器
概念
MySQL 的触发器和存储过程一样，都是嵌入到 MySQL 中的一段程序，是 MySQL 中管理数据的有力工具。不同的是执行存储过程要使用 CALL 语句来调用，而触发器的执行不需要使用 CALL 语句来调用，也不需要手工启动，而是通过对数据表的相关操作来触发、激活从而实现执行。比如当对 student 表进行操作（INSERT，DELETE 或 UPDATE）时就会激活它执行。
触发器与数据表关系密切，主要用于保护表中的数据。特别是当有多个表具有一定的相互联系的时候，触发器能够让不同的表保持]]></description><category></category></item><item><title><![CDATA[MySQL存储过程]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116159552</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116159552</guid><author>ghf183184</author><pubDate>Mon, 26 Apr 2021 16:52:30 +0800</pubDate><description><![CDATA[存储过程
存储过程
存储过程是一组为了完成特定功能的 SQL 语句集合。使用存储过程的目的是将常用或复杂的工作预先用 SQL 语句写好并用一个指定名称存储起来，这个过程经编译和优化后存储在数据库服务器中，因此称为存储过程。当以后需要数据库提供与已定义好的存储过程的功能相同的服务时，只需调用“CALL存储过程名字”即可自动完成。
常用操作数据库的 SQL 语句在执行的时候需要先编译，然后执行。存储过程则采用另一种方式来执行 SQL 语句。
一个存储过程是一个可编程的函数，它在数据库中创建并保存，一般由 SQL]]></description><category></category></item><item><title><![CDATA[MySQL索引]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116148008</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116148008</guid><author>ghf183184</author><pubDate>Mon, 26 Apr 2021 15:29:47 +0800</pubDate><description><![CDATA[MySQL索引
索引概念
索引是一种特殊的数据库结构，由数据表中的一列或多列组合而成，可以用来快速查询数据表中有某一特定值的记录。
通过索引，查询数据时不用读完记录的所有信息，而只是查询索引列。否则，数据库系统将读取每条记录的所有信息进行匹配。
可以把索引比作新华字典的音序表。例如，要查“库”字，如果不使用音序，就需要从字典的 400 页中逐页来找。但是，如果提取拼音出来，构成音序表，就只需要从 10 多页的音序表中直接查找。这样就可以大大节省时间。
因此，使用索引可以很大程度上提高数据库的查询速度，还有效]]></description><category></category></item><item><title><![CDATA[MySQL视图]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116142931</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116142931</guid><author>ghf183184</author><pubDate>Mon, 26 Apr 2021 09:37:35 +0800</pubDate><description><![CDATA[视图
视图概念
视图在数据库中的作用类似于窗户，用户可以通过这个窗口看到只对自己有用的数据。既保障了数据的安全性，又大大提高了查询效率
MySQL 视图（View）是一种虚拟存在的表，同真实表一样，视图也由列和行构成，但视图并不实际存在于数据库中。行和列的数据来自于定义视图的查询中所使用的表，并且还是在使用视图时动态生成的
数据库中只存放了视图的定义，并没有存放视图中的数据，这些数据都存放在定义视图查询所引用的真实表中。使用视图查询数据时，数据库会从真实表中取出对应的数据。因此，视图中的数据是依赖于真实表中]]></description><category></category></item><item><title><![CDATA[MySQL 数据表查询语句]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116132417</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116132417</guid><author>ghf183184</author><pubDate>Sun, 25 Apr 2021 17:08:25 +0800</pubDate><description><![CDATA[MySQL 数据表查询语句
在 MySQL 中，使用 SELECT 语句来查询数据。查询数据是指从数据库中根据需求，使用不同的查询方式来获取不同的数据，是使用频率最高、最重要的操作。
SELECT 的语法格式如下：
SELECT
{* | &lt;字段列名&gt;}
[
FROM &lt;表 1&gt;, &lt;表 2&gt;…
[WHERE &lt;表达式&gt;
[GROUP BY &lt;group by definition&gt;
[HAVING &lt;expression&gt; [{&lt]]></description><category></category></item><item><title><![CDATA[MySQL运算符]]></title><link>https://blog.youkuaiyun.com/ghf183184/article/details/116116479</link><guid>https://blog.youkuaiyun.com/ghf183184/article/details/116116479</guid><author>ghf183184</author><pubDate>Sun, 25 Apr 2021 09:39:31 +0800</pubDate><description><![CDATA[MySQL常用运算符概述
在 MySQL 中，可以通过运算符来获取表结构以外的另一种数据。

例如，学生表中存在一个 birth 字段，这个字段表示学生的出生年份。如果想得到这个学生的实际年龄，可以使用 MySQL 中的算术运算符用当前的年份减学生出生的年份，求出的结果就是这个学生的实际年龄了。

MySQL 所提供的运算符可以直接对表中数据或字段进行运算，进而实现用户的新需求，增强了 MySQL 的功能。
每种数据库都支持 SQL 语句，但是它们也都有各自支持的运算符。我们除了需要学会使用 SQL 语句外]]></description><category></category></item></channel></rss>