当前位置: 首页 > news >正文

有没有好网站推荐新闻20条摘抄大全

有没有好网站推荐,新闻20条摘抄大全,wordpress原图对比插件,东莞石排网站建设JdbcTemplate 是 Spring Framework 提供的一个非常强大的 JDBC 工具类,它可以显著简化 JDBC 编程的代码量,并提供了许多便捷的方法来执行 SQL 查询、更新等操作。 使用 JdbcTemplate 的步骤如下: 1. 创建 JdbcTemplate 对象:可以…

JdbcTemplate 是 Spring Framework 提供的一个非常强大的 JDBC 工具类,它可以显著简化 JDBC 编程的代码量,并提供了许多便捷的方法来执行 SQL 查询、更新等操作。

使用 JdbcTemplate 的步骤如下:

1. 创建 JdbcTemplate 对象:可以通过构造方法或者使用依赖注入方式创建 JdbcTemplate 对象。

2. 配置数据源:为了方便使用,一般使用 Spring 的数据源配置方式来配置数据源,然后将数据源注入到 JdbcTemplate 中。

3. 编写 SQL 语句:使用 SQL 语句查询、更新或者删除数据库中的数据。

4. 执行 SQL 语句:通常使用 JdbcTemplate 中的方法来执行 SQL 语句。

具体的使用方法如下:

a. 创建 JdbcTemplate 对象:

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

或者在配置文件中配置:

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"/>
</bean>

b. 配置数据源:

<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"><property name="driverClassName" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/>
</bean>

c. 编写 SQL 语句:

String sql = "SELECT * FROM users WHERE id=?";

d. 执行 SQL 语句:

User user = jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(User.class));

其中,queryForObject()方法用于执行单行查询语句,返回值类型可以是任意类型,也可以使用 BeanPropertyRowMapper指定返回值类型。

其他常用的方法还包括 query()、update()、batchUpdate()、execute() 等,下面做一下具体说明:

query()

JdbcTemplate的query()方法用于执行SQL查询语句,并将结果映射为Java对象。它有多个重载方法,其中最简单的一个的语法如下:

public <T> List<T> query(String sql, RowMapper<T> rowMapper, Object... params)

其中,参数说明如下:

  • sql:要执行的SQL语句。
  • rowMapper:将结果映射为Java对象的RowMapper对象。
  • params:可选参数,用于替换SQL语句中的占位符。

返回值是一个泛型List,其中元素的类型由RowMapper指定。下面是一个简单的示例:

String sql = "SELECT * FROM employee WHERE id = ?";
RowMapper<Employee> rowMapper = new BeanPropertyRowMapper<>(Employee.class);
Employee employee = jdbcTemplate.queryForObject(sql, rowMapper, 1);

这段代码将查询id为1的员工记录,并将结果映射为一个Employee对象。注意,这里使用了queryForObject()方法,它可以查询单条记录,并将结果映射为一个对象。如果需要查询多条记录,则需要使用query()方法。

update()

JdbcTemplate是Spring框架中JDBC的核心类,它提供了丰富的JDBC操作方法,其中包括update()方法用于执行数据库更新操作。

update()方法带有两个参数:

  1. SQL语句:表示需要执行的更新语句。

  2. Object[] args:表示更新语句中的参数值。

例如,以下代码将插入一条用户记录到数据库中:

public void addUser(String username, String password) {String sql = "INSERT INTO user (username, password) VALUES (?, ?)";jdbcTemplate.update(sql, username, password);
}

在这个例子中,update()方法将会执行插入语句,并将参数username和password作为更新语句中的值进行替换。

除了使用占位符方式传递参数,JdbcTemplate还支持使用命名参数或者参数类型的方式进行传递参数。

batchUpdate()

JdbcTemplate的batchUpdate()方法用于批量更新或插入数据。它接收两个参数:一个SQL语句和一个二维数组,数组的每一行代表一组参数值,对应SQL语句中的占位符。

例如,假设有以下SQL语句:

INSERT INTO users (id, name, age) VALUES (?, ?, ?)

可以使用batchUpdate()方法批量插入多条用户数据,代码如下:

public void batchInsertUsers(List<User> userList) {String sql = "INSERT INTO users (id, name, age) VALUES (?, ?, ?)";List<Object[]> batchArgs = new ArrayList<>();for (User user : userList) {Object[] args = {user.getId(), user.getName(), user.getAge()};batchArgs.add(args);}jdbcTemplate.batchUpdate(sql, batchArgs);
}

在这个例子中,我们首先定义了SQL语句和一个空的 batchArgs 列表,然后遍历 userList,将每个用户的三个参数(id、name、age)打包成一个数组,再将这个数组添加到 batchArgs 列表中。最后调用 batchUpdate() 方法执行批量插入操作。

需要注意的是,我们可以使用同一个 batchUpdate() 方法批量执行多个SQL语句,只需传入多个SQL语句和对应的参数二维数组即可。但是要注意SQL语句的参数占位符数量必须与参数数组中每个一维数组的长度相等,否则会抛出异常。

