空泛工厂方式将现实产品的创办延迟到现实工厂的子类中,人的终身一世有多长

前言

那篇博客重要介绍23种设计形式的适用范围以及他们的利弊,类图尽量使用了实例的类图来取代,没有找到的类图就用了设计形式本身的协会图。

人的一世有多少长度?2.5秒又有多少长度?近期的钻研发现,人的毕生但是是短短的2.5秒种。那是因为人真正能感受到的年月惟有及时的2.5秒。

此第一遍接触Mybatis框架确实是有点不适应,更加是刚从Hibernate框架转转型过来,那么为啥要选用Mybatis框架,Mybatis框架和Hibernate框架又有啥样异同呢?

创制型格局

一个人即使可以活到100岁(甚至越来越多),也只是是岁月经过中的极其短暂的一念之差。人的降生比较地球的落地,也但是是眨眼间间;地球的出世相比太阳系的出世,亦可是是瞬间;而太阳系的诞生相比较于宇宙的出生更是一下子。

这几个题材在自己的另一篇blogs中有特其余授课,明日自家重点是带着我们来探索一下怎样不难的拔取Mybatis这一个框架

抽象工厂格局

提供一个创办产品的接口来负责创造连锁或倚靠的靶子,而不具体明确指定具体类

图片 1

优点:

空洞工厂格局将切实产品的开创延迟到具体工厂的子类中,那样将对象的创设封装起来,能够收缩客户端与实际产品类之间的信赖,从而使系统耦合度低,那样更便于前期的维护和扩大。

缺点:

抽象工厂情势很难支撑新类型产品的成形。那是因为虚无工厂接口中已经确定了足以被创建的成品会聚,倘若急需添加新产品,此时就非得去修改抽象工厂的接口,那样就事关到虚幻工厂类的以及有着子类的更动,那样也就违背了“开发——封闭”原则。

适用场景:

①一个连串不应有着重于产品类实例怎样被创立、组合和表达的细节。

②体系中有多于一个的产品族,而每便只利用其中某一产品族。

③属于同一个产品族的制品将在一起行使,这一约束必须在系统的筹划中反映出来。

④产品等级结构稳定性,设计成就之后,不会向系统中追加新的成品等级结构照旧去除已有的产品等级结构。

那就是说究竟怎样才能固定呢?我不清楚。至少我们人类不可以稳定,不问可知。而——“自由”,作为人类创建的词汇,当然是均等不可以稳定。借使你硬要问,那么形而上的“自由”呢?答案是:或许能够稳定。但是人类或者永远也无能为力真正地感受永恒本身。

兴许部分朋友知道,Mybatis中是因此配备文件来落到实处那几个的,那其间有这一个的东西,大家就一点一点的讲啊

建造者方式

将一个复杂对象的营造与它的意味分离,使得同一的打造进度可以创设不一致的表示。建造者情势的真面目是使组装进程(用指挥者类举办打包,从而达成解耦的目标)和创制具体产品解耦,使大家不用去关切每个组件是怎么样组装的。

图片 2

建造者情势的完结:

①在建造者格局中,指挥者是直接与客户端打交道的,指挥者将客户端创制产品的伸手划分为对一一部件的建筑请求,再将那个请求委派到具体建造者角色,具体建造者角色是形成具体产品的创设工作的,却不为客户所领会。

②建造者格局首要用以“分步骤来创设一个长短不一的对象”,其中“分步骤”是一个定位的重组进度,而复杂对象的次第部分是隔三差五转移的(也就是说电脑的里边零件是日常转移的,那里指的的变化如硬盘的高低变了,CPU由单核变双核等)。

③产品不要求抽象类,由于建筑格局的始建出来的最后产品可能差异很大,所以不大可能提炼出一个浮泛产品类。

④在前边文章中牵线的画饼充饥工厂情势解决了“种类产品”的需要变化,而建造者形式解决的是
“产品部分” 的内需转变。

⑤是因为建造者隐藏了实际产品的组建进程,所以要转移一个出品的中间表示,只须求再落实一个切实的建造者就足以了,从而能很好地应对产品结合组件的须要转变。

