OGNL 处理关联表 | 学习笔记

简介: 快速学习 OGNL 处理关联表,介绍了 OGNL 处理关联表系统机制, 以及在实际应用过程中如何使用。

开发者学堂课程【Java Web开发系列课程 - Struts2框架入门OGNL 处理关联表】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/537/detail/7324


OGNL 处理关联表

 

目录:

一.数据库与 Java 的关系

二.Vip.代码

三.User.代码

四.UserDao.代码

五.VipDao代码

六.VipService.代码

七.UserAction.代码

八.List 代码

九.用 map 方法进行修改


一、数据库与 Java 的关系

user 表和 VIP 表属于多对一的关系多个 user 对应一个 vip 等级,外键关系的建立不影响 Java 查询,两者的关系只是一个数据库的关系。

image.png

 

二.Vip.代码

Package cn.sxt.entity

public class Vip{

private int id;

private String name;

public Vip(){

}

public Vip(int id,String name){

super();

this.id=id;

this.name=name;

}

public int getId(){

return id;

}

 

三.User.代码

public class User{

private int id;

private String name;

private String pwd;

private int vipId;

Private vip vip;

public User(){

}

Public User(int id,String name,String pwd,int vipId){

super();

this.id=id;

this.name=name;

this.pwd=pwd;

this.vipId=vipId;

}

Public User(int id,String name,String pwd,int vipId){

super();

this.id=id;

this.name=name;

this.pwd=pwd;

this.vipId=vipId;

}

Public User(int id,String name,String pwd){

super();

this.id=id;

public int getId(){

return id;

}

public void setId(int id){

this.id=id;

Public String getName(){

this.name=name;

Public String getpwd(){

return pwd;

Public void setPwd(String pwd){

this.pwd=pwd;

 

四.UserDao.代码

查询多一列:list.add(new User(rs.getInt(1),rs.getstring(2),rs.getstring(3),rs.getint(4)));

 

五.VipDao 代码

Package cn.sxt.dao;

import java.sql.resultset.

import java.util.ArrayList;

import java.util.List;

import cn.sxt.entity.Vip;

Public class VipDao extends BaseDao{

Public List getList(){

String sql=“select*from t vip”;

Listlist=new ArrayList();

ResultSet rs=this.executeQuery(sql);

While(rs.next()){

list.add(new Vip(rs.getInt(1),rs.getString(2));

catch(SQLException e)

// TODO Auto-generated catch block

e.printStackTrace();

}finally{

this.close();

return list.size()>0?list:null;

Public Map getMap(){

String sql=“select*from t vip”;

Mapmap=new HashMap();

ResultSet rs=this.executeQuery(sql);

While(rs.next()){

map.put(rs.getInt(1),rs.getString(2));

}catch(SQLException e){

// TODO Auto-generated catch block

e.printStackTrace();

finally{

this.close();

return map.size()>0?map:null;

 

六.VipService.代码

Package cn.sxt.service;

import java.util.List;

import java.util.Map;

import cn.sxt.dao.VipDao;

import cn.sxt.entity.Vip;

Public class VipService{

private VipDao vipDao=new VipDao();

Public List getList(){

return vipDao.getList();

public Map getMap(){

return vipDao.getMap();

 

七.UserAction.代码

package cn.sxt.action;import java.util.List;public class UserAction private User user;private List list; private List vip List;private UserService userService = new UserService();

Private vipservice vipservice =new vipservice();

//登录public String login()User temp=userService.login(user);if(temp!=null)//list = userService.getList();return Action.SUCCESS;
//根据 id 查询然后跳特到 update.jsppublic String toUpdate()[user = userService. getById(user.getId());returnAction.SUCCESS;
//更新用户public String update()intresult=userService.update(user)

if(result>0)return Action. sUCCESS;lrLr'esull=user'ser'vice.upuale(user');

if(result>0){return Action.SUCCESS;public User getUser() return user;public void setUser(User user) this.user = user;public List getList() return list;public void setList(List list) this.list = list;
//获取用户列表public String list()list=userService.getList();

vipList=vipService.getList();

map = vipseryice.getMap(;

return Action.SUCCESS;

 

八.List 代码

<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"

%><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+reql6 %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><base href= "<%=basePath%>"><title>My JSP 'index.jsp'starting page</title><meta http-equiv= "pragma" content= "no-cache"><table width= "80%" align= "center"<tr>

<td>编号</td〉<td>姓名</td><td>密码</td〉<td>会员等级</td><td>操作</td〉</tr><c:forEach items="${list }”var="bean">

<tr><s:iterator value="List"><tr><td><s:property value="#bean.Id"/></td><td><s:property value="#bean.name"/></td><td><s:property value="#bean.pwd"/></td><td><a href= "toUpdateuser.id=<s:property value="id"/>">修改</a></td></tr>

<s:iterator value="vipList"><s:if test="#bean.vipId==id"><s:property value="name"/ >

<s : property value= "map[ #bean. vipId].value" / ></s:if></s:iterator></table></body>

运行结果

image.png


九.用 map 方法进行修改

(1)修改 UserAction 代码

public class UserAction private User user;private List<User> list;private List<Vip> vipList;private Map<Integer,string> map;private UserService userService = newUserService();

private VipService vipService = newVipService();
//获取用户列表public String list()list = userService.getList();//vipList=vipService.getList();

map = vipService.getMap();return Action.SUCCESS;

2修改 List 代码

<%--<s:iterator value="vipList"><s:if test="#bean.vipId==id"><s:property value= "name"/></s:if></s: iterator>--%><s:property value= "map[#bean.vipId]"/>

(3)修改 update 代码
名:

<input type="text"name="user.name"value=”<s:property value="<s:property value= "user.name"/>"/><br>

密码:

<input type="password"name="user.pwd"value="<s:property value="<s:property value= "user.pwd"/ >'/><br)
会员等级:

<select name="user.vipId"<s:iterator value="map"><option<s:if  test="user.vipId==key">selected</s:if>value"<s:propertyvalue="key"/>"><s:property value "key"/>"><s:property value"</s:iterator></select><br>
运行结果

image.png

相关文章
|
2月前
|
SQL XML Java
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
文章介绍了MyBatis中高级查询的一对多和多对一映射处理,包括创建数据库表、抽象对应的实体类、使用resultMap中的association和collection标签进行映射处理,以及如何实现级联查询和分步查询。此外,还补充了延迟加载的设置和用法。
mybatis复习04高级查询 一对多,多对一的映射处理,collection和association标签的使用
|
Java 数据库连接 mybatis
MyBatis中对象映射关联之association使用实践
MyBatis中对象映射关联之association使用实践
486 1
|
6月前
|
存储 JSON 移动开发
flowable38张表含义说明以及一些操作指南
flowable38张表含义说明以及一些操作指南
734 0
|
6月前
|
数据库
MybatisPlus属性字段为数据库关键字
MybatisPlus属性字段为数据库关键字
105 0
|
Java 数据库连接 mybatis
Mybatis中对象映射关联之collection使用
Mybatis中对象映射关联之collection使用
200 0
|
SQL Java 数据库连接
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
489 0
|
SQL 数据库 C++
Jimmer VS MyBatisPlus查询自关联表
对象抓取器是 jimmer-sql 一个非常强大的特征,具备可媲美 GraphQL 的能力。 即使用户不采用任何 GraphQL 相关的技术栈,也能在 SQL 查询层面得到和 GraphQL 相似的对象图查询能力。
94 0
|
SQL Oracle Java
OR-Mapping 设计改进(结果集元数据) | 学习笔记
简介:快速学习 OR-Mapping 设计改进(结果集元数据)
|
数据库
automapper如何全局配置map条件过滤null值空值对所有映射起效
原文 automapper如何全局配置map条件过滤null值空值对所有映射起效 我们在使用automapper的时候经常会遇到这样的问题:假设展示给用户的数据我们用UserDto类,User类就是我们的实体类。
1520 0
|
SQL Java 数据库连接
Hibernate中执行NativeSQL语句查询返回自定义类型的POJO实例的List(多表查询)
Hibernate中定义了hql的概念,简单地说就是,为java的码农提供了一套类似于sql的语法,但是数据表名变成了PO名,数据字段名变成了PO中属性成员名,并把这种语法称为hql。优点就是:hql看上去是面向对象的,码农不需要知道数据库中数据表的结构,只需要依据PO编写面向对象的数据库增删改查的语句。
4165 0