SSM框架的粗糙翻译理解(纯理论)

1.开发工具,所用技术简述

1.1框架简述

框架:Spring+Spring MVC+MyBatis

1.2开发工具

开发工具:JDK,Tomcat,Intellij IDEA,Spring,Spring MVC,MyBatis,MySQL

2.开发技术路线

2.1 Spring基本知识及应用

2.1.1 Spring基础

1.IOC(Inversion of Control)控制反转:不用自己创建对象,而是使用spring框架提供IOC容器来管理,直接从IOC容器获取对象,控制权由应用程序交给IOC容器。
IOC实现依赖关系对象之间的解耦,通过IOC容器关联对象类。(理解:以前吃饭要自己做,现在吃饭,美团外面直接给你送到)
2.AOP(Aspect Oriented Programming) 面向切面编程
3.DI(Dependency Inject)依赖注入:对象的属性,已经被注入好相关值,直接使用。程序依赖容器创建并注入它所需要的外部资源(理解:外卖店家直接给你送餐
4.框架核心容器BeanFactory和ApplicationContext,方法有:setter注入和构造方法注入
5.Bean的使用,在applicationContext.xml中将Bean文件和文件对应的class写在一起(理解:创建对象实例

2.1.2 Spring Bean

1.Bean实例有6种定义域
singleton(单例):始终指向同一对象(默认)
prototype(原型):spring获取prototype定义的的bean时,会创建一个新的bean实例
request:一次http请求,会返回bean的同一个实例,不同请求会产生新的,该bean仅在http request内有效
session:同上,仅在http session内有效
application:为每个servletContext创建一个实例,仅在web相关的applicationContext内有效
websocket:为每个websocket创建一个实例,仅在web相关的applicationContext内有效

2.以prototype作用域举例

<bean id="scope" class="com.ssm.xx.xx.xx" scope="prototype"/>

其中id也可以是name,class就是你实例文件路径,scope就是bean作用域

3.bean的装配方式(bean的依赖注入方式):XML装配,Annotation(注解)装配,自动装配

4.通过Annotation(注解)装配常规方式,努力掌握,常用注解(@Component,@Repository,@Service,@Controller,@Autowired,@Resource,@Qualifier)

5.@Component,描述Spring中的Bean,可作用在任何层次,只需注解标注在相应类上即可
@Repository,用于数据访问层(DAO层),将业务层类标识为Spring中的Bean
@Service,作用在业务层(Service层)
@Controller,作用在控制层(Controller)
@Autowired,用于Bean的属性变量,属性的setter()方法及构造方法进行标注,配合对应的注解处理器完成Bean的自动装配工作。
@Resource,类似于Autowired,按照Bean的实例名称进行装配
@Qualifier,与@Autowired注解配合使用

6.<context:component-scan base-package="com.ssm.xxx"/>
直接扫描,无需再xml中进行bean的id和class匹配操作

7.个人对于Annotation的理解:利用注解,配置bean就只剩下一步,什么文件利用什么注解,什么时候要@Resource自己看情况

2.1.3 Spring AOP什么意思

1.AOP,面向切面编程,主要是修改代码需要修改所有相关方法,太麻烦,解决方法是将分散在各个方法中重复代码提取出来,再编译时,将这些代码应用到需要执行的地方中。
具体内容省略不写,可以参考他人的理解

2.2 MyBatis相关知识

2.2.1 关于数据库

1.spring jdbc
在applicationContext.xml里面配置数据源,数据库驱动,连接数据库的URL,用户名和密码
所谓的dataSource四大金刚就是指驱动名称,数据源所在地址,用户名,用户密码

2.要操作数据库要导入的包(mysql的包,jdbc的包,spring事务处理的包,spring架构的5个包)

3.先创建实例类–>编写带参数的方法类(Dao)–>接口具体实现方法的类
4.增删改查的方法,添加方法举例:

public int addUser(User user){
 String sql="insert  into user(username,password) value(?,?)";
 Object[] params=new Object[]{
    user.getUsername(),
    user.getPassword()
  };
  int num=this.jdbdTemplate.update(sql,obj);
  return num;
}
//更新用户的方法
public int updateUser(User user){
String sql="update user det username=?,password=? where id=?";
Object[] params=new Object[]{
user.getUsername(),
user.getPassword(),
user.getId()
};
int num=this.jdbdTemplate.update(sql,params);
return num;
}
//删除用户的方法
public int deleteUser(User user){
 String sql="delete from user where id=?";
 int num =this.jdbcTemplate.update(sql,id);
 return num;
}

5.可以使用Test写增删改查测试文件来操作数据库,要提前将jdbcTemplate注入userDao中
举例:测试增加和查询数据的例子

@Test
public void addUserTest(){
//加载配置
ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
//获取userDao实例
UserDao userDao=(UserDao)applicationContext.getBean("userDao");
//创建user实例
User user= new User();
//设置user实例属性值
user.setUsername("zhangsan");
user.setPassword("123");
//添加用户
int num=userDao.addUser(user);
if(num>0){
system.out.println("ok!");
}
else{
System.out.println("false");
}
}

6.userDao中先创建查询单个用户和查询所有用户的方法–>Dao接口中写具体的的查询方法–>测试类写测试查单个–>查所有

//创建方法名
//通过id查找用户
public User findUserById(int id);
//全部查找
public List<User> findAllUser();
//具体的查找方法
//通过id查找用户
public User findUserById(int id){
String sql="select * from user where id=?";
RowMapper<User> rowMapper= new BeanPropertyRowMapper<User>(User.class);
return this.jdbcTemplate.queryForObject(sql,rowMapper,id);
}
//全部查找
public List<User>findAllUser(){
String sql="select * from user";
RowMapper<User> rowMapper= new BeanPropertyRowMapper<User>(User.class);
return this.jdbcTemplate.queryForObject(sql,rowMapper);
}
//测试类根据id查找数据
@Test
public void findUserByIdTest(){
ApplicationContext applicationContext=new ClassPathXmlApplication("applicationContext.xml"):
//通过id查找数据
UserDao userDao=UserDao)applicationContext。getBean("userDao";
User user =userDao.findUserById(22):
System.out.println(user);
}
//全查用户测试类
@Test
public void findAllUserTest(){
ApplicationContext applicationContext=new ClassPathXmlApplication("applicationContext.xml"):
//通过id查找数据
UserDao userDao=UserDao)applicationContext。getBean("userDao";
//查询所有用户数据
List<User>list=userDao.findAllUser();
//需换输出所有用户数据信息
forUser user:list){
System.out.println(user);
  }
}

2.2.2 Spring 事务处理(主流注解方式开发)

1.编程序事务管理:通过编写代码实现的事务管理,包括定义十五的开始,正常执行后的十五提交和异常时的事物回滚。

2.声明式事务管理:通过AOP技术实现的事务管理,将事务管理作为一个“切面”代码单独编写,通过AOP技术将事务管理的“切面”代码植入业务目标类中。

3.常用声名式事务管理,只要在配置文件进行相关的事物规则声名。(现成的,使用就好)
4.声明式事务管理一种是基于XML,一种是基于Annotation的方式(使用)。

5.基于Annotaition的事物管理方法:在spring容器中注册事务注解驱动–>在需要使用事物的spring Bean或者Bean类方法上添加注解@Transactional

//注册事物注解驱动
<tx:annotation-driven transaction-managers="transactionManager"/>

2.2.3 关于MyBatis的个人认识

1.MyBatis是支持SQL查询,存储和高级映射的持久层框架,XML或注解配置,将接口和Java中的POJO映射成数据库中的记录。(面向对象的操作–>MyBatis–>SQL操作)

2.创建POJO包下创建User持久化类,声名属性和getter/setter方法–>mapper包下面创建映射文件UserMapper.xml文件(操作数据库)–>配置mybatis-config.xml文件(jdbc和mapper位置)–>写test文件

3.通过UserMapper文件书写增删改查操作语句,在test文件中写具体方法

2.2.4 动态SQL(增删改查的个人见解)

1.<if>:判断语句,用于单条件分支判断

2.<choose>(<when>,<otherwise>):用于多条件分支判断类似switch-case-default

3.<where><trim><set>用于SQL拼装,特殊字符等问题

4.<foreach>循环语句,常用于in语句等列举条件中(用的最多)

//foreach元素的使用,它通常是使用在构建IN条件语句时使用
<select id="findUserByIds" parameterType="List" reaultType="com.ssm.po.User">
  select * from t_user where id in 
<foreach item="id" index="index" collection="list" open="("separator=","close=")">
  #{id}
</foreach>
</select>

5.<bind>用于模糊查询SQL中

2.3 SpringMVC相关知识(略)

2.3.1 什么是MVC

2.3.2 怎么进行数据绑定

2.3.3 json数据交互/RESTful支持

2.3.4 拦截器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值