而当我要研究“确实”(即我们能感知到)的妄动时,我发现大家也无从有限支撑持续的随机的状态。因为擅自那些词属于感情的词,它与我们感知喜、怒、哀、乐一样,都是一种感觉。而深感即是须臾时的,它无法持续很久。我又发现,当我谈谈自由时——在很大程度上——即是谈论“幸福”,因为当我们备感到甜蜜的一眨眼间,多半会同时觉获得任意。所以在那几个意思上说,自由就是甜美。

咱俩想要配置成功,主要的就是jar包,先从官网下载相应的jar包作为程序的支撑

工厂方法情势

概念一个用来创造对象的接口,让子类决定将哪一个类实例化。工厂方法方式让一个类的实例化延迟到其子类。工厂方法方式又简称为工厂形式(Factory
Pattern),又可称作虚拟构造器情势(VirtualConstructor
Pattern)或多态工厂方式(Polymorphic FactoryPattern)。

图片 3

工厂方法方式之所以得以化解不难工厂的方式,是因为它的落到实处把实际产品的始建推迟到子类中,此时工厂类不再负责所有产品的创建,而只是给出具体工厂必须兑现的接口,那样工厂方法格局就可以允许系统不修改工厂类逻辑的情状下来添加新产品,那样也就克制了简便工厂方式中症结。如若系统要求添加新产品时,大家可以使用多态性来落成系统的扩充,对于肤浅工厂类和切实工厂中的代码都不需求做此外改变。

甜美与人身自由,都是心绪词汇,或者说是感觉词汇。当我们感知到它们,即是感知着老大时刻,然则那么些时刻并不会频频很久。那么,我们是不是可以获取不断的擅自(或幸福)呢?答案是:能也无法。那取决于你看标题标角度。

 图片 4

原型形式

用原型实例指定创造对象的品类,并且经过拷贝这个原型创造新的对象。

图片 5

优点:

①原型方式向客户隐藏了成立新实例的错综复杂

②原型格局允许动态增加或较少产品类。

③原型方式简化了实例的创始布局,工厂方法情势必要有一个与产品类等级结构同样的级差结构,而原型格局不要求如此。

④出品类不须求事先确定产品的阶段结构,因为原型形式适用于其他的等级结构

缺点:

①每个类必须安插一个仿制方法

②配置克隆方法须求对类的功能进行通盘考虑,那对于全新的类不是很难,但对此已有的类不必然很不难,越发当一个类引用不援救串行化的直接对象,或者引用含有循环结构的时候。

当答案是毫无疑问的时候,那是因为当大家不住的去感知自由的时候,自由的觉得便能源源下去。我们不停的感知自由,就会持续的“得到(感觉)”自由。

有了jar包之后我么就来探视大家先后的主要的搭建

单例方式

有限支撑某一个类唯有一个实例,而且自行实例化并向一切种类提供那一个实例,那么些类称为单例类,它提供全局访问的主意。

图片 6

优点:

①单例形式抱有自然的紧缩性,类自己来决定实例化进程,类就在变更实例化进度上有相应的紧缩性。

②是因为在系统内存中只设有一个对象,因而可以节省系统资源,当需要反复创制和销毁的目的时单例方式无疑可以增强系统的性质。

③幸免对共享资源的连串占用。

缺点:

①不适用于变化的靶子,倘诺相同档次的对象总是要在差其他用例场景暴发变化,单例就会挑起数据的失实,不可以保留相互的意况。

②是因为单利格局中一贯不抽象层,由此单例类的恢弘有很大的困顿。

③单例类的天职过重,在自然水准上违反了“单一任务规范”。

适用场景:

单例格局只同意成立一个目的,因而节省里存,加速对象访问速度,由此对象急需被公用的场面适合采用,如多个模块使用同一个数据源连接对象等等。

当答案是还是不是认的时候,那多半是因为您没有感知(感觉)自由的能力,抑或是没有持续去感知(感觉)它的力量。那么您多半是无力回天获取不断的轻易的。

图片 7

结构型方式

之所以,大家要怎么着获取连发的随机

具体类的内容如下

适配器方式

将一个接口转换成客户愿意的另一个接口,使接口不合营的那多少个类能够共同坐班,其别名为包装器(Wrapper)。适配器方式既可以当做类结构型情势,也足以当做对象结构型格局。

图片 8

优点:

①可以在不修改原有代码的功底上来复用现有类,很好地符合
“开闭原则”(这一点是二种落成格局都拥有的)

②用到 “对象组合”的措施,更契合松耦合。

缺点:

