SSM案例小Demo/Spring框架注解开发(第十三课)

简介: SSM案例小Demo/Spring框架注解开发(第十三课)

SSM案例利用Spring框架技术连接数据库对数据库进行查序操作(第十三课)本案例采用的是Spring注解开发的

回顾SSM开发流程:

Mvc三层架构增删改查执行流程


在构建一个Java web项目中。比如我以学生表为例子.对学生表的数据进行增删改查如何进行呀。


前端技术与服务器数据交互技术:离不开前端访问服务器的数据


在这里我们学了两种方案。方案一利用上个学Servlect+jsp页面编程技术.


方案二利用这个学期所学AJax+JSON+HTMl.在HTML中有包含这些内容HTML+JavaScript+AJax+jQuery+JSON


.jQuery中包含选择器 事件 效果 在对单张表的增删改查中最难理解


是修改因为他要步骤最多。

@1修改功能

首先第一部要获得你要修改那一条数据的id

第二步你要用jQuery的属性选择器将数据显示在页面上


第三步 你要将修改后的页面数据信息发回到服务器 经历MVC 三层架构 将修改后上,信息在数据库中更新


第四步将更新后的数据刷新到页面上查看。


总结遇到修改不用慌


先分清楚流程是什么 利用的技术是 Ajax+JSON解析。当我要修改的的记录编号ID 为1001001 时候


首先浏览器要将ID编号发送给服务器 在控制层中


将浏览器发过来的ID等于1001001接收


利用的是resquest 对象 然后将ID 参数发送到 业务逻辑层 在到数据访问层


为了更好的理解一般是从数据访问层的接口中定义方法


Map getInfoStudentById(int id);


在数据反问层实现类中实现


DBUtil.jt.queryForMap("select * from student where id=?", new Object[]{id});}


这里数据反问层使用的方案是


Ajax+Json+Mvc+JdbcTemplate+Servlect+Html+JavaScript+Jquery+Mysql


同理在业务实现类的接口


Map getInfoStudentById(int id);


在业务逻辑层接口的实现类中实现。


在控制层中调用以下方法


Map infoStudentById = service.getInfoStudentById(Integer.parseInt(id));


//我要获得 年龄 姓名 电话 地址


List<String> age = service.getAge();
List<String> name = service.getName();
List<String> phone = service.getPhone();
List<String> address = service.getAddress();


第二步步分上面的数据利用什么方式封装起来


Map<String, Object> map = new HashMap<>();
map.put("infoStudentById", infoStudentById);
map.put("age", age);
map.put("name", name);
map.put("phone", phone);
map.put("address", address);
new ObjectMapper().writeValue(response.getWriter(), map);


比如在浏览器中要在input标签中显示性别 年龄如何实现呢!


$("input[name=age]").val(json.infoStudentById.age)//将数据库中的年龄展示在页面中
(json.infoStudentById.sex = "男") {
$("input[value='男']").attr("checked", true)
} else {
$("input[value='女']").attr("checked", true)
}


用户单机修改按钮将修改后的数据发送到数据库中去步骤

浏览器中页面完成修改后数据库也要更新


因此根据MVC三层架构思想


控制器要接收到浏览器要修改的页面数据信息


在控制层的第一步


Map<String, String[]> parameterMap = request.getParameterMap();
String id = (String) request.getSession().getAttribute("id");

接下来从数据访问层的接口中定义方法


int updateStudent(Map<String, Object> map);


同理在业务逻辑层中的接口中写下以下方法


int updateStudent(Map<String, Object> map);


最终控制器回执行下面的内容


i

nt student = service.updateStudent(parameterMap, Integer.parseInt(id));
if(student>0){
System.out.println("恭喜用户修改信息已完成");
response.sendRedirect("workList1.html");
}


最后修改页面完成。仔细分析发现也不是那么难吧!🤗


运用到的知识

