1、复习MVC

Why:没有使用MVC的时候,我们可以在jsp页面写java代码;

MVC含义:M:(Model)V(View):C(Control);

MVC的流程图:

  • 没有使用MVC(Model-1)

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

Jsp本身就是一个Servlet,为什么要使用jsp?

在Servlet中拼装html代码的复杂,在jsp页面上忘记了总是忘记导入包,总是忘记强转

缺点:

  1. 如果数据库里面的表特别多,关系特别的复杂;不好维护;牵一发而动全身;
  2. 分工不明确

 

  • 使用了MVC:(Model-2)

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

Db:存储数据(项目中的数据)

POJO:存储的是和表的列名一模一样的对象;一个表对应一个POJO

Dao:只负责表的CRUD;一个表对应一个Dao

Service:一个Service持有多个Dao,持有其它的Service;

测试类:一个Service对应一个测试类

Servlet:一个Servlet持有多个Service;

JSP:一个JSP对应一个Servlet方法;

例子:

  优点 缺点

村东头小饭店

 
  1. 人少没,人多就问题了
  2. 分工不明确,招人不好招

大城市超级大饭店

解决了小饭店的缺点

代价大

OCP原则:(Open Close P(原则)--开闭原则:

  1. 对已有的功能关闭,
  2. 对新开发的功能开放
  3. 增加新功能或者修复bug的时候尽量不要修改别人的代码;
  4. 将经常修改的内容放到配置文件中;修复bug的时候,一般情况下是新增加一个方法;

 2、Mybatis

2.1 Why(即jdbc的缺点)

肯定是原来的内容或者使用的工具有很多缺点;或者说使用不方便;mybatis替换的是dao层框架,dao层就是封装的jdbc;如果jdbc特别棒,那orm框架(mybatis)等就没市场了。

Jdbc有哪些缺点:

  1. 四步走(麻烦);
  2. 修改数据库中的表(列的增加和修改),修改的地方特别多;POJO,SQL语句,将数据库的记录变为java中的Object;
  3. 万恶的占位符(主要解决SQL注入的问题);ps.setObject(占位的位置,值),是为占位的位置发愁;多条件搜索:为啥要加上where 1 =1 ;
  4. 关联关系:一对一,一对多(多对一)),多对多;手动增加一个开关;
    1. 联合查询的语句:一条语句就可以
    2. 分多次查询:手动增加了一个关联关系的开关
    3. 开关可否变动自动的;对象的关联关系,我使用的时候自动打开,不使用的时候不要查询
    4. 手动的关联关系的开关,只能处理到第一层关联关系;(第二层以上的无法处理)
  5. 缓存:比如搜索的时候:两个人搜索的关系字是一样的;将第一个人搜索的记录存储到一个集合中,当第二个搜索的时候,直接从集合中取数据就可以了,就少向数据库中发送了一条sql语句的

2.2介绍

Mybatis是一个ORM框架,O(Object)R(Relation)M(Mapping);对象(java)关系(数据库,关系型数据库)映射;

POJO:pojo的类名一般和表名一样(去掉下划线);属性名和表的列名一样;pojo的对象和表的记录

把数据库里面的记录变成java对象(Rs+反射);Db-->Dao;

把JAVA对象变成数据库的SQL:从Dao-->Db

官网:最早是在出名的apache(Tomcat,common-fileupload,jstl)下面;后来挪到了google-code上面,再后来挪到了github(国外版本的码云);原名叫:ibatis

中文手册:http://www.mybatis.org/mybatis-3/zh/index.html

Github:https://github.com/mybatis/mybatis-3

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

都是开源的,将源代码也提供;

目录介绍

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

  1. Mybatis-3.4.5核心的jar包
  2. Lib:mybatis所使用到的jar包
  3. mybatis-3.4.5.pdf:官网自带的英文手册
  4. 中文在线手册:http://www.mybatis.org/mybatis-3/zh/index.html

3、实战

3.1 Junit(单元测试)——测试类

  • 创建一个java项目(因为不需要tomcat,所以创建java项目即可);创建过程(略)
  • 添加一些jar包;

为java项目添加jar有哪些方法:

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

测试类:写了一个main方法;测试类要测试很多很多方法;测试某个方法的时候,是要把其它的代码注释掉,然后运行;main方法是入口函数;程序的开始运行的地方就是main方法;

当然们接触了junit,添加了两个jar包以后,main方法不再是入口函数了.(jar包做了此项工作)

  • 运行

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

如果一个类里面即写了main方法又写了juni单元测试类,类似于被static修饰的属性和方法,不需要创建对象,你偏偏创建对方访问(多此一举)

查看结果:

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

代码:

package com.carlinfo.mybatis.test;

 

import org.junit.After;

import org.junit.Before;

import org.junit.Test;

 

/**

 * junit测试类

 * @author wa

 *

 */

public class JunitTest

{

    /**

     * 在测试@test方法之前执行

     */

    @Before

    public void init()

    {

        System.out.println("==我初始化了==");

    }

   

    /**

     * 在执行@test方法之后执行

     */

    @After

    public void destory()

    {

        System.out.println("==销毁==");

    }

   

    /**

     * @这个是注解,是给java的编译器看的

     *

     * 此方法可以使用junit运行

     */

    @Test

    public void method01()

    {

        System.out.println("====这是method01===");

    }

   

    /**

     * 这是第二个方法

     * @test指定就可以

     */

    @Test

    public void method02()

    {

        try

        {

            String str = null ;

            str.toString() ;

        } catch (Exception e)

        {

            e.printStackTrace();

        }

        System.out.println("==这是method02==");

    }

   

    /**

     * 有了junit,main就不要再写了

     * @param args

     */

    public static void main(String[] args)

    {

        System.out.println("==这是main==");

    }

}

 mybatis——基本1MVC复习|jdbc缺点|mybatis|juit

 

 

相关文章:

  • 2022-12-23
  • 2021-12-07
  • 2021-08-18
  • 2022-02-05
  • 2021-11-17
  • 2022-01-30
  • 2021-09-13
  • 2021-05-08
猜你喜欢
  • 2021-08-01
  • 2022-12-23
  • 2022-12-23
  • 2021-10-03
  • 2022-12-23
  • 2021-10-31
相关资源
相似解决方案