①驱动重定义Adaptee的表现较困难,那就要求生成Adaptee的子类并且使得Adapter引用这么些子类而不是援引Adaptee本身。

适用场景:

①种类须要复用现有类,而该类的接口不合乎系统的须要

②想要建立一个可重复使用的类,用于与一些相互之间没有太大关系的有些类,包蕴一些可能在未来援引的类一起坐班。

③对于目的适配器方式,在统筹里必要改变四个已有子类的接口,尽管运用类的适配器形式,就要对准每一个子类做一个适配器,而那不太实在。

深信您心中早已有了答案。那就是,首先大家要有感知(感觉)自由的力量,进而养成持续地感知(感觉)自由的能力(或习惯)。那样“短暂的即兴”便延长至“持续的即兴”了。

Student    Class

桥接格局

将抽象部分与它的兑现部分分离,使它们都可以独自地转移。它是一种对象结构型形式,又称之为柄体(Handle
and Body)形式或接口(Interface)格局。

图片 9

优点:

①把抽象接口与其促成解耦。

②抽象和促成能够单独伸张,不会潜移默化到对方。

③落到实处细节对客户透明,对用于隐藏了具体落到实处细节。

缺点:

追加了系统的复杂度

使用景况:

①如若一个种类要求在构件的抽象化角色和具体化角色之间添加更加多的八面驶风,幸免在四个层次之间确立静态的维系。

②安排需要兑现化角色的别样变更不应当影响客户端,或者完成化角色的更动对客户端是一点一滴透明的。

③索要跨越三个阳台的图片和窗口系统上。

④一个类存在八个单身变化的维度,且五个维度都急需进行扩展。

那么,大家什么赢得不久的擅自呢?

package entity;
/*
 * 学生类
 * */
public class Student {
    //学生编号
    private Integer sid;
    //学生名称
    private String sname;
    //学生性别
    private String sex;










    public Student() {
    }
    public Student(String sname, String sex) {
        this.sname = sname;
        this.sex = sex;
    }
    public Integer getSid() {
        return sid;
    }
    public void setSid(Integer sid) {
        this.sid = sid;
    }
    public String getSname() {
        return sname;
    }
    public void setSname(String sname) {
        this.sname = sname;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }

}

组合格局

整合四个对象形成树形结构以象征拥有“全体—部分”关系的层次结构。组合格局对单个对象(即叶子对象)和组合对象(即容器对象)的选取具有一致性,组合形式又有什么不可称之为“全部—部分”(Part-Whole)格局,它是一种对象结构型格局。

图片 10

优点:

①组合格局使得客户端代码可以一如既往地拍卖对象和对象容器,无需关系处理的单个对象,照旧结合的目的容器。

②将”客户代码与复杂的目的容器结构“解耦。

③足以更易于地往组合对象中投入新的预制构件。

缺点:

使得设计更为扑朔迷离。客户端要求花更加多时间理清类之间的层次关系。(那个是差不多拥有设计方式所面临的难点)。

在偏下情状下相应考虑使用组合情势:

①亟待代表一个目的全体或一些的层次结构。

②可望用户忽略组合对象与单个对象的例外,用户将合并地采用组合结构中的所有目的。

方法其实过多,而且每个人的措施也大有径庭。那里收集、举例的艺术难免局限,越来越多的不二法门就愿意您自己去发现了。

 

装饰格局

动态地给一个目的扩大一些额外的义务,就充实对象效用来说,装饰情势比生成子类已毕更为灵活。装饰形式是一种对象结构型方式。

图片 11

优点:

①装饰那形式和继承的目的都是伸张对象的功用,但装饰者格局比持续更灵敏

②通过使用分裂的切切实实装饰类以及这个类的排列组合,设计师可以创设出无数见仁见智行为的结合

③装饰者方式有很好地可伸张性

缺点:

①装饰者形式会导致规划中冒出众多小目标,纵然过度使用,会让程序变的更扑朔迷离。并且愈多的对象会是的过错变得劳累,越发是那一个目标看上去都很像。

采纳意况:

①急需扩张一个类的功效或给一个类增添附加义务。

②必要动态地给一个目标增加效益,这么些职能可以再动态地打消。

③亟待追加由一些基本作用的排列组合而发出的丰硕大方的成效

1 ● 当你是根本的时候

Grade  Class

外观情势

