Maven、MyBatis、Spring学习笔记

Java三层架构

UI(表现层):
主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

BLL:(业务逻辑层):

UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。

DAL:(数据访问层):

与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)

Maven

Maven工具用于管理和构建Java项目
提供标准化项目结构,开发环境可以通用

小知识:
注释快捷键:ctrl+/

坐标主要组成:
groupId
artifactId
version

MyBatis

是一款优秀的持久层框架,简化JDBC开发
几乎免除了所有的JDBC代码以及设置参数和获取结果集的工作

使用MyBatis(简单查询)

用户数据类User:

package com.waifyd.pojo;

public class User {
   private Integer id;
   private String username;
   private String password;
   private String gender;
   private String addr;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", gender='" + gender + '\'' +
                ", addr='" + addr + '\'' +
                '}';
    }
}

实现:

package com.waifyd;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MyBetisDemo {
    public static void main(String[] args) throws IOException {
        //1.加载mybatis的核心配置文件,获取sqlSessionFactory
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        //2.获取SqlSession对象,用它执行sql
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //3.执行SQL
        List<Object> users = sqlSession.selectList("test.selectAll");
        System.out.println(users);

        //释放资源
        sqlSession.close();
    }
}

Filter

过滤器,是JavaWeb三大组件之一
可以把对资源的请求拦截下来,从而实现特殊功能
可以完成通用操作,如权限控制、统一编码处理、敏感字符处理

AJAX

1.与服务器进行数据交换
使用AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面

Spring框架

Spring整合了很多框架,提供若干个项目,用于完成特定的功能

Spring Framework

是最基础的项目,是其他项目的根基

目的:充分解耦
IoC控制反转:使用对象时,由主动new对象转化为由外部提供对象,对象创建控制权由程序转移到外部,此思想称为控制反转。Spring提供了IoC容器。
IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对象在IoC容器中统称为Bean

DI依赖注入:在容器中建立bean和bean之间的依赖关系的整个过程,称为依赖注入

IoC入门案例

在spring的xml中
  <!--1.mean中导入spring坐标-->
<!--        2.配置bean-->
<!--    配置beanbean标签表示配置bean-->
<!--    id属性表示给bean起名字-->
<!--    class属性表示给bean定义类型-->
    <bean id="bookDao" class="com.fydyyds.dao.impl.BookDaolmpl"/>

    <bean id="bookService" class="com.fydyyds.service.impl.BookServicelmpl"/>


实现类中 
public class App2 {
    public static void main(String[] args) {
        //3.获取Ioc容器
        ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        //4.获取Bean
//        BookDao bookDao = (BookDao) ctx.getBean("bookDao");
//        bookDao.save();
        BookService bookService = (BookService) ctx.getBean("bookService");
        bookService.save();
    }
}


DI依赖注入入门案例

业务层中:
public class BookServicelmpl implements BookService{
    //5.删除业务层中使用new方式创建的dao对象
    private BookDao bookDao;

    public void save(){
        System.out.println("book service save ...");
        bookDao.save();
    }
    //6.提供对应的set方法
    public void setBookDao(BookDao bookDao) {
        this.bookDao = bookDao;
    }
}

spring中
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--1.mean中导入spring坐标-->
<!--        2.配置bean-->
<!--    配置beanbean标签表示配置bean-->
<!--    id属性表示给bean起名字-->
<!--    class属性表示给bean定义类型-->
    <bean id="bookDao" class="com.fydyyds.dao.impl.BookDaolmpl"/>

    <bean id="bookService" class="com.fydyyds.service.impl.BookServicelmpl">
<!--        7.配置server与dao的关系-->
<!--        property标签表示配置当前bean属性-->
<!--        name属性表示配置哪一个具体的属性-->
<!--        ref属性表示参照哪一个bean-->
<!--        name指的是属性的名词,ref是当前容器对应的名词-->
        <property name="bookDao" ref="bookDao"/>
    </bean>
