SSM项目日常之查询操作

                    SSM项目日常之查询操作

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

开发工具与关键技术:IntelliJ IDEA java

作者:刘剑鸿

撰写时间:2021/5.99

在日常实际项目开发中,经常会用到需要两张表或多张表中的数据处理。例如:联表查询,多表新增、多表修改

下面介绍的是在ssm项目中的简单的一个多表查询Demo

首先理解这三种不同的javabean,首先要理解java分层思想中的Controller+Service +Dao三层的功能划分。

这三层的功能分别为:

Controller 用来处理业务(Service)调度和管理跳转。执行的过程为:引用对应的Service层,结合SpringMVC注释,跳转到指定的页面,当然也能接受页面传递的请求数据,也可以做些计算处理.

Service: 用来管理具体功能。执行的过程为:引用对应的dao层的数据库操作。

Dao: 只完成数据库的增删改查,可以1对多,多对多,一对一(多对一)关联,模糊,动态,子查询。但是无论多么复杂的查询,dao只负责封装增删改查。对于具体如何增删改查,dao层是不管的。

了解了这三层的执行流程后,就可以分别对应理解vo,bo,pojo三者之间的关系:

下面是我将要介绍多表之间的数据结构

 图中:contract表为主表,其他都为副表。

pojo中也是简单的把要查询的字段写出来

public class Contract {
   
private int contractId;
   
private int contractDetailId;
   
private int estateId;
   
private int pay_wayId;
   
private String contractname;
   
private String period_begin;
   
private String period_finish;
   
private String estatename;
   
private String pay_wayname;
   
public Contract() {
        
super();
    }
   
}

有参无参构造方法,tosting方法、gettersetter的方法我就省略不写了。

我的思路是在打开查询页面就触发该查询方法。所以控制器写法为:

@RequestMapping("/contractview")
public String contractview(Model model){
   
List<Contract> list = userService.SelectAllCon();
    model.addAttribute(
"contract",list);
   
return "contractview";//
}

@RequestMapping("/contractview")这个是注解

List<Contract> list = userService.SelectAllCon();这个将要Service层的执行方法

return "contractview";//将要返回的视图

Service层:

public interface UserService {

List<User> SelectAll();

}

Impl层:

public class UserServiceImpl implements UserService {

public List<User> SelectAll() {
   
return userMapper.SelectAll();
}

}

一般还要有其他的复杂的操作写法都是出现在这里,不过本次只是简单的查询

Dao层:public interface UserMapper {

List<User> SelectAll();

}

Xml层的SQL语句:

<select id="SelectAll" resultType="Contract">
 SELECT
contract.contractId,contract.contractDetailId,contract.estateId, contract.pay_wayId,contractname, period_begin,period_finish,estatename, pay_wayname
    FROM
    contract inner join contractdetail on contract.contractDetailId =       contractdetail.contractDetailId
     inner join estate on contract.estateId = estate.estateid
     inner join pay_way on contract.pay_wayId = pay_way.pay_wayId;
</
select>

当处理较为复杂的数据时,应该根据情况选择处理的方法,不管是多表联查还是分别查询,争取用最简单的方法将问题得到解决。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值