美文网首页
2019-06-04 SSM复习要点

2019-06-04 SSM复习要点

作者: 卡布奇诺_7828 | 来源:发表于2019-06-04 13:03 被阅读0次

SSM复习要点

Spring

Spring是一个管理Bean的容器

三个重要概念:IOC,DI,AOP

bean标签的作用及特点

这个对象在Spring容器加载时即创建该对象

默认是单例的,可以修改scope属性修改为非单例scope="prototype"

class是必须指定的,id不是

Autowired注解的作用

可以注入一个对象,默认是按照类型匹配,所以要求实现类只能有一个,如果有多个需要使用@Qulifier

public class GuanYu{
    @Autowired
    @Qulifier("test2") // 指定test2作为装配对象
    private Weapon weapon;
}
@Component("test1")
public class QingLong implements Weapon {
    private int dps;
    public void setDps(int dps) {
        this.dps = dps;
    }
    public int getDps() {
        return dps;
    }
    public void showInfo() {
        System.out.println("青龙偃月,攻击力很高");
    }
}
@Component("test2")
public class Fang implements Weapon {
    private int dps;
    public void setDps(int dps) {
        this.dps = dps;
    }
    public int getDps() {
        return dps;
    }
    public void showInfo() {
        System.out.println("方天画戟,攻击力很高");
    }
}

依赖注入DI的方式有几种

  • 构造器注入

    <bean id="guanyu" class="com.neuedu.test.GuanYu"> 
         <constructor-arg name="name" value="关羽"></constructor-arg>
         <constructor-arg name="weapon" ref="fang"></constructor-arg>
        
         <constructor-arg name="name">
             <value>关羽</value>
         </constructor-arg>
         <constructor-arg name="weapon">
             <ref bean="fang"></ref>
         </constructor-arg>
    </bean>
    <bean id="fang" class="com.neuedu.test.Fang"></bean>
    
  • setter注入

    <bean id="guanyu" class="com.neuedu.test.GuanYu"> 
        <property name="name" value="关羽"></property>
        <property name="weapon" ref="fang"></property>
        
        <property name="name">
            <value>关羽</value>
        </property>
        <property name="weapon">
            <ref bean="fang"></ref>
        </property>
    </bean>
    <bean id="fang" class="com.neuedu.test.Fang"></bean>
    
  • 接口注入(Spring不支持)
AOP面向切面编程

其中使用了代理模式

提供了一些注解,如@Before,@Around,@AfterThrowing等

    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 数据源dataSource在spring-db.xml中已经配置-->
        <property name="dataSource" ref="dbcpDS" />
    </bean>

    <tx:advice id="txAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="insert*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <!--
        第一个 * - 通配 返回值类型
        第二个 * - 通配包com.neuedu.service.impl下的class
        第三个 * - 通配包com.neuedu.service.impl下的class的方法
        第四个 .. - 通配 方法可以有0个或多个参数
        -->
        <!-- advice-ref的值是上面tx:advice标签的id属性的值 -->
        <aop:advisor advice-ref="txAdvice" pointcut="execution(* com.neuedu.service.impl.*.*(..))"/>
    </aop:config>

Mybatis

mybatis是一个持久层框架

别名设置

<configuration>
    <typeAlias type="com.neuedu.pojo.Userinfo1" alias="user1">
    <typeAlias type="com.neuedu.pojo.Userinfo2" alias="user2">
    <package name="com.neuedu.pojo"></package>
    <package name="com.neuedu.utils"></package>
</configuration>

log4j日志,默认的输出级别是DEBUG

表与表之间的关系

  • 一对一 <assosiation>
  • 多对一 <collection>
  • 多对多 <collection>

在mapper文件中,常见的标签select,insert,where,if,set,update,delete,sql,include等,没有group标签

