场景: 使用spring的JdbcTemplate操作数据库
1.建表语句,本例是Mysql数据库
CREATE TABLE `t_city` (
`CITY_NAME` VARCHAR(64) COLLATE utf8_bin NOT NULL COMMENT '城市名',
`LAND_AREA` DOUBLE DEFAULT NULL COMMENT '城市面积',
`POPULATION` BIGINT(16) DEFAULT NULL COMMENT '城市人口',
`GROSS` DOUBLE DEFAULT NULL COMMENT '生产总值',
`AREA_NUMBER` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL COMMENT '行政区划代码',
`POSTAL_CODE` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL COMMENT '邮政编码',
`TELEPHONE_CODE` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL COMMENT '电话区号',
`CAR_CODE` VARCHAR(64) COLLATE utf8_bin DEFAULT NULL COMMENT '车牌代码',
`CITY_DESCRIBE` VARCHAR(512) COLLATE utf8_bin DEFAULT NULL COMMENT '城市描述'
) ENGINE=INNODB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='城市信息表'
2.配置数据源和获取JdbcTemplate
/**数据库连接需要字符串*/
public static final String username = "root";
public static final String password = "123456";
public static final String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/zbzdb";
public static final String driverName = "com.mysql.jdbc.Driver";
public static JdbcTemplate jdbcTemplate = getJdbcTemplate();
/**获取一个JdbcTemplate实例对象*/
public static JdbcTemplate getJdbcTemplate() {
DruidDataSource dataSource = new DruidDataSource();
// 设置数据源属性参数
dataSource.setPassword(password);
dataSource.setUrl(jdbcUrl);
dataSource.setUsername(username);
dataSource.setDriverClassName(driverName);
// 获取spring的JdbcTemplate
JdbcTemplate jdbcTemplate = new JdbcTemplate();
// 设置数据源
jdbcTemplate.setDataSource(dataSource);
return jdbcTemplate;
}
3.查询相关方法
/**1.使用 queryForList(String sql)*/
public static List<Map<String, Object>> queryForList(){
/**1.组装sql*/
String sql = "SELECT CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER FROM t_city ";
/**.调用queryForList*/
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
return result;
}
/**2.使用 queryForList(String sql, Object... args)*/
public static List<Map<String, Object>> queryForList(String cityName, String areaNember){
/**1.组装sql*/
String sql = "SELECT CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER FROM t_city WHERE CITY_NAME= ? AND AREA_NUMBER= ? ";
/**2.数组类型参数*/
Object[] params = new Object[] { cityName, areaNember };
/**3.调用queryForList*/
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, params);
return result;
}
/**3.使用 queryForList(String sql, Object... args)*/
public static List<Map<String, Object>> queryForList2(String cityName, String areaNember){
/**1.组装sql*/
String sql = "SELECT CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER FROM t_city WHERE CITY_NAME= ? AND AREA_NUMBER= ? ";
/**2.调用queryForList*/
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, cityName,areaNember);
return result;
}
4.插入相关方法
/**4.插入一条记录*/
public static void insert(){
/**1.组装sql*/
String sql = "INSERT INTO t_city (CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER ) VALUE('泉州',11014.78, 865, 7548.01, '350500' ) ";
/**2.调用update*/
jdbcTemplate.update(sql);
}
/**5.插入一条记录,带参数*/
public static void insertParam(String cityName,String areaNumber){
/**1.组装sql*/
String sql = "INSERT INTO t_city (CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER ) VALUE(?, ?, ?, ?, ? ) ";
Object[] params = new Object[] {
cityName,
11014.78,
865,
7548.01,
areaNumber
};
/**2.调用update*/
jdbcTemplate.update(sql,params);
}
5.更新相关方法
/**6.更新使用set语句*/
public static int updateData(String cityName,String cityDesc,String carCode){
String sql = "UPDATE t_city SET CITY_DESCRIBE = ?,CAR_CODE = ? WHERE CITY_NAME=? ";
jdbcTemplate.update(sql, cityDesc,carCode,cityName);
return 1;
}
6.删除相关方法
/**7.删除一条记录*/
public static void delete(){
/**1.组装sql*/
String sql = "delete from t_city where CITY_NAME='泉州' ";
/**2.调用update*/
jdbcTemplate.update(sql);
}
/**8.带参数删除*/
public static void delete(String cityName){
/**1.组装sql*/
String sql = "delete from t_city where CITY_NAME= ? ";
/**2.调用update*/
jdbcTemplate.update(sql,cityName);
}
7.批量插入相关方法
/**9.批量插入*/
public static int[]insertBatch(final List<Map<String, Object>> list){
/**1.组装sql*/
String sql = " INSERT INTO t_city "
+" (CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER,POSTAL_CODE,TELEPHONE_CODE,CAR_CODE,CITY_DESCRIBE) "
+ " VALUE(?, ?, ?, ?, ? ,? , ?, ?, ?) ";
/**2.组装sql*/
int[] result = jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter(){
@Override
public int getBatchSize() {
return list.size();
}
@Override
public void setValues(PreparedStatement ps, int i)
throws SQLException {
try {
Map<String, Object> map = list.get(i);
ps.setObject(1, map.get("CITY_NAME"));
ps.setObject(2, map.get("LAND_AREA"));
ps.setObject(3, map.get("POPULATION"));
ps.setObject(4, map.get("GROSS"));
ps.setObject(5, map.get("AREA_NUMBER"));
ps.setObject(6, map.get("POSTAL_CODE"));
ps.setObject(7, map.get("TELEPHONE_CODE"));
ps.setObject(8, map.get("CAR_CODE"));
ps.setObject(9, map.get("CITY_DESCRIBE"));
} catch (SQLException e) {
e.printStackTrace();
throw e;
}
}
});
return result;
}
8.测试main函数
public class TestJdbcTemplate {
public static void main(String [] args){
System.out.println("测试开始......");
List<Map<String, Object>> tt1 = OperateJdbcTemplateUtils.queryForList();
List<Map<String, Object>> tt2 = OperateJdbcTemplateUtils.queryForList("厦门","350200");
System.out.println(tt2.toString());
OperateJdbcTemplateUtils.insertParam("泉州", "350500");
OperateJdbcTemplateUtils.updateData("泉州","鞋都","闽C");
//OperateJdbcTemplateUtils.delete();
//OperateJdbcTemplateUtils.delete("泉州");
System.out.println("测试结束......");
}
}
9.完整类
public class OperateJdbcTemplateUtils {
/**数据库连接需要字符串*/
public static final String username = "root";
public static final String password = "123456";
public static final String jdbcUrl = "jdbc:mysql://127.0.0.1:3306/zbzdb";
public static final String driverName = "com.mysql.jdbc.Driver";
public static JdbcTemplate jdbcTemplate = getJdbcTemplate();
/**获取一个JdbcTemplate实例对象*/
public static JdbcTemplate getJdbcTemplate() {
DruidDataSource dataSource = new DruidDataSource();
// 设置数据源属性参数
dataSource.setPassword(password);
dataSource.setUrl(jdbcUrl);
dataSource.setUsername(username);
dataSource.setDriverClassName(driverName);
// 获取spring的JdbcTemplate
JdbcTemplate jdbcTemplate = new JdbcTemplate();
// 设置数据源
jdbcTemplate.setDataSource(dataSource);
return jdbcTemplate;
}
/**1.使用 queryForList(String sql)*/
public static List<Map<String, Object>> queryForList(){
/**1.组装sql*/
String sql = "SELECT CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER FROM t_city ";
/**.调用queryForList*/
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql);
return result;
}
/**2.使用 queryForList(String sql, Object... args)*/
public static List<Map<String, Object>> queryForList(String cityName, String areaNember){
/**1.组装sql*/
String sql = "SELECT CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER FROM t_city WHERE CITY_NAME= ? AND AREA_NUMBER= ? ";
/**2.数组类型参数*/
Object[] params = new Object[] { cityName, areaNember };
/**3.调用queryForList*/
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, params);
return result;
}
/**3.使用 queryForList(String sql, Object... args)*/
public static List<Map<String, Object>> queryForList2(String cityName, String areaNember){
/**1.组装sql*/
String sql = "SELECT CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER FROM t_city WHERE CITY_NAME= ? AND AREA_NUMBER= ? ";
/**2.调用queryForList*/
List<Map<String, Object>> result = jdbcTemplate.queryForList(sql, cityName,areaNember);
return result;
}
/**4.插入一条记录*/
public static void insert(){
/**1.组装sql*/
String sql = "INSERT INTO t_city (CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER ) VALUE('泉州',11014.78, 865, 7548.01, '350500' ) ";
/**2.调用update*/
jdbcTemplate.update(sql);
}
/**5.插入一条记录,带参数*/
public static void insertParam(String cityName,String areaNumber){
/**1.组装sql*/
String sql = "INSERT INTO t_city (CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER ) VALUE(?, ?, ?, ?, ? ) ";
Object[] params = new Object[] {
cityName,
11014.78,
865,
7548.01,
areaNumber
};
/**2.调用update*/
jdbcTemplate.update(sql,params);
}
/**6.更新使用set语句*/
public static int updateData(String cityName,String cityDesc,String carCode){
String sql = "UPDATE t_city SET CITY_DESCRIBE = ?,CAR_CODE = ? WHERE CITY_NAME=? ";
jdbcTemplate.update(sql, cityDesc,carCode,cityName);
return 1;
}
/**7.删除一条记录*/
public static void delete(){
/**1.组装sql*/
String sql = "delete from t_city where CITY_NAME='泉州' ";
/**2.调用update*/
jdbcTemplate.update(sql);
}
/**8.带参数删除*/
public static void delete(String cityName){
/**1.组装sql*/
String sql = "delete from t_city where CITY_NAME= ? ";
/**2.调用update*/
jdbcTemplate.update(sql,cityName);
}
/**9.批量插入*/
public static int[]insertBatch(final List<Map<String, Object>> list){
/**1.组装sql*/
String sql = " INSERT INTO t_city "
+" (CITY_NAME,LAND_AREA,POPULATION,GROSS,AREA_NUMBER,POSTAL_CODE,TELEPHONE_CODE,CAR_CODE,CITY_DESCRIBE) "
+ " VALUE(?, ?, ?, ?, ? ,? , ?, ?, ?) ";
/**2.组装sql*/
int[] result = jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter(){
@Override
public int getBatchSize() {
return list.size();
}
@Override
public void setValues(PreparedStatement ps, int i)
throws SQLException {
try {
Map<String, Object> map = list.get(i);
ps.setObject(1, map.get("CITY_NAME"));
ps.setObject(2, map.get("LAND_AREA"));
ps.setObject(3, map.get("POPULATION"));
ps.setObject(4, map.get("GROSS"));
ps.setObject(5, map.get("AREA_NUMBER"));
ps.setObject(6, map.get("POSTAL_CODE"));
ps.setObject(7, map.get("TELEPHONE_CODE"));
ps.setObject(8, map.get("CAR_CODE"));
ps.setObject(9, map.get("CITY_DESCRIBE"));
} catch (SQLException e) {
e.printStackTrace();
throw e;
}
}
});
return result;
}
}
以上,TKS.