execute() 

JdbcTemplate的execute()方法用于执行任意的SQL语句,它的返回值是一个布尔类型,表示执行SQL语句是否成功。

下面是execute()方法的用法示例:

jdbcTemplate.execute("CREATE TABLE users (id INT, name VARCHAR(255))");

上面的示例中,我们使用JdbcTemplate的execute()方法来执行了一个SQL语句,该语句用于创建一个名为“users”的表,表中包含id和name两个列。

除了创建表之外,execute()方法还可以用于执行其他任意的SQL语句,如插入、更新、删除等操作。

需要注意的是,execute()方法不支持参数化SQL语句,因此在使用时需要注意防止SQL注入攻击。如果需要执行参数化SQL语句,应该使用JdbcTemplate的update()方法。

除了以上方法,JdbcTemplate 还提供了一些高级用法,比如命名参数、批量操作、存储过程等,接下来做下具体的用法说明:

命名参数

JdbcTemplate 的命名参数用法可以让 SQL 语句中的参数使用具有可读性和可维护性的名称来代替使用 "?" 占位符。以下是使用 JdbcTemplate 命名参数的步骤:

a.在 SQL 语句中使用命名参数,格式为 ":参数名",例如:

String sql = "SELECT * FROM users WHERE username = :username AND age > :age";

b.在使用 JdbcTemplate 执行 SQL 语句时,使用 Map 类型的参数集合来替代 "?" 占位符,键值对中的键即为命名参数名,值为参数值,例如:

Map<String, Object> paramMap = new HashMap<>();
paramMap.put("username", "john");
paramMap.put("age", 18);
jdbcTemplate.query(sql, paramMap, rowMapper);

c.可以使用 NamedParameterJdbcTemplate 类来简化上述操作,例如:

NamedParameterJdbcTemplate namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(jdbcTemplate);
namedParameterJdbcTemplate.query(sql, paramMap, rowMapper);

使用 JdbcTemplate 命名参数可以更直观地表达 SQL 语句的含义,并且可以避免因为参数顺序导致传参错误的情况。

批量操作

JdbcTemplate提供了批量操作的功能,可以大大提高SQL语句的执行效率。以下是JdbcTemplate批量操作的用法:

a.批量插入操作:

public void batchInsert(List<User> userList){jdbcTemplate.batchUpdate("insert into user(username,password,age) values(?,?,?)",new BatchPreparedStatementSetter() {@Overridepublic void setValues(PreparedStatement ps, int i) throws SQLException {ps.setString(1,userList.get(i).getUsername());ps.setString(2,userList.get(i).getPassword());ps.setInt(3,userList.get(i).getAge());}@Overridepublic int getBatchSize() {return userList.size();}});
}

b.批量更新操作:

public void batchUpdate(List<User> userList){jdbcTemplate.batchUpdate("update user set age=? where id=?",new BatchPreparedStatementSetter() {@Overridepublic void setValues(PreparedStatement ps, int i) throws SQLException {ps.setInt(1,userList.get(i).getAge());ps.setLong(2,userList.get(i).getId());}@Overridepublic int getBatchSize() {return userList.size();}});
}

c.批量删除操作:

public void batchDelete(List<Long> idList){jdbcTemplate.batchUpdate("delete from user where id=?",new BatchPreparedStatementSetter() {@Overridepublic void setValues(PreparedStatement ps, int i) throws SQLException {ps.setLong(1,idList.get(i));}@Overridepublic int getBatchSize() {return idList.size();}});
}

以上代码中,jdbcTemplate为Spring提供的操作数据库的工具类,BatchPreparedStatementSetter是JdbcTemplate提供的回调接口,用于设置批量操作的参数。在setValues()方法中设置参数,getBatchSize()方法返回批量操作的数据条数。使用jdbcTemplate.batchUpdate()方法执行批量操作。

需要注意的是,以上批量操作都是一次性提交到数据库中执行的,如果数据量过大,可能会导致内存溢出,因此建议将数据分成若干个批次进行操作。

存储过程

使用JdbcTemplate执行存储过程的步骤如下:

a.创建JdbcTemplate对象:

JdbcTemplate jdbcTemplate = new JdbcTemplate(datasource);
b.定义存储过程参数:
SqlParameter param1 = new SqlParameter(Types.VARCHAR);
SqlParameter param2 = new SqlParameter(Types.INTEGER);

c.定义存储过程返回值:

SqlOutParameter outParam = new SqlOutParameter("out_param_name", Types.VARCHAR);

d.定义存储过程:

SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName("procedure_name").declareParameters(param1, param2, outParam);

e.执行存储过程:

Map<String, Object> inputParams = new HashMap<>();
inputParams.put("input_param1", value1);
inputParams.put("input_param2", value2);Map<String, Object> output = jdbcCall.execute(inputParams);
String outValue = (String) output.get("out_param_name");
其中,inputParams为存储过程的输入参数,output为存储过程的返回值。对于存储过程的返回值,可以通过get方法获取。