为子系统中的一组接口提供一个联合的进口。外观格局定义了一个高层接口,这么些接口使得这一子系统进一步便于选取。

图片 12

图片 13

优点:

①外观形式对客户屏蔽了子系统组件,从而简化了接口,收缩了客户处理的靶子数目并使子系统的使用越来越简约。

②外观情势达成了子系统与客户之间的松耦合关系,而子系统里面的意义组件是紧耦合的。松耦合使得子系统的组件变化不会潜移默化到它的客户。

缺点:

①若是伸张新的子系统可能需求修改外观类或客户端的源代码,那样就违背了”开——闭原则“(可是那点也是不可幸免)。

采用景况:

①外一个错综复杂的子系统提供一个简练的接口

②提供子系统的独立性

③在层次化结构中,可以动用外观格局定义系统中每一层的进口。其中三层架构就是这样的一个例证。

当大家洗完澡换上干净的行头时,我们的身心都感觉到是整洁、舒适、轻松的。同时大家感受到身心是不管三七二十一的。

package entity;
/*
 * 班级类
 * */
public class Grade {
    //班级编号
    private Integer gid;
    //班级名称
    private String gname;
    //班级描述
    private String gdesc;




    public Grade() {
    }
    public Grade(Integer gid, String gname, String gdesc) {
        this.gid = gid;
        this.gname = gname;
        this.gdesc = gdesc;
    }
    public Integer getGid() {
        return gid;
    }
    public void setGid(Integer gid) {
        this.gid = gid;
    }
    public String getGname() {
        return gname;
    }
    public void setGname(String gname) {
        this.gname = gname;
    }
    public String getGdesc() {
        return gdesc;
    }
    public void setGdesc(String gdesc) {
        this.gdesc = gdesc;
    }

}

享元情势

利用共享技术可行的支撑大气细粒度的目的。

图片 14

享元方式亮点就在于它亦可极大的暴跌内存中对象的数据;而为了成功这一步也拉动了它的后天不足:它使得系统逻辑复杂化,而且在一定水平上外蕴状态影响了系统的快慢。

行使景况:

①一个系统中有大量的靶子,这一个目的开销大批量的内存,这个目的中的状态大多数都得以被外部化。

②那么些目的足以依据内部情形分成很多的组,当把外部对象从目的中删除时,每一个组都能够仅用一个对象代替

③软件系统不借助于那一个目的的地位,

2 ● 将脏衣物全体洗完的时候

接下去我么就要安插大家的主要配置文件了,首若是点名大家要连接的数据库和现实连接操作

代办方式

给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的拜会。

图片 15

优点:

①代理方式可以将调用用于真正被调用的目标隔离,在自然程度上下跌了系统的耦合度;

②代理对象在客户端和对象对象之间起到一个中介的效益,那样可以起到对目标对象的护卫。代理对象足以在对目的对象发出请求以前开展一个卓殊的操作,例如权限检查等。

缺点:

①由于在客户端和实事求是主旨之间扩张了一个代理对象,所以会造成请求的处理速度变慢

②兑现代理类也急需额外的行事,从而增加了系统的落实复杂度。

行使情状:

①远程代理,也就是为一个目的在不一致的地方空间提供部分代表。那样可以隐藏一个目标存在于不一致地点空间的谜底。

②虚拟代理,是根据须求创制开支很大的目的。通过它来存放实例化须要很长世间的真正对象。

③平安代理,用来控制真是对象访问时的权能。

④智能指点,是指当调用真实的靶巳时,代理处理其它一些事。

大家莫不精通,清洗衣裳有助于解决心理。当大家把现实中的衣物的污渍洗涤过后,大家会倍感到近似心灵上的污垢也被清洗了貌似,觉得舒适了。

Configuration.xml

3 ● 全情于某一件业务的时候

<?xml version="1.0" encoding="UTF-8" ?>
<!--

       Copyright 2009-2012 the original author or authors.

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.

-->
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
<!-- 
  <settings>
    <setting name="useGeneratedKeys" value="false"/>
    <setting name="useColumnLabel" value="true"/>
  </settings>

  <typeAliases>
    <typeAlias alias="UserAlias" type="org.apache.ibatis.submitted.complex_property.User"/>
  </typeAliases> -->
  <environments default="development">
    <environment id="development">
      <transactionManager type="JDBC">
        <property name="" value=""/>
      </transactionManager>
      <dataSource type="UNPOOLED">
        <property name="driver" value="oracle.jdbc.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>
        <property name="username" value="practice"/>
        <property name="password" value="123"/>
      </dataSource>
    </environment>
  </environments>

   <mappers>
    <mapper resource="config/Student.xml"/>
  </mappers> 