<!-- 返回主键 -->
<insert id="addEmp" parameterType="Emp">
    /*
        keyProperty="empno" 主键列
        mysql order=before oracle order=after
    */
    insert into emp(empno,ename,deptno,job) values(#{empno},#{ename},#{deptno},#{job})
    <selectKey order="BEFORE" keyProperty="empno" resultType="Integer"></selectKey>
</insert>

mapper文件中namespace对应接口

<mapper namespace="com.neuedu.mapper.UserinfoMapper"></mapper>

mapper文件中#{}和${}的区别

  • #{}会被解析成?,然后使用数据绑定,${}是直接把数据拼在SQL中
  • #{}有单引号,${}没有

mapper文件中resultType和resultMap的区别

  • resultType表示SQL的返回值类型,会把查询结果直接绑定在该类型的同名属性上

        <select id="serchByEmpno" parameterType="Integer" resultType="Emp">
            select * from emp where empno = #{value}
        </select>
    
    public class Emp{
        private int empno;
        private double sal;
        ...
    }
    
  • resultMap表示SQL返回的map映射,需要一一设置对应属性

        <select id="serchByEmpno" parameterType="Integer" resultMap="test">
            select empno,sal from emp where empno = #{value}
        </select>
    
        <resultMap id="test" type="Emp">
            <id property="a" column="empno"></id>
            <result property="b" column="sal"></result>
        </resultMap>
    
    public class Emp{
        private int a;
        private double b;
    }
    

SpringMVC

SpringMVC中有个负责处理HTTP请求和响应的DispatcherServlet,它叫中央控制器(前端控制器),在web中配置映射

  <!--配置springmvc中央控制器(前端控制器)DispatcherServlet-->
  <servlet>
    <servlet-name>springDispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>

SpringMVC处理器方法需要返回数据需要添加注解:@ResponseBody

SpringMVC中,ModelAndView可以保存数据并完成转发,但不能获取数据

@RequestMapping({"/user/add","/user/insert"})映射多个请求

参数绑定时不能直接绑定java.util.Date类型

处理器方法是用String类型作为返回值,使用forward进行转发,使用redirect进行重定向

RESTFUL风格的URL如何获取参数

@Controller
public class TestController{
    @RequestMapping("/user/{id}")
    public void getInfo(@PathVariable("id") int uid){
        
    }
}

相关文章

  • 2019-06-04 SSM复习要点

    SSM复习要点 Spring Spring是一个管理Bean的容器 三个重要概念:IOC,DI,AOP bean标...

  • SSM注意点整合

    SSM复习要点 Spring Spring是一个管理Bean的容器 三个重要概念:IOC,DI,AOP bean标...

  • 2019-06-04复习要点类

    复习要点 1.类class 1.1类的创建 类是一个.java文件,类是一个抽象的概念,是属性和方法的一个“容器”...

  • 2018-12-17

    复习了ssm架构,考虑宝联灯从ssh转化到ssm的成本

  • 2019-06-04方法复习要点

    复习要点 1.方法 概念:方法是一套功能代码 1.1认识方法 1.2方法返回值介绍 1.3方法的参数 1.4方法的...

  • 工程中心第二周学习总结

    一、ssm复习 主要是看书。然后做了练习 二、ssm+redis抢红包 实体类层 UserRedPacket.ja...

  • ssm框架复习

    Mybatis #{}与${}的区别 区别{}解析为一个JDBC的预编译语句(prepared statement...

  • 复习要点:

    一、第一单元和第四单元的课文要会背诵。 二、每篇课文后的字条要求会认,偏旁要会认。田字格里的生字要求会写,记住笔顺...

  • 复习要点

    一、进位加法天天练习,熟练到脱口而出的程度。 二、知道用加法 题型 1、吃了5个水果,还剩2个,原来有几个水果? ...

  • 复习要点

    1. 类和方法的复习 如何创建类(实体类为标准) 如何定义私有属性(私有属性不能直接访问) 构造器是做什么的(创建...

网友评论

      本文标题:2019-06-04 SSM复习要点

      本文链接:https://www.haomeiwen.com/subject/apulxctx.html