SSM整合(二)查询数据、添加数据

编写Dao和Service

先在domain下编写实体类Student

package com.bipowernode.domain;

public class Student {
    private Integer id;
    private String name;
    private Integer age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

在Dao包下编写StudentDao接口

package com.bipowernode.dao;

import com.bipowernode.domain.Student;

import java.util.List;

public interface StudentDao {
    int insertStudent(Student student);
    List<Student>selectStudents();
}

在Dao下写Mybatis的mapper文件,参见我的文章
IDEA项目中创建MyBatis的mapper.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" >
<mapper namespace="com.bipowernode.dao.StudentDao"><!--namespace是接口名的
全限定名称(右键 copy reference)-->
    <select id="selectStudents" resultType="com.bipowernode.domain.Student">
<!--id是接口中方法的名称  -->
<!--resultType指定查询结果的类型的全限定名称-->
<!--由于在mybatis.xml中已经配置了别名 <package name="com.bjpowernode.domain"/>
所以这里可以直接写resultType="Student"-->
    select id,name,age from student order by id desc
<!--    这里直接写的列名而不是select*,因为项目开发过程中表的结构可能会发生变化,
且节约网络流量,效率会有所提升,比如有时候表中列比较多
网络中传输的数据就很多,用到哪一列就选哪一列-->
    </select>
    <insert id="insertStudent" >
insert into student(name ,age)values(#{name},#{age})
<!--我们的insertStudent方法的参数是一个对象,我们可以用这个对象的属性名来代表实际
的参数值(对应values)-->
    </insert>
</mapper>

Service部分
先在service下写StudenService接口

package com.bipowernode.service;

import com.bipowernode.domain.Student;

import java.util.List;

public interface StudenService {
    int addStudent(Student student);
    List<Student> findtStudents();
}

在service的impl包下实现接口

package com.bipowernode.service.impl;

import com.bipowernode.dao.StudentDao;
import com.bipowernode.domain.Student;
import com.bipowernode.service.StudenService;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

@Service
//@Service创建service对象
public class StudenServiceImpl implements StudenService {
//   声明DAO
   //可以适应引用类型自动注入,@Autowired或者@Resource
    @Resource//自动注入Dao,注入之后对象studentDao的属性就有值了
    private StudentDao studentDao;

    @Override
    public int addStudent(Student student) {
//对象studentDao的属性有值之后就可以调用方法
        int nums=studentDao.insertStudent(student);

        return nums;
    }

    @Override
    public List<Student> findtStudents() {
        return studentDao.selectStudents();
    }
}

编写Controller和jsp页面

编写Controller

package com.bipowernode.controller;

import com.bipowernode.domain.Student;
import com.bipowernode.service.StudenService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import javax.annotation.Resource;

@Controller
@RequestMapping("/student")
//因为做的是学生模块,所以可以在类上加@RequestMapping("/student")
public class StudentController {
@Resource//自动注入service
    private StudenService service;//声明service
//注册学生

 @RequestMapping("/addStudent.do")
    public ModelAndView addStudent(Student student){
//这个方法得加参数,那用什么接收请求参数呢,可以逐个接收或者用对象接收
// 暂时用student来作为接收参数使用
     ModelAndView mv = new ModelAndView();
     //调用service来处理student
int nums=service.addStudent(student);
String  tips="注册失败";
if(nums>0)//注册成功
{
    tips = "学生 [" +student.getName()+"]注册成功";

}
//添加数据
mv.addObject("tips",tips);
//指定结果页面
mv.setViewName("result");
return mv;
    }
}

编写result.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
result.jsp结果页面,注册结果:${tips}
</body>
</html>

在这里插入图片描述

至此,后端基本写完了,接下来写前端jsp页面

前端index.jsp页面编写

因为自动生成的jsp没有编码规范,我们删掉重新建一个

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>功能入口</title>
</head>
<body>
<div align="center">
<p>SSM整合的例子</p>
<img src="images/ssm.jpg">
    <table>
        <tr>
           <td>注册学生</td>
        </tr>
        <tr>
            <td>浏览学生</td>
        </tr>
    </table>
</div>
</body>
</html>

运行看看
在这里插入图片描述

是不是很崩溃呢,图片显示不了

原来是一个"/"引发的血案,搞了一个多小时呢哎

<img src="images/ssm.jpg"/>

在这里插入图片描述
打卡下班,明天再来!!!!

附件

链接:https://pan.baidu.com/s/14Fib_RkqUvVw3_INBD3Myg
提取码:os27

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值