</configuration>

当您流连忘返于音乐之中、或沉入书本中的世界、或专注于绘下一张画……以及任何可以让您全情投入的事体当中的时候,你就会取得短暂的肆意。

 

活在当下是一个“小把戏”,它能将我们的注意力只用在当时想做的政工上面。大家通过习得“专注力”。那种能力能升高大家的甜蜜指数与生存的人品,也能让大家得到短暂的美满。

实际上最根本的是如下图所示

4 ● 与相爱的人在同步的时候

图片 16

与相爱的人在协同能让您感觉舒心又欣慰。越发是当你心理受挫之时,亲情或友情的慰问是很好的排解。甚至不用太多的言语,坐在一起就会认为能量又渐渐地復苏过来了。

 

5 ● 当你身着轻便的时候

到那里截至,所有的备选干活大多就已经是成就了

当大家卸下沉重的负担,而身着轻便的时候,行走在中途也会快捷。肉体轻松,心思自然就会好起来。

接下去,使用Mybatis框架来促成大家的具体操作‘

6 ● 当你助人的时候

1.询问所有学员音讯

当你支持别人的时候,即使是很小的一个细节或动作(譬如帮人停住电梯门或拾起旁人掉落的事物)都会使你心思愉悦,那时你会感到心灵片刻的即兴了。

 因为Mybatis是属于一种半自动化的框架技术从而呢sql是大家手动书写的,那也是Mybatis的一大特色

7 ● 在海边

大家得以写出切实的实体配置文件

去到海边,人的情感会莫名的舒适。也许是出于人在那一刻发觉自己只是是不在话下的留存呢,所以烦恼什么的也会短暂的偏离自己吗。聆听大海的声响,也会听到自己心中的响声,那一刻的您会是轻易的。

Student.xml

8 ● 独处的时候

<?xml version="1.0" encoding="UTF-8"?>
<!--

       Copyright 2009-2012 the original author or authors.

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.

-->

<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="Student">

  <resultMap type="entity.Student" id="StudentResult">
    <id column="sid" jdbcType="INTEGER" property="sid"/>
    <result column="sname" jdbcType="VARCHAR" property="sname"/>
    <result column="sex" jdbcType="VARCHAR" property="sex"/>
  </resultMap>

    <select id="selectAllStu"  resultMap="StudentResult">
        select * from Student
    </select>

</mapper>

现代人越来越少与投机独处,越发是在城市中在世的人们。不妨每日留一点独处的年月给协调。聆听自己的声响就是聆听生命本身。记住:生命本自由。

 

9 ● 无所顾忌的时候

图片 17

玩得一身泥巴、踩踏小水洼而把鞋子弄湿、画画时将自己弄得很脏……就像成了男女们的“专利”,因为反复一年到头人才会顾及太多,而子女们则相反。

既然如此我们写了sql也指定了对应的实体类,那么大家到近日甘休还并从未采取它,所以大家还亟需在主配置文件中添加实业配置文件的引用

设若某一天你忘了带雨伞,不妨去淋淋雨吧!你会体会到任意。

图片 18

10 ● 做要好的时候

 

您自己感受到的满面春风才是实在的心满意足。你是您的中坚。听从自己心中的音响而做出的主宰,往往会让您通体舒畅女士、感觉自由。

因此以上的步骤,
我们查询任何学生的配置文件基本上就曾经形成了,现在我们来举办一道测试

11 ● 做团结喜爱的事

/*
     * 1.1 查询所有的学生信息
     * */
    @Test
    public void OneTest() throws Exception{
        //通过配置文件获取到数据库连接信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //通过配置信息构建一个SessionFactory工厂
        SqlSessionFactory sqlsessionfactory=new SqlSessionFactoryBuilder().build(reader);
        //通过SessionFaction打开一个回话通道
        SqlSession session = sqlsessionfactory.openSession();
        //调用配置文件中的sql语句
        List<Student> list = session.selectList("Student.selectAllStu");
        //遍历查询出来的结果
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }

        session.close();
    }