到了服务器中:在服务器中要构建三层. 方案一:在构建这三层种你可以利用普通的Java方式构建三层。方案二:使用框架的方式构建三层. 在控制层中你可以使用方案一:使用Servlect 方案二使用springMVC框架。在这里你有两种方案。1 配置文件的方式 方案2 利用注解的方式


在业务逻辑逻辑层 创建对象使用spring框架。spring中分为好多模块利用bean管理。在spring框架中你可以使用IOc三种方案 1 配置文件的注入 2 注解的方式注入 3 不需要配置文件注入 建立一个工具类使用注解的方式


在数据反问层中你可以使用的是MyBatis框架。在数据访问层中正对MyBatis框架有三种方案。方案一利用配置文件注入。方案二利用 配置文件注入加接口文件的方式。方案三利用MyBats注解的方式。


在写Java web项目的过程中首先用到的数据库中的知识创建数据库创建数据库的表格。


在idea中新建项目 导入必备的SSM架包 配置资源文件的信息 配置web-xml文件信息。


第一个功能 查询数据库中所有数据信息。


首先从数据库将SQL语句写好 select * from student


然后分析查到的数据利用什么方式存放起来呢!


在此之前要建立好三个包 分别是控制层的 实现类 业务逻辑层的接口和实现类 再是数据反问层的接口和实现类 如果数据反问层使用的MyBats注解的方式只需写个接口文件。

@2查询功能

在查询的数据库中的表中肯定是多条记录 每个条记录中有多个字段 因此使用Java存放的方式是

在这里我使用的是MVC三层架构的普通方式介绍


因此你要在数据反问层的接口中定义方法


List<Map<String, Object>> getStudentList();}或者是List<Student,student>gestudentList();}


同理在业务逻辑思层中:


List<Map<String, Object>> getStudentList();}或者是List<Student,student>gestudentList();}


那么如何将控制层 业务逻辑层 数据反问层 连接起来呢!


在控制层中: ITeacherService service = new TeacherServiceImp();


在业务逻辑层中


ITeacherDao dao=new TeacherDaoImp();


然后层层返回 到控制层


List<Map<String, Object>> teacherList = service.getTeacherList();
Map<String, Object> map = new HashMap<>();
map.put("list", teacherList);
new ObjectMapper().writeValue(response.getWriter(), map);


发到HTML页面进行JSON解析。


JSON解析后会将数据展示在页面。

@3删除功能

写出SQL语句


delete from emp where id=?


分析SQL语句在Java中利用什么方式存放起来的


在增删改中返回值为int类型值。删除是根据编号删除的因此控制器要将浏览器发来的ID接收 利用是是resquest对象


在控制层调用业务逻辑层的方法利用。


IEmpService service=new EmpServiceImp()


同理在业务逻辑层是实现类中


IEmpDao dao = new EmpDaoImp();


在业务逻辑层接口中定义方法利用int del(int Id)


同理在数据访问层接口中定义方法


int del(int Id)
int delete service.delete(ids);if(delete>0){response.sendRedirect("workList.html"); }


利用重定向的方式

@4增加一条数据库记录

SQL语句当我点击按钮跳转到一个新的页面用于增加数据的信息。

当用户增加成功要进行页面的查询操作。


insert into emp values(?,?,?,?,?,?)",


返回值为int类型 在没条记录中但对应的属性和值。


在业务逻辑层接口中定义方法 int add(Map map);


同理在数据访问层


int add(Map map);


在控制层中


Map<String, String[]> parameterMap = request.getParameterMap();
int add = service.add(parameterMap);
if (add > 0) {
//添加成功,跳回主页面
response.sendRedirect("index.html");
}

利用SSM框架对数据库中的数据查询操作

 

第一步 建立起数据库 建立起数据库中的表

如图所示建立起数据库的表


第二步建立起工具类 用来连接数据库用的

package Com.Teacher.Utils;
public interface IDBUtil {
    void init();
}
package Com.Teacher.Utils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.sql.Connection;
import java.sql.DriverManager;
/**
 * 创建工具类信息
 */
