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();
    }


}
在 Entity Framework 中,可以通过以下两种方式设置实体类外键: 1. 使用数据注解 使用数据注解可以在实体类中设置外键。在需要设置外键的属性上使用 `[ForeignKey]` 特性,指定外键对应的导航属性名称或外键属性名称即可。 例如,如果有一个 `Order` 实体类和一个 `Customer` 实体类,`Order` 实体类中有一个 `CustomerId` 属性,示订单对应的客户的 ID,可以在 `Order` 实体类的 `CustomerId` 属性上使用 `[ForeignKey]` 特性设置外键: ```csharp public class Order { public int Id { get; set; } public int CustomerId { get; set; } // 导航属性 public virtual Customer Customer { get; set; } [ForeignKey("Customer")] public int CustomerId { get; set; } } ``` 2. 使用 Fluent API 使用 Fluent API 可以在数据上下文中对实体类进行配置,包括设置外键。在数据上下文的 `OnModelCreating` 方法中,可以使用 `HasOne`、`WithMany` 和 `HasForeignKey` 方法来设置实体类之间的关系和外键。 例如,如果有一个 `Order` 实体类和一个 `Customer` 实体类,`Order` 实体类中有一个 `CustomerId` 属性,示订单对应的客户的 ID,可以使用 Fluent API 在数据上下文中设置外键: ```csharp public class DataContext : DbContext { public DbSet<Order> Orders { get; set; } public DbSet<Customer> Customers { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Order>() .HasOne(o => o.Customer) .WithMany(c => c.Orders) .HasForeignKey(o => o.CustomerId); } } ``` 上述代码中,使用 `HasOne` 方法指定订单实体类的导航属性 `Customer`,使用 `WithMany` 方法指定客户实体类的导航属性 `Orders`,使用 `HasForeignKey` 方法指定外键属性 `CustomerId`。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值