做团结喜爱的事,而不是被强迫做某件事。当你做要好喜欢的事的时候,是轻松和喜悦的,也是随机的。时间所以变得很快或者没有了,你会觉得一天都很短暂而且意犹未尽。找出自己喜爱做的作业呢:它能够是游泳、跑步、散步、滑板……

图片 19

12 ● 行走的时候

实践之后的言语如下

走路的时候(步行或坐交通工具)的你,是充满活力的。人一旦每天呆在祥和深谙的条件里,心境也会变的忧郁。不妨行走起来,让生命流动,你会倍感到任意。

图片 20

13 ● 一点点想象力

 这样我们运用Mybatis查询所有学生新闻就做到了

人的想象力是具有很大的能力的。不妨闭上眼睛,想象一下美好的事务:譬如想像自己在海边散步,或者放在一片花的汪洋大海之中。你会找到片刻的擅自。

 

14 ● 旅行

2.带条件查询动态Sql拼接

相差自己深谙的条件,去旅可以吗。新的激发和气氛会带给你短命的随意。

/*
     *1.2 带条件查询信息(动态Sql拼接)
     * */
    @Test
    public void selectAllStuByWhere() throws Exception{
        //通过配置文件获取到数据库连接信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //通过配置信息构建一个SessionFactory工厂
        SqlSessionFactory sqlsessionfactory=new SqlSessionFactoryBuilder().build(reader);
        //通过SessionFaction打开一个回话通道
        SqlSession session = sqlsessionfactory.openSession();
        //准备一个学生对象作为参数
        Student student=new Student();
        student.setSname("3");
        //调用配置文件中的sql语句
        List<Student> list = session.selectList("Student.selectAllStuByWhere",student);
        //遍历查询出来的结果
        for (Student stu : list) {
            System.out.println(stu.getSname());
        }

        session.close();
    }

15 ● 搬家

 

有时候可以试着搬家来改变心态,越发是当您想要多做更改的时候。改变自己居住的环境会带给你新的血流,以及自由感。

图片 21

16 ● 去另一个都会生活

 

去另一个城市生活,更加是友善钟意的都会,同样会带给您短命的自由。

小安插配置文件音讯

17 ● (感到)一无所获的时候

<?xml version="1.0" encoding="UTF-8"?>
<!--

       Copyright 2009-2012 the original author or authors.

       Licensed under the Apache License, Version 2.0 (the "License");
       you may not use this file except in compliance with the License.
       You may obtain a copy of the License at

          http://www.apache.org/licenses/LICENSE-2.0

       Unless required by applicable law or agreed to in writing, software
       distributed under the License is distributed on an "AS IS" BASIS,
       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
       See the License for the specific language governing permissions and
       limitations under the License.

-->

<!DOCTYPE mapper
    PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="Student">

  <resultMap type="entity.Student" id="StudentResult">
    <id column="sid" jdbcType="INTEGER" property="sid"/>
    <result column="sname" jdbcType="VARCHAR" property="sname"/>
    <result column="sex" jdbcType="VARCHAR" property="sex"/>
  </resultMap>

    <!-- 简单查询所有信息 -->
     <select id="selectAllStu"  resultMap="StudentResult">
        select sid,sname,sex,gid from Student 
    </select> 

    <!--动态拼接Sql  -->
     <select id="selectAllStuByWhere" parameterType="entity.Student"  resultMap="StudentResult">
        select sid,sname,sex,gid from Student where 1=1
        <if test="sname!=null and !&quot;&quot;.equals(sname.trim())">
            and sname like '%'|| #{sname}|| '%' <!-- 模糊查询 -->
            <!-- and sname = #{sname} -->
        </if>

     </select>
</mapper>

奇迹,大家会感觉到到温馨一介不取。尽管有负面心思的单方面;但假使以开展角度来看,一名不文也意味着充满种种可能。而那种对“可能”的憧憬会给您说话的轻易。

 图片 22

18 ● 放空的时候

实践之后的结果就是

大家无时无刻不在走神,可是放空意味着你尽量不去考虑。那种时刻你的情怀是舒适的,也会觉得片刻的任性。

图片 23

19 ● 对友好微笑

 

对着镜子中的自己微笑(或大笑)吧,一次、一次、十遍、一百遍……
笑的岁月越久,你就越自由。

3.新增学生新闻

