ningbaoer

导航

SSM三层架构流程总结

1.搭环境
webapp\WEB-INF\web.xml
pom 里面激活webapp <packaging>war</packaging>

将pom坐标复制
web.xml 复制进去
配置文件resources 目录 引入

applicationContext.xml
jdbc.properties
log4j.properties
spring-mvc.xml

2.创建实体类层
com.msr.bean
实体类.class 命名规则 驼峰命名法 记住每个单词首字母大写


3.创建三层
3.1dao层 引入框架Mybatis 后 改名字 为 mapper
所以此处创建包 为 mapper


3.2服务层 service层
3.3控制层 controller层

4.开始写后台开发程序

4.1首先写 实体类 要和mysql数据库的表明一样
有一样的属性 属性名和mysql表中的属性名字 要一致
写完属性要用快捷键生成 toString getandset 和 构造器Constructor 这里包含全参加 和空参


4.2 开始写dao层
也就是mapper 这里开始使用Mybatis框架来实现

首先接口
实体类名字+Mapper

之后接口内 进行函数的直接写
//1.查询账户信心
public List<Account> findAll();

//2.新增
public void saveAccount(Account account);

接口内函数完成 创建对应接口的xml文件
其中命名空间名字 是对应接口的全类名


<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--namespace 命名空间名-->

<mapper namespace="com.msr.mapper.AccountMapper">

<!--
id: 唯一标识符 方法名字
parameterType 参数类型
resultType 单表 结果类型返回类型
resultMap 多表 结果类型返回类型
-->

<!-- 查询 public List<User> findAll();-->
<select id="findAll" resultType="user" >
select * from user
</select>

<!--根据ID来查询 精确查询
public User findUserById(int id);

-->
<select id="findUserById" parameterType="int" resultType="user">
select * from user where id=#{id}
</select>


<!-- 模糊查询
public List<User> findAllLinkName();
-->
<select id="findAllLinkName" parameterType="String" resultType="user">
select * from user where username like '%${value}%'
</select>

<!--增加
public void addUser();
-->

<insert id="addUser" parameterType="user" keyProperty="id" useGeneratedKeys="true">
insert into user values (null,#{username},#{password})
</insert>

<!--删除
public void delUser(int id);
-->
<delete id="delUser" parameterType="int" >
delete from user where id=#{id}
</delete>

<!--修改用户
public void updataUser(User user);
-->
<update id="updataUser" parameterType="user" >
update user set username=#{username},password=#{password} where id=#{id}
</update>

 


</mapper>


5.开始编写service层
这里采用接口和实现类 完成
接口函数与mapper接口内函数一致

实现类 切记
@Service

因为servie要调用Mapper层

所以引入 下面为引入 所有的引入都需要注解 @Autowired

@Autowired
private AccountMapper accountMapper;
实现类 完成父类函数的重写
有返回的调用Mapper层的函数
没有返回的也调用Mapper层的函数

 

 

6.这里开始写最后的控制层 Controller

控制层主函数要加入注解 RequestMapping内为实体类名字小写
@Controller
@RequestMapping("/account")

Controller层调用Service
所以也需要引入
@Autowired
private AccountService accountService;

然后开始写查询
@RequestMapping("/findAll") 这里是路径映射 必须写
public String findAll(Model model){
List<Account> accountList = accountService.findAll();
model.addAttribute("accountList",accountList);
return "accountList";
}
写道这里 开始进行 测试 我们访问的路径为
localhost:8080\account\findAll 这里需要理解 后两个 是 控制层的类的映射路径 和函数映射路径


查询之后的保存 跳转 我们在安全目录下 不能跳转 只能走控制层 进行跳转
<h1><a href="/account/toSavePage">保存账户信息表单</a></h1>

上面就是点保存后的跳转 所以 我们需要进行控制层的编写

//toSavePage
//跳转到新增页面
@RequestMapping("/toSavePage")
public String toSavePage( ){
return "accountSave";
}

上面的属于 服务端的跳转 切记 !!!! 这里利用了路径的映射
return的跳转 因为有了Spring配置文件的内部资源视图解析器
前后的路径进行了省略 详情看spring的配置文件

新增页面填写好
填写内容后 请求转发到 查询页面
我们应该还是采用 服务端的跳转 也就是 Controller层的函数跳转

@RequestMapping("/save")
public String save(Account account){
accountService.saveAccount(account);
return "redirect:/account/findAll"; //这里是请求转发 跳转主函数的映射路径下的函数查询路径
}

posted on 2023-06-16 19:30  宁宝儿  阅读(72)  评论(0编辑  收藏  举报