使用spring的JdbcTemplate操作数据库

场景: 使用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.

猜你喜欢

转载自blog.csdn.net/zhangbeizhen18/article/details/85464942
今日推荐