20 ● 冥想

/*
     * 1.3 新增学生信息
     * 
     * */
    @Test
    public void InsertStuInfo() throws Exception{
        //通过配置文件获取配置信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //构建一个SessionFactory,传入配置文件
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //获取session
        SqlSession session = factory.openSession();
        //准备参数对象
        Student stu=new Student();
        stu.setSname("巴黎的雨季");
        stu.setSex("男");
        //调用添加方法
        int count = session.insert("Student.InsertStuInfo", stu);
        if(count>0){
            System.out.println("添加成功");
        }else{
            System.out.println("添加失败");
        }
        //提交
        session.commit();
        //关闭
        session.close();
    }

冥想通过尽量不让自己有思考暴发,从而调适肉体的意义。人就此有抑郁就是想得太多。当大家力图幸免思维的暴发时,大家的身心便能取得短暂的复苏,从而达到精力回复的目的。在冥想的历程中或将来,都能使你拿走短暂的肆意。

 

21 ● 去空旷的地点

图片 24

在都会中生存的人们,越发是时常运动于视线不好的高堂大厦林立的场子,不妨偶尔去到莽莽的地方,譬如郊外。相信会让你体会到片刻的任意。

在小布置中追加一个节点

22 ● 极限运动

<!-- 新增学生信息 -->
     <insert id="InsertStuInfo" parameterType="entity.Student" >
         insert into Student values(SEQ_NUM.Nextval,#{sname},#{sex},1)
     </insert>

跳伞、滑翔、漂流、蹦极……这几个系列或者不适用于一大半人,如若正好你正是以上品种的爱好者来说,相信它们能给你带来短暂的随机。

图片 25

……

实施之后结果为

(PS:越多的(你的)得到短暂的自由的主意,希望您能在下方留言。谢谢!)

图片 26

延续的去除和改动代码基本上和新增是同一的,只是调用的sql语句不相同,所以持续我就不做详细的表达了,只将代码摆出来,详细我们都可以看得驾驭!!

 

4.删减学生音讯依照id

/*
     * 1.4根据SID删除学生信息
     * */
    @Test
    public void DeleteStuBySid()throws Exception{
        //通过配置文件获取配置信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //构建一个SessionFactory,传入配置文件
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //获取session
        SqlSession session = factory.openSession();
        //准备参数
        int sid=2;
        //调用删除方法
        int count = session.delete("Student.DeleteStuBySid", sid);
        if(count>0){
            System.out.println("删除成功");
        }else{
            System.out.println("删除失败");
        }
        //提交
        session.commit();
        //关闭
        session.close();
    }

 

亟待在配置文件中新增的是

 <!-- 删除学生信息 -->
     <insert id="DeleteStuBySid" parameterType="int">
         delete from Student where sid=#{sid}
     <!--或者是     delete from Student where sid=#{_parameter} -->
     </insert>

 

5.基于SID修改学生消息

/*
     * 1.5根据SID修改学生信息
     * 
     * */
    @Test
    public void UpdateStuBySid()throws Exception{
        //通过配置文件获取配置信息
        Reader reader = Resources.getResourceAsReader("config/Configuration.xml");
        //构建一个SessionFactory,传入配置文件
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(reader);
        //获取session
        SqlSession session = factory.openSession();
        //准备参数对象
        Student stu=new Student();
        stu.setSid(1);
        stu.setSname("绿茵");
        stu.setSex("女");
        //调用删除方法
        int count = session.update("Student.UpdateStuBySid", stu);
        if(count>0){
            System.out.println("修改成功");
        }else{
            System.out.println("修改失败");
        }
        //提交
        session.commit();
        //关闭
        session.close();
    }

 

急需在布局文件中加上的是

 

 <!-- 根据SID修改学生信息 -->
     <update id="UpdateStuBySid" parameterType="entity.Student" >
     <!--     update Student set sname=#{sname},sex=#{sex} where sid=#{sid} -->
          update Student
         <set>
             <if test="sname!=null">
                 sname=#{sname},
             </if>
             <if test="sex!=null">
                 sex=#{sex},
             </if>
         </set>
         where sid=#{sid} 
     </update>

 

 

 

  

 以上大家就大概的达成了对Mybatis的增、删、改、查的基本操作了,关于Mybatis的局地尖端内容的讲解我会继续在后中为大家不断讲解

 

相关文章