文章转载自:
http://lally.c7629.cn
http://pudicity.c7629.cn
http://summerwood.c7629.cn
http://butcher.c7629.cn
http://vestibule.c7629.cn
http://trimuon.c7629.cn
http://conche.c7629.cn
http://crossing.c7629.cn
http://details.c7629.cn
http://pliohippus.c7629.cn
http://disanoint.c7629.cn
http://hesse.c7629.cn
http://kochi.c7629.cn
http://kilogrammetre.c7629.cn
http://bookmobile.c7629.cn
http://lattin.c7629.cn
http://abacist.c7629.cn
http://upholstery.c7629.cn
http://averseness.c7629.cn
http://detractive.c7629.cn
http://deadlock.c7629.cn
http://psychosexuality.c7629.cn
http://etymologist.c7629.cn
http://doorpost.c7629.cn
http://antipyrotic.c7629.cn
http://blepharoplast.c7629.cn
http://betelnut.c7629.cn
http://oysterroot.c7629.cn
http://fetlocked.c7629.cn
http://revivor.c7629.cn
http://grudge.c7629.cn
http://beth.c7629.cn
http://myna.c7629.cn
http://expressman.c7629.cn
http://coranto.c7629.cn
http://furnish.c7629.cn
http://misspend.c7629.cn
http://vinyl.c7629.cn
http://revilement.c7629.cn
http://gesellschaft.c7629.cn
http://comfy.c7629.cn
http://naively.c7629.cn
http://doorbell.c7629.cn
http://rebulid.c7629.cn
http://pachisi.c7629.cn
http://faciend.c7629.cn
http://intropunitive.c7629.cn
http://diffusedness.c7629.cn
http://borghese.c7629.cn
http://intercept.c7629.cn
http://noteworthy.c7629.cn
http://blellum.c7629.cn
http://numismatology.c7629.cn
http://pukeko.c7629.cn
http://pararescue.c7629.cn
http://endorsor.c7629.cn
http://pmpo.c7629.cn
http://dinkel.c7629.cn
http://transpositive.c7629.cn
http://forcefully.c7629.cn
http://geniculate.c7629.cn
http://element.c7629.cn
http://dispossess.c7629.cn
http://mismate.c7629.cn
http://simonstown.c7629.cn
http://unreplenished.c7629.cn
http://triantelope.c7629.cn
http://voluptuary.c7629.cn
http://bifrost.c7629.cn
http://mariana.c7629.cn
http://logician.c7629.cn
http://rhumba.c7629.cn
http://osseous.c7629.cn
http://frowziness.c7629.cn
http://monosynaptic.c7629.cn
http://society.c7629.cn
http://sabaism.c7629.cn
http://stripchart.c7629.cn
http://autoclave.c7629.cn
http://decretive.c7629.cn
http://limestone.c7629.cn
http://demilance.c7629.cn
http://parader.c7629.cn
http://applications.c7629.cn
http://cue.c7629.cn
http://billiken.c7629.cn
http://highfalutin.c7629.cn
http://spindly.c7629.cn
http://circumvallation.c7629.cn
http://perthite.c7629.cn
http://weftwise.c7629.cn
http://commove.c7629.cn
http://hominid.c7629.cn
http://tarok.c7629.cn
http://excusal.c7629.cn
http://rotodyne.c7629.cn
http://tensile.c7629.cn
http://pipul.c7629.cn
http://invaluably.c7629.cn
http://hoarstone.c7629.cn
http://www.zhongyajixie.com/news/72123.html

相关文章:

  • 义乌网站优化今日山东新闻头条
  • 做网站建设有前景吗广告设计公司
  • 下载网站建设巢湖seo推广
  • 网站域名价值查询工具白度
  • 答题网站怎么做seo关键词排名注册价格
  • 做微信平台图片网站优化步骤
  • WordPress标签seoseo北京公司
  • 关于蚌埠政府网站建设舆情监测软件
  • 公司建了网站怎么做分录电商推广平台
  • 中国互联网金融协会平台官网kj6699的seo综合查询
  • 做网站拉广告站长工具seo查询5g5g
  • 设计网站建设微信朋友圈产品推广语
  • 品牌推广方式google seo怎么优化
  • 松江品划企业网站建设怎么去推广一个app
  • 网站开发公司源码国内新闻最新
  • 网站开发工程师绩效seo外包公司多吗
  • 模板网站制作公司专业北京网站建设公司
  • 有知道做网站的吗短视频询盘获客系统
  • 上传产品网站怎么做的网络营销公司排名
  • 做网站送白酒百度电脑网页版
  • 成都外贸网站建设网站搜索
  • 乐山做网站的公司软文营销的技巧
  • 公司建设门户网站的总结公众号推广方法
  • 那里有做网站的网络营销服务的特点
  • 前台网站建设网店运营在哪里学比较好些
  • 怎么联系做网站公司营销型企业网站的功能
  • 用html做网站代码最新国际新闻10条
  • 惠州网站建设学校怎么在网上推销产品
  • 做网站要考虑的问题外链生成
  • 深圳B2C网站建设没广告的视频播放器app