美文网首页
SSM注意点整合

SSM注意点整合

作者: 金石_832e | 来源:发表于2019-06-04 11:37 被阅读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){
        
    }
}

相关文章

  • 整合SSM

    SSM整合 整合思路 各自搭建SSM环境 使用Spring整合Mybatis 使用Spring整合SpringMV...

  • 12|第十二课:SSM整合

    一、SSM整合 SSM整合: Spring --- SpringMVC --- MyBatis (一)、Sprin...

  • SSM注意点整合

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

  • SpringMVC框架学习1:SSM 整合开发、SpringMV

    SSM 整合开发 SSM 编程,即 SpringMVC + Spring + MyBatis 整合,是当前最为流行...

  • SpringBoot 整合Mybatis、Mysql自定义数据源

    SpringBoot、Mybatis、Mysql整合,此SSM不是彼SSM,使用SpringBoot组件,整合My...

  • SSM整合

    SSM整合 目标 熟练整合SSM 使用SSM环境进行增删改查 项目结构 一、创建数据库 CREATE DATABA...

  • SSM框架-整合

    SSM整合 搭建整合环境 1. 搭建整合环境 创建相应的数据库 创建Maven工程并导入相应坐标创建ssm_par...

  • SSM整合 基础篇

    SSM整合 需求:通过SSM整合做出对前端基本查询的jsp响应 1 数据库数据 数据库数据如下 创建父工程ssm_...

  • 【视频分享】尚硅谷spring+springmvc+mybait

    尚硅谷spring+springmvc+mybaits以及SSM高级整合视频 SSM整合开发是目前企业流行使用的框...

  • ssm整合

    ssm整合 项目结构 db.properties mybatis-configuration.xml 遵循四点 x...

网友评论

      本文标题:SSM注意点整合

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