package com.jiang.ibatis;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
/**
* 用来连接ibatis
* @author mz
*/
public class SqlMapConn {
/**
* resource用于存放SqlMapConfigExample.xml的相对路径,以工程包为基层
* reader用来读指定SqlMapConfigExample.xml的内容 SqlMapClient对象用于控制读进来的SQL语句
* SqlMapClientBuilder通过buildSqlMapClient方法来对reader读进来的东西转换成SqlMapClient能应用的
*/
private static final SqlMapClient sqlMap;
static {
try {
String resource = "com/jiang/ibatis/Sql-Map-Config.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMap = SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(
"Error initializing MyAppSqlConfig class. Cause: " + e);
}
}
/**
* 向数据库中插入内容
*
* @param reflexion
* 是sqlMap中为SQL语句所指定的一个ID,的别称,从而得到sqlMap中对应的SQL语句的内容
* @param obj
* 是插入过程中通过Bean中的参数来获得插入的值,在此之前要先向Bean中添加内容
* @return 返回是否插入成功
*/
public boolean insert(String reflexion, Object obj) {
try {
sqlMap.insert(reflexion, obj);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public int insertList(String reflexion, List<Object> list) {
if(list==null) return 0;
int num = 0;
try {
sqlMap.startTransaction();
sqlMap.startBatch();
for (int i = 0; i < list.size(); i++) {
Object ddcb = list.get(i);
sqlMap.insert(reflexion, ddcb);
}
num = sqlMap.executeBatch();
sqlMap.commitTransaction();
} catch (SQLException e) {
num = -1;
e.printStackTrace();
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
return num;
}
public int insertQuestion(String reflexion, Object obj) {
try {
return (Integer) sqlMap.insert(reflexion, obj);
} catch (Exception e) {
e.printStackTrace();
return 0;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 这个方法是通过条件删除表的内容
*
* @param reflexion
* 是sqlMap中为SQL语句所指定的一个ID,的别称,从而得到sqlMap中对应的SQL语句的内容
* @param obj
* 是删除过程中通过Bean中的参数来获得插入的值,在此之前要先向Bean中添加内容
* @return 是否删除成功
*/
public boolean delete(String reflexion, Object obj) {
try {
sqlMap.delete(reflexion, obj);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 通过调用这个方法修改表的内容
*
* @param reflexion
* 是sqlMap中为SQL语句所指定的一个ID,的别称,从而得到sqlMap中对应的SQL语句的内容
* @param obj
* 是删除过程中通过Bean中的参数来获得插入的值,在此之前要先向Bean中添加内容
* @return 是否修改成功
*/
public boolean update(String reflexion, Object obj) {
try {
sqlMap.startTransaction();
int i =sqlMap.update(reflexion, obj);
sqlMap.commitTransaction();
// System.out.println("影响行数:"+i);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public boolean updateCascade(Map map){
try {
sqlMap.startTransaction();
sqlMap.update("updateOneDialect", map);
sqlMap.update("updateOneDialectTypeInfo", map);
sqlMap.endTransaction();
return true;
} catch (Exception e) {
e.printStackTrace();
try {
sqlMap.endTransaction();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
return false;
}
}
/**
* 这个方法是用来通过sqlMap的SQL语句来返回所要查询的结果集
*
* @param reflexion
* 是sqlMap中为SQL语句所指定的一个ID,的别称,从而得到SQL语句的内容
* @param obj
* 在查询过程用,的条件
* @return 一个List类型的结果集,用来存放查到的数据
*/
public List select(String reflexion, Object obj) {
try {
sqlMap.startTransaction();
List records = sqlMap.queryForList(reflexion, obj);// .queryForList用来返回一个List型的结果集
sqlMap.commitTransaction();
return records;
} catch (Exception e) {
// System.err.println("select list is null");
e.printStackTrace();
return null;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 这个方法是用来通过sqlMap的SQL语句来返回所要查询的结果
*
* @param reflexion
* 是sqlMap中为SQL语句所指定的一个ID,的别称,从而得到SQL语句的内容
* @param obj
* 在查询过程用,的条件
* @return 一个Object类型的结果集,用来存放查到的数据
*/
public Object getObject(String reflexion, Object obj) {
try {
sqlMap.startTransaction();
Object object = sqlMap.queryForObject(reflexion, obj);// .queryForList用来返回一个List型的结果集
sqlMap.commitTransaction();
return object;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
/**
* 这个方法是用来通过sqlMap的SQL语句来返回所要查询的结果集
*
* @参数 reflexion 是sqlMap中为SQL语句所指定的一个ID,的别称,从而得到SQL语句的内容
* @参数 obj 在查询过程用,的条件
* @返回值 一个List类型的结果集,用来存放查到的数据
*/
public List getRecords(String reflexion, Object obj) {
try {
sqlMap.startTransaction();
List records = sqlMap.queryForList(reflexion, obj);// .queryForList用来返回一个List型的结果集
sqlMap.commitTransaction();
return records;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public int update(String reflexion, List objList) {
int num = 0;
try {
sqlMap.startTransaction();
sqlMap.startBatch();
for (int i = 0; i < objList.size(); i++) {
int k = sqlMap.update(reflexion, objList.get(i));
// System.out.println("更新第"+i+"条记录");
// System.out.println("id =
// "+((TurlsBean)objList.get(i)).getId());
// System.out.println("Status =
// "+((TurlsBean)objList.get(i)).isStatus());
}
num = sqlMap.executeBatch();
// System.out.println("共更新的记录数量:" + num);
sqlMap.commitTransaction();
} catch (SQLException e) {
num = -1;
e.printStackTrace();
} finally {
try {
sqlMap.endTransaction();
} catch (SQLException e) {
e.printStackTrace();
}
}
return num;
}
public List selectLimit(String reflexion,int start,int leng) {
List list = null
- 1
- 2
前往页