</beans>

bean的配置使用

实例化bean:
1.构造方法实例化bean如
<bean id="bookDao" class="com.fydyyds.dao.impl.BookDaolmpl"/>

bean可以起别名,使用name

如果bean无法获取到,将抛出 No bean named…此时两边检查名字是否一致

bean默认单例模式,可使用作用范围scope为prototype变为分单例

bean的报错,拉倒最后面看最后一个异常信息,从最后解决

无参的构造方法如果不存在,将抛出异常BeanCreationException

如何配置bean生命周期的方法
init-method 和 destory-method
如果要destory-method执行,必须关闭容器,需要用到close()方法,close()方法需要用ClassPathXmlApplicationContext获取容器

DL依赖注入方式

setter方式注入 简单类型 引用类型

引用类型
1.bean中定义引用类型属性并提供可访问的set方法
2.配置中使用property标签ref属性注入引用类型对象

简单类型
1.bean中定义引用类型属性并提供可访问的set方法
2.配置中使用property标签value属性注入引用类型对象

构造器注入 简单类型 引用类型

1.写构造方法
2.配置中使用constructor-arg标签name和ref或value属性注入引用类型对象

强制依赖使用构造器注入,可选依赖使用setter注入

依赖自动装配

1.提供set方法
2.配置中使用 autowire

注解开发Bean

为了方便区分,把
@Component 在持久层使用
@Repository 在数据层使用
@Controller 在表现层使用

在类里配置bean,Spring3.0开启了纯注解开发模式,使用java类替代配置文件
Java类代替Spring核心配置文件

@Configuration
@ComponentScan("com.fydyyds")

@Configuration注解用于设定当前类为配置类
@ComponentScan用于设定扫描路径,该注解只能添加一次,多个数据用数组模式

注解开发依赖注入

类里@Autowired
如果有多个相同类型的bean使用
类里@Qualifier(“指定名称”)
如果不是引用类型是简单类型使用
@Value(“值”)
如果是从外部加载properties文件使用
@PropertySource({“jdbc…”})
@Value(“${}”)

SpringMVC

SpringMVC技术与Servlet技术功能相同,均属于web层开发技术。是一种基于Java实现MVC模型的轻量级web框架。使用简单,开发便捷,灵活性强

1.先导入SpringMVC坐标与Servlet坐标

 <dependencies>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
    </dependencies>

2.创建SpringMVC控制器类

package com.fydyyds.controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


//2.定义controller
//2.1使用@Controller定义bean
@Controller
public class UserController {
    //2.2设置当前操作的访问路径
    @RequestMapping("/save")
    //2.3设置当前操作的返回值类型
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return "{'info':'springmvc'}";
    }
}

3.初始化SpringMVC,设定SpringMVC加载对应的bean

package com.fydyyds.config;


import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;

//3.创建springmvc的配置文件,加载controller对应的bean
@Configuration
@ComponentScan("com.fydyyds.controller")
public class SpringMvcConfig {

}

4.初始化Servlet容器,加载SpringMVC环境,并设置SpringMVC技术处理的请求

package com.fydyyds.config;


import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.support.AbstractDispatcherServletInitializer;

//4.定义一个servlet容器启动的配置类,在里面加载spring的配置
public class ServletContainer extends AbstractDispatcherServletInitializer {
    //加载springMVC容器配置
    @Override
    protected WebApplicationContext createServletApplicationContext() {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringMvcConfig.class);
        return ctx;
    }
    //设置哪些请求归属springMVC处理
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
    //加载spring容器配置
    @Override
    protected WebApplicationContext createRootApplicationContext() {
        return null;
    }
}

postMan简介

是一款网页调试与发送网页HTTP请求的Chrome插件
常用于进行接口测试

SSM整合

在这里插入图片描述

SpringBoot

简化Spring应用的初始搭建以及开发过程


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值