SSM项目从零开始到入门
关于SSM项目的详细搭建
首先单独介绍Mybatis,SpringMVC,Spring
然后对上述框架进行整合,并做一个登录注册小功能。
最后对使用整合好的框架做一个完整的客户管理系统。
心歌技术
认知迭代命运
展开
-
SSM项目从零开始到入门044-Spring的JDBC
Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发。Spring主要提供JDBC模板方式、关系数据库对象化方式、SimpleJdbc方式、事务管理来简化JDBC编程Spring提供了3个模板类:1.JdbcTemplate:Spring里最基本的JDBC模板,利用JDBC和简单的索引参数查询提供对数据库的简单访问。2.NamedParameterJdbcTemplate:能够在...原创 2018-03-15 19:34:55 · 561 阅读 · 1 评论 -
SSM项目从零开始到入门043-Spring的AOP
Spring 框架的一个关键组件是AOP(AOP为Aspect Oriented Programming的缩写,意为:面向切面编程)框架。面向方面的编程需要把程序逻辑分解成不同的部分称为所谓的关注点。跨一个应用程序的多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样的常见的很好的方面的例子,如日志记录、审计、声明式事务、安全性和缓存等。 ...原创 2018-03-15 17:36:26 · 387 阅读 · 0 评论 -
SSM项目从零开始到入门042-Spring使用注解来配置依赖注入
从 Spring 2.5 开始就可以使用注解来配置依赖注入。而不是采用 XML 来描述一个 bean 连线,你可以使用相关类,方法或字段声明的注解,将 bean 配置移动到组件类本身。在 XML 注入之前进行注解注入,因此后者的配置将通过两种方式的属性连线被前者重写。注解连线在默认情况下在 Spring 容器中不打开。因此,在可以使用基于注解的连线之前,我们将需要在我们的 Spring 配置文件中...原创 2018-03-15 16:15:20 · 772 阅读 · 0 评论 -
SSM项目从零开始到入门041-Spring的Beans自动装配
通过前面的文章我们学习了如何使用<bean>元素来声明 bean 和通过使用 XML 配置文件中的<constructor-arg>和<property>元素来注入 。 其实Spring 容器可以在不使用<constructor-arg>和<property> 元素的情况下自动装配相互协作的 bean 之间的关系,这有助于减少编...原创 2018-03-15 14:33:15 · 506 阅读 · 0 评论 -
SSM项目从零开始到入门040-Spring的DI依赖注入
前面我们了解到控制反转(Inversion of Control,英文缩写为IoC)包括依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。本节我们就介绍Spring的DI依赖注入 每个基于应用程序的 java 都有几个对象,这些对象一起工作来呈现出终端用户所看到的工作的应用程序。当编写一个复杂的 Java 应用程序时,应用程...原创 2018-03-15 13:52:20 · 561 阅读 · 0 评论 -
SSM项目从零开始到入门039-Spring的IoC 容器
1.什么是IoC ? 控制反转(Inversion of Control,英文缩写为IoC)把创建对象的权利交给框架,是框架的重要特征,并非面向对象编程的专用术语。它包括依赖注入(Dependency Injection,简称DI)和依赖查找(Dependency Lookup)。2.IoC最大的好处是什么?因为把对象生成放在了XML里定义,所以当我们需要换一个实现子类将会变成很简单(一般...原创 2018-03-14 18:11:14 · 500 阅读 · 0 评论 -
SSM项目从零开始到入门038-Spring的HelloWorld实例
本节我们讲解Spring的第一个小实例,首先是关于spring的环境配置1.下载jar包安装从 http://repo.spring.io/release/org/springframework/spring 下载最新版本的 Spring 框架的二进制文件。下载完后需要自己导入jar包。2.使用maven安装只需要添加以下配置<dependency> <groupId&g...原创 2018-03-14 17:54:17 · 1077 阅读 · 0 评论 -
SSM项目从零开始到入门037-Spring的体系结构
体系结构Spring 有可能成为所有企业应用程序的一站式服务点,然而,Spring 是模块化的,允许你挑选和选择适用于你的模块,不必要把剩余部分也引入。下面的部分对在 Spring 框架中所有可用的模块给出了详细的介绍。Spring 框架提供约 20 个模块,可以根据应用程序的要求来使用。核心容器核心容器由核心,Bean,上下文和表达式语言模块组成,它们的细节如下:核心模块提供了框架的基本组成部分...原创 2018-03-14 17:10:03 · 317 阅读 · 0 评论 -
SSM项目从零开始到入门036-mybatis分页插件PageHelper的使用
PageHelper是针对mybatis开发的一款开源插件,可以很方便进行分页查询,且支持大部分主流数据库。引入分页插件引入分页插件有下面2种方式,推荐使用 Maven 方式。1). 引入 Jar 包由于使用了sql 解析工具,需要下载 jsqlparser.jar:http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9...原创 2018-03-14 16:46:26 · 503 阅读 · 0 评论 -
SSM项目从零开始到入门035-mybatis通用mapper的使用
对单表进行增删改查是项目中不可避免的需求,Mybatis的通用Mapper插件使这些操作变得简单,通用Mapper都可以极大的方便开发人员。通用mapper的优点:1.可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。2.极其方便的使用MyBatis单表的增删改查。需要注意的地方:1.支持单表操作,不支持通用的多表联合查询。2.通用 Mapper 支持 Mybatis-3.2...原创 2018-03-14 15:41:04 · 519 阅读 · 0 评论 -
SSM项目从零开始到入门034-mybatis的SQL语句构建器
MyBatis在它的XML映射特性中有一个强大的动态SQL生成方案。但有时在Java代码内部创建SQL语句也是必要的。此时,MyBatis有另外一个特性可以帮到你,在减少典型的加号,引号,新行,格式化问题和嵌入条件来处理多余的逗号或 AND 连接词之前。在Java代码中来动态生成SQL代码就是一场噩梦。例如: String sql = "SELECT P.ID, P.USERNAME, P.PAS...原创 2018-03-14 14:47:45 · 329 阅读 · 0 评论 -
SSM项目从零开始到入门033-mybatis的延时加载
1、什么是延迟加载 延迟加载(lazy load)是(也称为懒加载)是为了避免一些无谓的性能开销而提出来的,所谓延迟加载就是当在真正需要数据的时候,才真正执行数据加载操作。可以简单理解为,只有在使用的时候,才会发出sql语句进行查询。举个例子如果查询订单并且关联查询用户信息。但当我们没有使用订单中的用户信息时,用户信息时没有没加载的,当我们需要订单中的用户信息时才去查询这就是就是延迟加载。延迟...原创 2018-03-14 14:17:05 · 375 阅读 · 0 评论 -
SSM项目从零开始到入门032-mybatis的多对多关联映射
本篇我们讲解mybatis的多对多映射依据上图,我们要实现要查询用户以及用户所购买的商品信息,经过分析用户和商品数据库级别没有任何关系,用户和商品需要建立关系,要通过订单,订单明细建立关系。根据这个需求,可以分析出需要查询的主表为:查询主表:用户表查询关联表:订单表,订单明细表,items商品表。(由于商品和用户没有关系,通过订单和订单明细进行关联)这样的话,sql该如何去写?首先我们把SQL写出...原创 2018-03-14 11:54:02 · 411 阅读 · 0 评论 -
SSM项目从零开始到入门031-mybatis的一对多关联映射
先祭出上篇文章的关系图,上篇我们实现了,查询订单的同时查询订单所属的用户信息。现在有了新的问题,就是查询订单时,不光实现上篇功能,同时还要将订单明细查询出来。这就涉及到了一对多的查询。首先我们写出查询的SQL语句SELECT o.*, u.* , d.*FROM t_order o , t_user u , t_orderdetail dWHERE o.use...原创 2018-03-13 19:06:57 · 412 阅读 · 0 评论 -
SSM项目从零开始到入门030-mybatis的一对一关联映射
通过前面的学习,我们知道可以通过resultMap 完成一些高级映射。如果查询到的列名和映射的pojo的属性名不一致时,通过resultMap设置列名和属性名之间的对应关系(映射关系),可以完成映射。下面我们讲解mybatis高级映射中的一对一关联映射。首先我们定义一个订单商品数据模型它包含如下表结构用户表user: 记录了购买商品的用户信息 订单表:orders ...原创 2018-03-13 16:14:29 · 569 阅读 · 0 评论 -
SSM项目从零开始到入门029-mybatis的前置内容小节
mybatis是什么?mybatis是一人持久层框架,mybatis是一个不完全的ORM框架。sql语句需要程序员自己去编写,但是mybatis也有映射(输入参数映射、输出结果映射)。mybatis入门门槛不高,学习成本低,让程序员把精力放在sql语句上,对sql语句优化非常方便,适用与需求变化较多项目,比如互联网项目。mybatis框架执行过程:1、配置mybatis的配置文件,SqlMapCo...原创 2018-03-13 10:09:07 · 360 阅读 · 0 评论 -
SSM项目从零开始到入门028-mybatis的二级缓存探究
MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能。MyBatis的缓存机制 如上图所示,当开一个会话时,一个SqlSession对象会使用一个Executor对象来完成会话操作,MyBatis的二级缓存机制的关键就是对这个Executor对象做文章。如果用户配置了"cacheEnabled=true",那么MyBatis在为Sql...原创 2018-03-12 17:26:10 · 389 阅读 · 0 评论 -
SSM项目从零开始到入门027-mybatis的一级缓存探究
Mybatis一级缓存的概念 当我们使用Mybatis进行数据库的操作时候,会创建一个SqlSession来进行一次数据库的会话,会话结束则关闭SqlSession对象。那么一个SqlSession的生命周期即对应于Mybatis的一次会话。在Mybatis的一次会话中,我们很有可能多次查询完全相同的sql语句,如果不采取措施的话,每一次查询都查询一次数据库。而一次会话时间一般都是极短的,...原创 2018-03-12 16:37:39 · 333 阅读 · 0 评论 -
SSM项目从零开始到入门026-mybatis的parameterType传入参数类型
在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配置相应的输入参数类型即可。parameterType有基本数据类型和复杂的数据类型配置。1. MyBatis的传入参数parameterType类型分两种 1. 1. 基本数据类型:int,...原创 2018-03-12 13:08:14 · 1559 阅读 · 0 评论 -
SSM项目从零开始到入门025-mybatis的resultMap自定义高级映射规则
通过前面的了解,我们指定查询结果的返回值类型都是通过使用select元素的resultType属性来指定,来让MyBatis自动将查询结果集封装成我们希望的类型进行返回。 resultType属性非常有用,但在返回结果类型比较复杂的情况下却无能为力,为此,MyBatis在select元素中还为我们提供了另外一个resultMap属性,用于引用一个使用<resultMap...原创 2018-03-12 10:00:40 · 618 阅读 · 0 评论 -
SSM项目从零开始到入门024-mybatis的<trim>标签的用法
trim 元素的主要功能是可以在自己包含的内容前加上某些前缀,也可以在其后加上某些后缀,与之对应的属性是 prefix 和 suffix;可以把包含内容的首部某些内容覆盖,即忽略,也可以把尾部的某些内容覆盖,对应的属性是 prefixOverrides 和 suffixOverrides;正因为 trim 有这样的功能,所以我们也可以非常简单的利用 trim 来代替 where 元素的功能。...原创 2018-03-11 11:18:45 · 500 阅读 · 0 评论 -
SSM项目从零开始到入门023-mybatis的<foreach>标签的用法
foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合。foreach元素的属性主要有 item,index,collection,open,separator,close。item表示集合中每一个元素进行迭代时的别名。index指 定一个名字,用于表示在迭代过程中,每次迭代到的位置。open表示该语句以什么开始,separator表示在每次进行迭代之间以什么符号作...原创 2018-03-11 10:07:34 · 804 阅读 · 0 评论 -
SSM项目从零开始到入门022-mybatis的<set>标签的用法
set 标签元素主要是用在更新操作的时候,它的主要功能和 where 标签元素其实是差不多的,主要是在包含的语句前输出一个 set,然后如果包含的语句是以逗号结束的话将会把该逗号忽略,如果 set 包含的内容为空的话则会出错。有了 set 元素就可以动态的更新那些修改了的字段。 当 update 语句中没有使用 if 标签时,如果有一个参数为 null,都会导致错误。 当...原创 2018-03-11 09:30:14 · 560 阅读 · 0 评论 -
SSM项目从零开始到入门021-mybatis的<where>标签的用法
where 元素的作用是会在写入 where 元素的地方输出一个 where,另外一个好处是你不需要考虑 where 元素里面的条件输出是什么样子的,MyBatis 会智能的帮处理,如果所有的条件都不满足那么 MyBatis 就会查出所有的记录,如果输出后是 and 开头的,MyBatis 会把第一个and忽略,当然如果是 or 开头的,MyBatis 也会把它忽略。栗子1:<...原创 2018-03-11 09:26:08 · 560 阅读 · 0 评论 -
SSM项目从零开始到入门020-mybatis的<choose(when, otherwise)>标签的用法
有时候我们并不想应用所有的条件,而只是想从多个选项中选择一个。而使用if标签时,只要test中的表达式为 true,就会执行 if 标签中的条件。MyBatis 提供了 choose 元素。if标签是与(and)的关系,而 choose 是或(or)的关系。 choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 c原创 2018-03-11 08:16:59 · 750 阅读 · 0 评论 -
SSM项目从零开始到入门019-mybatis的<if>标签的用法
Mybatis if 标签可用在许多类型的 SQL 语句中,我们以查询为例。首先看一个很普通的查询:<!-- 查询用户列表,like用户名称 --> <select id="getUserListLikeName" parameterType="User" resultMap="userResultMap"> SELECT * from user u ...原创 2018-03-09 15:16:34 · 480 阅读 · 0 评论 -
SSM项目从零开始到入门018-mybatis的CDATA标签的用法
术语 CDATA 指的是不应由 XML 解析器进行解析的文本数据(Unparsed Character Data)。在 XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。某些文本,比如 JavaScript 代码,包含大量 "<原创 2018-03-09 14:10:19 · 332 阅读 · 0 评论 -
SSM项目从零开始到入门017-mybatis的SQL片段的使用
在开发中,SQL的拼接很常见,有很对拼接的sql具有重复性高的特点,这时最好把重复的sql抽取出来,作为公用的sql片段。定义sql片段(建议:对单表进行sql片段的抽取,方便重用抽取时不包含where):例1:1、创建动态SQL<sql id="sql_count">select count(*)</sql>2、使用<select id="selectListCou...原创 2018-03-09 14:04:21 · 306 阅读 · 0 评论 -
SSM项目从零开始到入门016-mybatis的$与#的使用及区别
动态 SQL 是 mybatis 的强大特性之一,也是它优于其他 ORM 框架的一个重要原因。mybatis 在对 sql 语句进行预编译之前,会对 sql 进行动态解析,解析为一个 BoundSql 对象,也是在此处对动态 SQL 进行处理的。在动态 SQL 解析阶段, #{ } 和 ${ } 会有不同的表现#{ }SQL:select * from user where name =...原创 2018-03-09 12:21:48 · 503 阅读 · 0 评论 -
SSM项目从零开始到入门015-mybatis的delete介绍
deletedelete属性 1. id : 与 Mapper接口对应的方法名称 2. parameterType : 传入的参数格式 3. flushCache : 是否清空缓存,默认为false 4. statementType : PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 Cal...原创 2018-03-08 18:25:35 · 491 阅读 · 2 评论 -
SSM项目从零开始到入门014-mybatis的update介绍
updateupdate元素 1. id : 与 Mapper接口对应的方法名称 2. parameterType : 传入的参数格式 3. flushCache : 是否清空缓存,默认为false 4. statementType : PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 Cal...原创 2018-03-08 18:03:12 · 780 阅读 · 0 评论 -
SSM项目从零开始到入门013-mybatis的insert介绍
insertinsert元素1. parameterType ,入参的全限定类名或类型别名2. keyColumn ,设置数据表自动生成的主键名。对特定数据库(如PostgreSQL),若自动生成的主键不是第一个字段则必须设置3. keyProperty ,默认值unset,用于设置getGeneratedKeys方法或selectKey子元素返回值将赋值到领域模型的哪个属性中4. useGene...原创 2018-03-08 17:01:22 · 663 阅读 · 0 评论 -
SSM项目从零开始到入门012-mybatis的select介绍
常用元素有:id、parameterType、resultType、resultMap,设置缓存用到flushCache、useCacheid:配合Mapper的全限定名,联合成为一个唯一的标识,用户标识这条SQL。 parameterType:表示这条SQL接受的参数类型,可以是MyBatis系统定义或者自定义的别名,比如int、string、float等,也可以是全限定名,比如com...原创 2018-03-08 16:15:34 · 484 阅读 · 0 评论 -
SSM项目从零开始到入门011-详解mybatis的XML 映射配置文件
详解mybatis的XML 映射配置文件MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。文档的顶层结构如下:顺序不可以打乱configuration 配置 properties 属性 settings 设置 typeAliases 类型命名 typeH原创 2017-12-18 19:02:54 · 1490 阅读 · 2 评论 -
SSM项目从零开始到入门010-mybatis提供的动态代理实现过程探究
mybatis提供的动态代理实现过程探究上小节我们简单实现了mybatis的动态代理,本节我们跟进动态代理的实现我们在上图47行的地方打上一个断点,然后debug执行程序点击F5跟进程序上面的sqlsession即我们创建的sqlsession args为参数,点击F5继续跟进execute函数因为我们执行是insert方法原创 2017-12-15 15:26:27 · 588 阅读 · 1 评论 -
SSM项目从零开始到入门009-使用mybatis提供的动态代理
使用mybatis提供的动态代理本节介绍mybatis的动态代理,回顾前面我们的crud操作,整个执行过程大致为首先有个关于实体的dao接口,然后是dao接口接口的实现类,实现类然后在调用sqlsession去完成crud的操作public class UserDaoImpl implements UserDao{ private SqlSession原创 2017-12-15 13:56:54 · 615 阅读 · 1 评论 -
SSM项目从零开始到入门008-mybatis传递多个参数问题
mybatis传递多个参数问题根据用户名和密码查询信息 name pwd第一种方案DAO层方法public User findUserByNameAndPwd(String name,String pwd);对应mapper.xml写法 select * from t_user where n原创 2017-12-01 18:12:01 · 750 阅读 · 0 评论 -
SSM项目从零开始到入门007-使用接口完成增删改查操作
使用接口完成增删改查操作本文将继续前边的例子完成CRUD(增加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)首字母简写)的操作。CRUD主要被用在描述软件系统中数据库或者持久层的基本操作功能。在之前的demo例子mybatis测试类里直接调用mapper文件完了一个查询操作,现在我们使用后接口进行方法的定义、原创 2017-12-01 17:42:58 · 2396 阅读 · 0 评论 -
SSM项目从零开始到入门006-为mybatis项目添加日志支持
为mybatis项目添加日志支持打开mybatis01项目中pom.xml添加如下代码 4.0.0 com.lcx.parent maven-parent 0.0.1-SNAPSHOT com.lcx.mybatis01 mybatis01 1.0.1-SNAPSHOT mys原创 2017-11-28 19:21:00 · 590 阅读 · 0 评论 -
SSM项目从零开始到入门005-创建第一个mybatis项目
创建第一个mybatis项目首先创建maven父集中版本定义工程修改pom.xml文件<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="htt原创 2017-11-27 17:39:54 · 999 阅读 · 4 评论