java给复选框赋值_【Java Web】列名多选表的0、1赋值

博客介绍了如何在Java Web应用中处理多选框的值,将其与数据库表列名对应,实现0、1赋值。用户选择的多选项在后台被转换为0或1的整数数组,对应数据库中相应列的值。文章提到了注意事项,包括name属性与列名的匹配,以及如何使用方法`getColumnsValueByTableName`处理数据。
摘要由CSDN通过智能技术生成

前台部分代码:

多选项:

First  

Second  

Third  

Fourth  

Firth

数据库 T_TABLE 表结构:

列名

类型

长度

小数点

不是null

主键

TABLE_ID

int

11

0

1

TABLE_COLUMN_FIRST

int

1

0

TABLE_COLUMN_SECOND

int

1

0

TABLE_COLUMN_THIRD

int

1

0

TABLE_COLUMN_FOURTH

int

1

0

TABLE_COLUMN_FIRTH

int

1

0

需求说明:

选中多选项,选中的项在数据库中赋值为1,否则为0。

注意事项:

1. input 或者 select 的 name 的值使用“.trim().toLowerCase()”后与表的列名使用“.trim().toLowerCase()”后必须相同,如列名“TABLE_COLUMN_FIRST”和 name 值"table_column_first"。

2. 后台获取到的前台多选项数据格式如果为“String, String, String, ……”,可使用“String.split(",")”后再调用“getColumnsValueByTableName”方法,或者重写“getColumnsValueByTableName”方法,更换参数 String 数组为 String 字符串,将此操作放在方法中执行。

3. 调用方法后返回 int 数组,就可以从中取值(例如“columnsInts[0]”)并进行添加操作了

代码实现:

package com.duanluan.Util;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.ArrayList;

import org.hibernate.Session;

import org.hibernate.cfg.Configuration;

/**

* 数据库操作类

*

* @author 断乱

*/

public class DatabaseOperation {

/**

* 列名多选表的0、1赋值

* @param tableName

* 表名

* @param columnsStrings

* 从前台传递过来的多选 Value String 数组

* @return 赋值之后的0、1 int 数组

* @throws Exception

*

* @author 断乱

*/

public static int[] getColumnsValueByTableName(String tableName, String[] columnsStrings) throws Exception {

// SQL 语句(适用于MySQL)

String sql = "select COLUMN_NAME FROM information_schema.columns where table_name = ?";

// 获取 Session

Session session = new Configuration().configure("hibernate.cfg.xml").buildSessionFactory().openSession();

// 获取 Connection,自行修改,此处使用 Hibernate(Hibernate 3.3.2之前)

@SuppressWarnings("deprecation")

Connection connection = session.connection();

// 获取 PreparedStatement

PreparedStatement prepareStatement = connection.prepareStatement(sql);

// 设置 PreparedStatement 参数

prepareStatement.setString(1, tableName);

// 执行 SQL 语句,并获取列名结果集

ResultSet resultSet = prepareStatement.executeQuery();

// 列名集合

ArrayList columnList = new ArrayList();

// 将结果集转换为集合

while (resultSet.next()) {

columnList.add(resultSet.getString("COLUMN_NAME").trim().toLowerCase());

}

// 移除集合的第一个元素,即序列(例如上文表结构中的“TABLE_ID”),因为此项一般不赋值,自动序列

columnList.remove(0);

// 赋值之后的0、1 int 数组

int[] columnsInts = new int[columnList.size()];

// 判断列名是否存在

for (int i = 0; i < columnList.size(); i++) {

for (int j = 0; j < columnsStrings.length; j++) {

// 如果列名中存在

if (columnList.get(i).equals(columnsStrings[j].trim().toLowerCase())) {

// int 数组赋值为1

columnsInts[i] = 1;

// 结束当前循环,此处也可为 For 循环命名,使用“continue [循环名];”跳出

break;

}

}

}

// 关闭所有对象,未进行是否为空判断

resultSet.close();

prepareStatement.close();

connection.close();

session.close();

// 返回赋值之后的0、1 int 数组

return columnsInts;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值