概述
前台部分代码:
多选项:
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;
}
最后
以上就是包容月亮为你收集整理的java给复选框赋值_【Java Web】列名多选表的0、1赋值的全部内容,希望文章能够帮你解决java给复选框赋值_【Java Web】列名多选表的0、1赋值所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复