JDBC实例2 关于分包下不同表实体类的外键类型转换

对于同时操作多个表的情况下 比如同时联合查询 那么会涉及到某些表中存在外键 该外键在一个表中却是另外一个类型的参数 那么就需要进行类型转换 比如在SRC目录下新一个新包 该包下的class文件实际上和entity下的表实体类一样 都是参数的getter和setter方法以及相关的带参数的构造函数 用这种方法来进行类型转换 如下例子 学生和年级两个实体类 但是在学生表中参数年级Grade 却是grade类型的 所以一种方法可以在service中讲grade封装在Grade类中 再将其中的需要的参数遍历进学生类中 同时注意 在new Grade类的时候 要放在遍历函数while(rs.next())之外 不然的话 只会出现与搜速出的数据条目相等的同一结果 同时得到的数个结果 而且数个结果都将和最后一个结果的内容相同

dao包下的grade

package com.cissst.entity;

public class Grade {
    private Integer id;
    private String gradeNumber;
    private String gradeName;
    private String creatTime;
    private String gradeDesc;
    private String remark;

    public Grade(String gradeNumber, String gradeName,
            String creatTime, String gradeDesc, String remark) {
        this.gradeNumber = gradeNumber;
        this.gradeName = gradeName;
        this.creatTime = creatTime;
        this.gradeDesc = gradeDesc;
        this.remark = remark;
    }

    public Grade() {

    }

    public Integer getId() {
        return id;
    }

    public String getGradeNumber() {
        return gradeNumber;
    }
    public void setGradeNumber(String gradeNumber) {
        this.gradeNumber = gradeNumber;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getGradeName() {
        return gradeName;
    }
    public void setGradeName(String gradeName) {
        this.gradeName = gradeName;
    }
    public String getCreatTime() {
        return creatTime;
    }
    public void setCreatTime(String creatTime) {
        this.creatTime = creatTime;
    }
    public String getGradeDesc() {
        return gradeDesc;
    }
    public void setGradeDesc(String gradeDesc) {
        this.gradeDesc = gradeDesc;
    }
    public String getRemark() {
        return remark;
    }
    public void setRemark(String remark) {
        this.remark = remark;
    }

}

dao包下的student

package com.cissst.entity;

public class Student {

    private int id;
    private String stuName;
    private Grade grade;//此处为grade类型
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getStuName() {
        return stuName;
    }
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
    public Grade getGrade() {
        return grade;
    }
    public void setGrade(Grade grade) {
        this.grade = grade;
    }
    public Student(String stuName, Grade grade) {
        super();
        this.stuName = stuName;
        this.grade = grade;
    }

    public Student() {
        super();

    }

}

新建转换student的类response包

package com.cissst.response;

public class StudentResponse {

    private Integer id;
    private String stuName;
    private String gradeName;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getStuName() {
        return stuName;
    }
    public void setStuName(String stuName) {
        this.stuName = stuName;
    }
    public String getGradeName() {
        return gradeName;
    }
    public void setGradeName(String gradeName) {
        this.gradeName = gradeName;
    }

}

通过转换类在后台进行数据类型转换

package com.cissst.servlet;

import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.cissst.entity.Grade;
import com.cissst.entity.Student;
import com.cissst.response.StudentResponse;
import com.cissst.service.BaseService;
import com.cissst.service.BaseServiceImpI;
import com.cissst.utils.CommUtils;
import com.google.gson.Gson;
public class BaseServlet extends HttpServlet {
    private BaseService baseService=new  BaseServiceImpI();


    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        this.doPost(req,resp);
    }


    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        String method=req.getParameter("m");
        if("login".equals(method)){
            String username=req.getParameter("username");
            String email=req.getParameter("email");
            if(baseService.login(username,email)){
                resp.getWriter().print("true");
            }else{
                resp.getWriter().print("false");
            }
        }else if("findWithPage".equals(method)){
            List<Grade>list=baseService.findWithPage(Integer.parseInt(req.getParameter("page")),
                    Integer.parseInt(req.getParameter("rows")),req.getParameter("gnumber"),req.getParameter("gname"));
            Map<String,Object>map=new HashMap<String,Object>();
            map.put("rows", list);//传递的数据
            map.put("total", baseService.getCount());

            resp.getWriter().print(new Gson().toJson(map));
        }else if("saveGradeInfo".equals(method)){
            Grade grade=new Grade(CommUtils.getGradeNumber(), req.getParameter("gName"),
                    req.getParameter("creatTime"), req.getParameter("gDesc"), req.getParameter("remark"));
            resp.getWriter().print(baseService.saveGradeInfo(grade));

        }else if("deleteGradeInfo".equals(method)){
            String ids[]= req.getParameterValues("gids[]");
            int count=0;
            if(ids.length>0){
                for(String id: ids){
                    baseService.deleteGradeInfo(Integer.parseInt(id));
                    count++;
                }
                resp.getWriter().print(count);
            }

        }else if("findGradeInfoById".equals(method)){
            String fId=req.getParameter("fId");
            resp.getWriter().print(new Gson().toJson(baseService.getGradeInfo(Integer.parseInt(fId))));

        }else if("updateGradeInfo".equals(method)){
            Grade grade=new Grade(req.getParameter("gradeNumber"), req.getParameter("gradeName"),
                    req.getParameter("creatTime"), req.getParameter("gradeDesc"), req.getParameter("remark"));
            resp.getWriter().print(baseService.updateGradeInfo(grade));
        }else if("findStudentWithPage".equals(method)){
            List<Student>listStudent=baseService.findStudentWithPage(0, 10, null, null);
            List<StudentResponse>studentResponseList=new ArrayList<StudentResponse>();
            for(Student stu:listStudent){
                StudentResponse studentResponse=new StudentResponse();
                studentResponse.setId(stu.getId());
                studentResponse.setStuName(stu.getStuName());
                studentResponse.setGradeName(stu.getGrade().getGradeName());
                studentResponseList.add(studentResponse);
            }
            resp.getWriter().print(new Gson().toJson(studentResponseList));
        }else if("findGradeAllInfo".equals(method)){
            resp.getWriter().print(new Gson().toJson(baseService.findGradeAllInfo()));
        }else if("saveStudentInfo".equals(method)){

            Student student=new Student();
            Grade grade=new Grade();
            grade.setId(Integer.parseInt(req.getParameter("gradeId")));
            student.setStuName(req.getParameter("stuName"));
            student.setGrade(grade);
            resp.getWriter().print(baseService.saveStudent(student));
        }
        resp.getWriter().flush();
        resp.getWriter().close();
    }


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值