- 博客(49)
- 收藏
- 关注
原创 GOF23种设计模式之建造者模式
建造者模式 场景: 我们要建造一个复杂的产品。比如:神州飞船,Iphone。这个复杂的产品的创建。有这样一个问题需要处理: 装配这些子组件是不是有个步骤问题? 实际开发中,我们所需要的对象构建时,也非常复杂,有很多步骤需要处理时。 建造模式的本质: 分离了对象子组件的单独构造(由Builder来负责)和装配(由Director负责)。 从而可以构 造出复杂的对象。这个模式适用于:某个对象的构建过...
2019-09-09 22:22:23
327
原创 GOF23种设计模式之抽象工厂模式
抽象工厂模式 用来生产不同产品族的全部产品。(对于增加新的产品,无能为力; 支持增加产品族) 抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务 分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。 示例代码: 高低端发动机: package com.xyj.factory.abstractFactory; /** * 发动机接口 */ public interface...
2019-09-07 18:45:06
382
原创 GOF23种设计模式之工厂模式
工厂模式 工厂模式: 实现了创建者和调用者的分离。 详细分类: 简单工厂模式 工厂方法模式 抽象工厂模式 面向对象设计的基本原则: 单一职责原则 :应该有且只有一个原因引起类的变化 里氏替换原则 :只要父类能出现的地方,其子类就应该能出现。也就是用子类替换父类后,保证程序照样运行 DIP 依赖倒转原则 DependenceInversionPrinciple:要针对接口编程,不要针对实现编程...
2019-09-03 21:21:50
404
原创 各个Json技术比较
各个json技术的比较 (1) json-lib。 json-lib 最早也是应用广泛的JSON解析工具,但是它的缺点就是依赖很多的第三方包,如commons-beanutils.jar, commons-collections-3.2.jar, commons-lang-2.6-jar,commons-logging-1.1.1.jar, ezmorph-1.0.6.jar。 并且对于复杂类型...
2019-09-03 15:35:34
376
转载 Http中200、302、304、404和500等响应状态码所表示的意义?
版权声明:本文为CSDN博主「xianjie0318」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/xianjie0318/article/details/76541407 1开头的http状态码 表示临时响应并需要请求者继续执行操作的状态代码。 100 (继续) 请求者应当继续提出请求。 服务器返...
2019-09-03 15:16:24
1430
原创 SSM整合
这次先简单整合一下,仅展示部分代码: 1、jar包 2、映射文件 <?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"> <...
2019-09-02 22:12:17
296
原创 Spring MVC传递json格式的数据
测试使用Spring MVC传递json格式的数据 第一种方式:使用fastjson jar包 这里仅展示Servlet和jsp页面(jsp页面使用ajax) <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLI...
2019-09-02 21:51:11
418
原创 Spring MVC参数传递
测试Spring MVC中控制器向视图层传递数据 仅展示控制器 package com.xyj.handler; import java.util.ArrayList; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springfram...
2019-09-02 21:33:56
312
原创 Spring MVC体系结构
MVC设计模式 数据访问接口: DAO层。 处理业务逻辑: Service层。 数据实体: POJO。 负费前端请求的接受并处理: Servlet 负责前端页面展示:JSP 这种架构模式就是MVC模式,它是软件工程中的一种软件架构模式。它强制性地使软件系统的输入、处理和输出分开,把软件系统分为三个基本部分:模型(Model)、视图(View)、控制器(Controller)。 (1)视图(View...
2019-09-02 21:09:22
637
原创 MyBatis与Spring的整合
作为Bean容器,Spring框架提供了IoC机制,可以接管所有组件的创建工作并进行依赖管理,因而整合的主要工作就是把MyBatis框架使用中涉及的核心组件配置带Spring容器中,交给Spring来创建和管理。 具体来说:业务逻辑对象依赖基于MyBatis技术实现的DAO对象,核心是获取SqlSession实例。要获得SqlSession实例,则需要依赖SqlSessionFactory实例。而...
2019-09-01 21:26:33
294
原创 Spring 使用注解定义Bean
Spring中的特殊注解: @Component : 用于标注实体类 @Repository :用于标注DAO类 @Service : 用于标注业务类 @Controller : 用于标注控制器类 举例如下:(和数据库打交道的全部省略,只实现了业务逻辑) 1、导入相关jar包(除了那5个核心jar包外,使用注解需要导入aop包) 2、编写配置文件(使用注解需要在配置文件中开启扫描注解) <...
2019-09-01 19:07:04
646
原创 Spring依赖注入的几种方式
控制反转(Inversion of Control, loC)也称为依赖注入 (Dependency Injection DI) 依赖注入的几种方式 1、设值注入 1、导入Spring的几个核心jar包并Build Path 2、创建实体类如下: package com.xyj.entity; import java.util.Arrays; import java.util.List; i...
2019-09-01 15:46:45
1084
原创 Spring 初识
Spring体系结构 Spring 的“绿草丛” Spring是一个轻量级框架,它大大简化了Java 企业级开发,提供了强大、稳定的功能,又没有带来额外的负担,让人们在使用它做每件事情的时候都有得体和优雅的感觉。Spring 有两个主要目标:一是让现有技术更易于使用, 二是促进良好的编程习惯(或者称为最佳实践)。 Spring是一个全面的解决方案,但它坚持一个原则: 不重新发明轮子。已经有较好解...
2019-08-23 17:35:52
230
原创 MyBatis动态SQL
动态 SQL MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大...
2019-08-22 22:19:20
354
原创 GOF23种设计模式之单例模式
GoF: 《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述《设计模式》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为"四人组(Gang of Four)"。 常用的...
2019-08-22 22:15:42
380
原创 MyBatis之RowBounds实现分页查询
使用RowBounds实现分页查询很简单。 MyBatis的分页是基于内存的分页,即查出来所有记录,再按起始位置和页面容量取出结果。 Sql映射: <!-- RowBounds实现分页 --> <select id="selectByPage" resultType="Emp"> select * from emp </select> 对应的Dao层...
2019-08-18 22:01:27
1228
3
原创 MyBatis实现多表查询方式三(注解的方式)
在没有映射文件的情况下,如何实现查询呢。 在上次的代码上(MyBatis实现多表查询方式二)删掉3个映射文件,然后修改配置文件中加载映射文件为加载Dao接口: <mappers> <mapper class="com.xyj.dao.GenderDao"/> <mapper class="com.xyj.dao.GradeDao"/> <ma...
2019-08-17 15:00:25
409
原创 MyBatis实现多表查询方式二
上次我们的SQL映射全部写在了一个文件中,不利于复用和维护,接下来对上次的代码做出修改。 修改映射文件未多个,分开来写: gender表的映射 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.o...
2019-08-17 14:51:58
264
原创 MyBatis实现多表查询方式一
实现多表查询与之前的几乎一样,只是实体类和映射文件里稍有变化 有数据表student , grade 与 gender grade表如下: gender表如下: student表如下:(ggid与gender表的gid建立关联,gid与grade表的gid建立关联) 分别有对应的实体类: Grade类: package com.xyj.entity; import lombok.AllAr...
2019-08-17 14:35:23
236
原创 MyBatis缓存
正如大多数持久化框架一样,MyBatis提供了一级缓存和二级缓存。 1.一级缓存 一级缓存是基于 PerpetualCache (MyBatis自带)的HashMap本地缓存,作用范围为session域内,当session flush或者close之后,该session中所有的cache就会被清空。 2.二级缓存 二级缓存就是global caching,它超出session范围之外,可以被所有S...
2019-08-16 16:55:09
170
原创 resultMap标签中里的collection标签
collection元素的作用和association元素的作用差不多一样,事实上,它们非常类似,也是映射到JavaBean的某个“复杂类型” 属性,只不过这个属性是一个集合列表,即JavaBean内部嵌套一个复杂数据类型(集合)。和使用association元素一样,我们使用嵌套查询, 或者从连接中嵌套结果集。 下面通过一个示例来演示coeltien 的具体应用,示例需求获取指定用户的相关的信息...
2019-08-16 15:47:16
10249
原创 resultMap标签中里的association标签
association:映射到JavaBean的某个“复杂类型”属性,比如JavaBean类,即JavaBean,即JavaBean内部嵌套一个复杂数据类型(JavaBean)属性,这种情况就属于复杂类型的关联。但是需要注意:association仅处理一对一的关联关系。 下面通过一个示例来演示association具体的应用,示例需求:查询学生表的全部数据信息。 首先修改Student,增加G...
2019-08-15 21:35:06
13568
原创 MyBatis——使用@Param注解实现多参数入参
数据库有emp表如下: 假如我想要实现根据eid修改ename的操作。对于此需求,也是修改操作,但是可以明确方法的传入参数只有2个:职员id和新名字。若按照以前的封装成Emp对象的方式进行传参,并不是很合适,可以用更灵活的方式处理:直接进行多参数入参即可,代码可读性高,可以清晰的看到这个方法所需的参数是什么。 当方法参数有多个时,每个参数前都需要增加@Param注解: public int up...
2019-08-15 20:49:13
4206
原创 MyBatis映射文件里的resultMap标签
我们在哪里使用resultMap? resultMap是做什么的 resultMap是对外部resultMap定义的引用,对应外部resultMap的id,表示返回结果映射到哪一个resultMap上。它的应用场景一般是:数据库字段信息与对象属性不一致或者需要做复杂的联合查询以便自由控制映射结果。 最开始我们用的是resultType,它和resultType有什么关联和区别呢 result...
2019-08-15 20:14:47
815
原创 MyBatis实现多条件模糊查询
使用MyBatis实现数据库表的单条件查询和多条件查询 前提: 有数据表emp如下: 配置文件、实体类、工具类与之前相仿,不再展示。 使用MyBatis实现单条件查询 首先在映射文件中编写SQL语句映射如下: <!-- 根据职员名模糊查询职员列表 --> <select id="findByName" resultType="emp"> select * fro...
2019-08-13 16:07:09
2069
原创 MyBatis基本要素——核心对象及其生命周期
MyBatis的三个基本要素: ·核心接口和类 ·MyBatis核心配置文件(mybatis-config.xml) ·SQL映射文件(mapper.xml) MyBatis的核心接口和类 每个MyBatis的应用程序都以SqlSessionFactory对象的实例为核心。 首先获取SqlSessionFactoryBuilder对象,可以根据XML配置文件或Configuration类的...
2019-08-13 14:24:43
558
原创 MyBatis框架的优缺点及其适用场合
回顾DAO层代码,以查询学生表记录数为例,直接使用JDBC和MyBatis查询的两种实现方式的代码如图所示: Class.forName("com.mysql.jdbc.Driver"); Connection connection=DriverManager.getConnection(url, user, password); String sql="select count(*)...
2019-08-13 11:32:25
1198
原创 MyBatis配置文件之数据源的配置方式
MyBatis配置文件中数据源的几种配置方式 第一种方式 第一种方式就是直接写mybatis-config配置文件中的dataSource标签下的property标签中,如: <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <prop...
2019-08-09 20:32:26
2232
1
原创 MyBatis配置之实体类起别名
为什么要给实体类起别名? 首先看一下之前的映射文件 <?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"> <!-- mapp...
2019-08-08 19:06:20
3385
原创 MyBatis基础——实体类属性名与数据库表列名不一致时怎么查询数据
假如我们使用Dao+映射文件的方式操作数据表时,实体类的属性名与数据库列名不一致时我们该怎么查询数据。 实体类的属性名与数据库列名不一致时查询全部数据: 执行结果为: 我们发现只有money一个属性有值,其余属性均为默认值 这种情况下,如果想要查询数据,则需要修改映射文件 第一步,在映射文件下面加入resultMap标签: <!-- 实体类属性与数据库的列的对应关系 --> &l...
2019-08-08 18:34:43
2677
原创 MyBatis基础——Dao+注解实现基本的增删改查
只利用Dao层实现基本的增删改查操作 在上次的基础之上,映射文件就没有用啦,可以删掉,只需要修改Dao接口和配置文件即可。 Dao层 package com.xyj.dao; import java.util.List; import org.apache.ibatis.annotations.Delete; import org.apache.ibatis.annotations.Inser...
2019-08-08 18:03:12
1009
原创 MyBatis基础——Dao+映射文件实现基本的增删改查
使用Dao层+映射文件的方式实现增删改查,映射文件就相当于是Dao层的实现类。 MyBatis配置文件 只需要在上次的操作上稍作修改即可。 这次我们使用Log4j日志输出,在配置文件设置setting节点节点,修改后如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//myb...
2019-08-08 17:39:23
476
原创 MyBatis基础——映射文件的方式实现基本的增删改查
使用Mybatis配置文件+映射文件的方式实现基本的增删改查 一、下载和部署jar包 首先要使用MyBatis框架,肯定要先下载相关jar包才能使用。 所需jar包: 当然lombok这个jar包可以不使用。 二、编写MyBatis核心配置文件 MyBatis核心配置文件主要用于配置数据库连接和MyBatis运行时所需的各种特性,包含了设置和影响MyBatis行为的属性。 创建mybatis-...
2019-08-08 16:33:34
501
原创 框架和MyBatis介绍
了解MyBatis及其他一些概念 一、框架的概念 框架(framework)是一个提供了可重用的公共结构的半成品。它为我们构建新的应用程序提供了最大的便利。一方面提供了拿来就用的工具,更重要的是,提供了可重用的设计。 框架技术是一个应用程序的半成品,提供了可重用的公共结构,按一定规则组织的一组组件。 框架的意义:减少重复劳动 便于团队合作 增强安全性 二、数据持久化概念 数据持久化是将内存...
2019-08-08 16:01:45
255
原创 通用DAO和DAO的实现类
通用Dao和DaoImpl的实现需要借助于前两篇博客中的c3p0连接池,JDBCTools,commons-dbutils。 需要的jar包分别是 c3p0-0.9.5.2 、 commons-dbutils-1.6 、mchange-commons-java-0.2.11 、mysql-connector-java-5.1.10-bin 首先有Emp实体类和两个工具类,工具类代码如下: p...
2019-08-05 22:27:35
826
原创 commons-dbutils的使用
学习commons-dbutils的使用 什么是commons-dbutils Commons DbUtils是Apache组织提供的一个对JDBC进行简单封装的开源工具类库,使用它能够简化JDBC应用程序的开发,同时也不会影响程序的性能。 commons-dbutils的使用 首先存在简单的实体类如下: package com.xyj.entity; import lombok.AllArgs...
2019-08-05 21:44:22
456
原创 c3p0数据库连接池的配置 以及 简单的JDBCUtils的实现
c3p0数据库连接池的配置以及简单的工具类的实现 首先了解一下什么是C3P0 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。 C3P0是数据库连接池,我们为什么要用数据库连接池呢? 对于一个简单的数据库应用,由于对于数据库的访问不是很频繁。这时可以简单地在需要访问数据库时,就...
2019-08-05 21:23:31
922
原创 Java NIO学习
这篇博客主要记录 Java NIO简介 、 Java NIO与IO的主要区别 , 缓冲区(Buffer)和通道(Channel) 、 文件通道(FileChannel) 、 NIO的非阻塞式网络通信 等。 一、Java NIO简介 Java NIO(New IO / Non-Block IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的Java IO API。NIO与...
2019-08-04 21:16:19
274
转载 IT界三大定律
IT(Information Technologies)行业是一条完整的产业链条,包含了许许多多的环节。作为发展速度最快的一个行业,其发展是遵循着一定的发展规律的。而我们只有掌握和了解了这些规律才能理解IT...
2019-07-30 19:12:25
802
原创 了解线程上下文类加载器、服务器类加载器、OSGI原理
了解线程上下文类加载器、服务器类加载器、OSGI原理 线程上下文类加载器 双亲委托机制以及默认类加载器的问题 一般情况下, 保证同一个类中所关联的其他类都是由当前类的类加载器所加载的.。比如,ClassA本身在Ext下找到,那么他里面new出来的一些类也就只能用Ext去查找了(不会低一个级别),所以有些明明App可以找到的,却找不到了。 JDBC API,他有实现的driven部分(my...
2019-07-27 19:11:03
292
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