@Component(value="db")
public class DBUtil  implements  IDBUtil{
    @Value("com.mysql.cj.jdbc.Driver")
    private String driver;//连接数据库的驱动程序
    @Value("jdbc:mysql://localhost:3306/mdb?useUnicode=true&characterEncoding=UTF-8")
    private String url;//访问数据库的地址
    @Value("root")
    private String username;//登录数据库的用户名
    @Value("123456")
    private String password;//登录数据库的密码
    public Connection connection=null;
    @PostConstruct
    public void init(){
        //加载驱动程序
        try {
            Class.forName(driver);
            //开始连接数据,获得connection对象
            connection = DriverManager.getConnection(url, username, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上面有些方法没有写 在我们学习Spring框架开发中 这里不使用配置文件 利用一个类来实现

package Com.Teacher.Utils;
public interface ITeacherSpingUtil {
    void  TeacherSpingUtil();
}
package Com.Teacher.Utils;
import org.junit.Test;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScan("Com.Teacher")
public class TeacherSpingUtil implements  ITeacherSpingUtil {
    @Test
    public  void TeacherSpingUtil(){
        System.out.println("调用Sping接口");
    }
}

如图所示建立起SSM中常用的三层架构

实体类

public class Teacher {
    private  int id;
    private  String name;
    private  int  phone;
    private  int money;
    private  Object date;
}

Dao层

package Com.Teacher.Dao;
import java.util.List;
import java.util.Map;
public interface ITeacherDao {
    List<Map<String,Object>> All();
    void X();
}
package Com.Teacher.Dao;
import Com.Teacher.Utils.DBUtil;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/*从这个类中访问数据库的内容对数据进行增删改查*/
@Repository(value = "dao")
public class TeacherDaoImp  implements ITeacherDao {
    @Autowired
    DBUtil db;
    @Override
    public List<Map<String, Object>> All() {
        List<Map<String, Object>> oList = new ArrayList<>();
        //判断连接数据库是否成功
        if (db.connection!= null) {
            String sql = "SELECT *FROM teacher";
            try {
                PreparedStatement ps = db.connection.prepareStatement(sql);
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    //int id = rs.getInt("id");
                    int id=rs.getInt("id");
                    String name=rs.getString("name");
                    int phone=rs.getInt("phone");
                    int money=rs.getInt("money");
                    String date=rs.getString("date");
                    Map<String, Object> oMap = new HashMap<>();
                   // oMap.put("id", id);
                    oMap.put("id",id);
                    oMap.put("name",name);
                    oMap.put("phone",phone);
                    oMap.put("money",money);
                    oMap.put("date",date);
                    oList.add(oMap);
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        return oList;
    }
    @Test
    @Override
    public void X() {
        System.out.println("开始调用数据库dao层");
    }
}

Servlect层

package Com.Teacher.Servlect;
import java.util.List;
import java.util.Map;
public interface ITeacherServlect {
    List<Map<String,Object>> All();
    void X();
}
package Com.Teacher.Servlect;
import Com.Teacher.Dao.ITeacherDao;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
@Service(value = "service")
public class TeacherServlectImp  implements  ITeacherServlect{
    @Autowired
    ITeacherDao dao;
    @Override
    public List<Map<String, Object>> All() {
        return dao.All();
    }
    @Test
    @Override
    public void X() {
        System.out.println("开始调用Servlect层对象");
    }
}

Controller层

package Com.Teacher.Controller;
import java.util.List;
import java.util.Map;
public interface ITeacherController {
    List<Map<String,Object>> All();
    void X();
}
package Com.Teacher.Controller;
import Com.Teacher.Servlect.ITeacherServlect;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import java.util.List;
import java.util.Map;
/*控制层调到测试层中*/
@Controller(value = "controller")
public class TeacherController implements  ITeacherController {
    @Autowired
    ITeacherServlect servlect;
    public List<Map<String,Object>> All(){
        return  servlect.All();
    }
    @Override
    public void X() {
        System.out.println("开始调用控制层对象");
    }
}

Test测试类

package Com.Teacher.Test;
public interface TeacherTesstImp {
    void one();
    void X();
}
package Com.Teacher.Test;
import Com.Teacher.Controller.TeacherController;
import Com.Teacher.Utils.TeacherSpingUtil;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
public class TeacherTesst   implements  TeacherTesstImp{
    @Test
    public void one() {
        ApplicationContext ac = new AnnotationConfigApplicationContext(TeacherSpingUtil.class);
        TeacherController controller = ac.getBean("controller",TeacherController.class);
        controller.All().forEach(map-> System.out.println(map));
    }
    @Test
    @Override
    public void X() {
        System.out.println("调用成功");
    }
}

运行结果

这里采用了注解的方式开发 下面的博客会讲到 这个案例让你了解一下框架的的方便

相关文章
|
4月前
|
Java 数据库连接 Maven
手把手教你如何搭建SSM框架、图书商城系统案例
这篇文章是关于如何搭建SSM框架以及实现一个图书商城系统的详细教程,包括了项目的配置文件整合、依赖管理、项目结构和运行效果展示,并提供了GitHub源码链接。
手把手教你如何搭建SSM框架、图书商城系统案例
|
1月前
|
前端开发 Oracle 关系型数据库
关于使用SSM+JSP开发时setter、getter隐式调用问题的小结
本文主要分享了在使用SSM+JSP进行网站开发时,因忽视setter、getter的隐式调用问题而导致的常见bug及其解决方法。详细介绍了setter和getter的隐式调用时机,并给出了具体示例,帮助开发者避免类似问题。
44 11
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
4月前
|
Java 数据库连接 Maven
SSM框架整合图书管理项目
这篇文章是关于SSM框架整合到图书管理项目的详细教程,涵盖了从Maven项目构建、依赖导入、数据库连接、配置文件编写、实体类和接口实现到SpringMVC整合的完整步骤。
SSM框架整合图书管理项目
|
3月前
|
XML Java 数据库连接
如何搭建SSM框架、图书商城系统
这是一份详尽的《Spring + SpringMVC + Mybatis 整合指南》,作者耗时良久整理出约五万字的内容,现已经全部笔记公开。此文档详细地介绍了如何搭建与整合SSM框架,具体步骤包括创建Maven项目、添加web骨架、配置pom文件以及整合Spring、SpringMVC和Mybatis等。无论是对初学者还是有一定基础的开发者来说,都是很好的学习资源。此外,作者还提供了项目源码的GitHub链接,方便读者实践。虽然当前主流推荐学习SpringBoot,但了解SSM框架仍然是不可或缺的基础。
50 0
|
4月前
|
Java 数据库
使用ssm框架搭建的图书管理系统
本文介绍了使用SSM框架搭建的图书管理系统,包括图书信息管理、借阅记录管理、公告管理、出入库管理以及用户管理等功能。
使用ssm框架搭建的图书管理系统
|
4月前
|
Java Spring
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
【Azure 应用服务】记一次Azure Spring Cloud 的部署错误 (az spring-cloud app deploy -g dev -s testdemo -n demo -p ./hellospring-0.0.1-SNAPSHOT.jar --->>> Failed to wait for deployment instances to be ready)
|
6月前
|
Java
SSM框架Controller层可以做什么
SSM框架Controller层可以做什么
|
3月前
|
Java 应用服务中间件 数据库连接
ssm项目整合,简单的用户管理系统
文章介绍了一个使用SSM框架(Spring、SpringMVC、MyBatis)构建的简单用户管理系统的整合过程,包括项目搭建、数据库配置、各层代码实现以及视图展示。
ssm项目整合,简单的用户管理系统
|
6月前
|
前端开发 JavaScript Java
计算机Java项目|SSM智能仓储系统
计算机Java项目|SSM智能仓储系统
下一篇
DataWorks