Java一个支持多查询的函数
我想写一个函数来执行不同的查询。我希望它传递表名、select、insert方法和一个值列表关于你喜欢的地方。我在php中做过类似的事情,我处理了数组中的所有内容,但不知道如何在Java中求解,可能有一些现成的类 我当前的PHP解决方案:Java一个支持多查询的函数,java,Java,我想写一个函数来执行不同的查询。我希望它传递表名、select、insert方法和一个值列表关于你喜欢的地方。我在php中做过类似的事情,我处理了数组中的所有内容,但不知道如何在Java中求解,可能有一些现成的类 我当前的PHP解决方案: $user = db::getInstance()->update('users', 2, array( 'password' => 'newpassword')); public function update($table
$user = db::getInstance()->update('users', 2, array(
'password' => 'newpassword'));
public function update($table, $id, $fields){
$set = '';
$x = 1;
foreach($fields as $name => $value){
$set .= "{$name} = ?";
if($x < count($fields)){
$set .= ', ';
}
}
$sql = "UPDATE {$table} SET {$set} where id = {$id}";
if(!$this->query($sql, $fields)->error()){
return true;
}
}
$user=db::getInstance()->更新('users',2,数组(
“密码”=>“新密码”);
公共函数更新($table,$id,$fields){
$set='';
$x=1;
foreach($name=>$value的字段){
$set.=“{$name}=?”;
如果($x<计数($fields)){
$set.=',';
}
}
$sql=“更新{$table}SET{$SET},其中id={$id}”;
如果(!$this->query($sql,$fields)->error()){
返回true;
}
}
通过使用接口并将该接口的实现作为参数传递,您可以做几乎相同的事情
一个抽象的例子:
接口
public interface MyInterface {
public void doTheSelect();
}
实施A
public class MyImplementationA implements MyInterface{
@Override
public void doTheSelect() {
// Do some sort of select
}
}
实施B
public class MyImplementationB implements MyInterface{
@Override
public void doTheSelect() {
// Do some other sort of select
}
}
你的类与你的函数/方法
public class MyClass{
public void myFunction(MyInterface implementation) {
implementation.doTheSelect();
}
}
“区别”在于,您必须考虑面向对象这是我的解决方案
@Override
public int insert(Map<String, String> valueMap, String table) throws SQLException {
// TODO Auto-generated method stub
Connection conn = Database.getInstance().getConnection();
String val = "";
String query = "";
String question = "";
Integer mapsize = valueMap.size();
Integer x = 1;
for (Map.Entry<String, String> entry : valueMap.entrySet()) {
val += entry.getKey();
question += "?";
if (x < mapsize) {
val += ", ";
question += ", ";
}
mapsize--;
}
query = "insert into " + table + "(" + val + ") values ("+question+")";
PreparedStatement add = conn.prepareStatement(query);
for(Map.Entry<String, String> entry : valueMap.entrySet()){
add.setObject(x,entry.getValue());
x+=1;
}
int addtotable = add.executeUpdate();
add.close();
return addtotable;
}
@覆盖
public int insert(映射值映射,字符串表)抛出SQLException{
//TODO自动生成的方法存根
连接连接=数据库.getInstance().getConnection();
字符串val=”“;
字符串查询=”;
字符串问题=”;
整数mapsize=valueMap.size();
整数x=1;
对于(Map.Entry:valueMap.entrySet()){
val+=entry.getKey();
问题+=“?”;
如果(x
我更感兴趣的是,像我在php中使用的那样,将przeazać参数添加到函数中,因为我从您的数据库中获得了一个Java类,不希望任何更改。还有语言设计和限制。在我的回答中,我假设您正在谈论函数指针,请参阅这篇文章:好的,以及如何以类似于“password”=>“newpassword”的方式将数组传递给函数?“key=>value”操作符似乎传递给关联数组。Java中最接近关联数组的数据结构可能是映射