前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >测试开发之Spring篇(二)

测试开发之Spring篇(二)

作者头像
muntainyang
发布2020-10-23 11:15:50
2530
发布2020-10-23 11:15:50
举报
文章被收录于专栏:IT测试前沿

Spring案例入门(Springjdbc)

一、Spring jdbc简介

Spring是一个一站式的框架,对不同持久层的技术都进行了封装(如JDBC、Hibermate、MyBatis等。

二、spring的模版类

JDBCTemplate继承了基类JdbcAccessor和接口类JdbcOperation。在基类JdbcAccessor的设计中,对DataSource数据源进行管理和配置。在JdbcOperation接口中,定义了通过Jdbc操作数据库的基本操作方法,而JdbcTemplate提供这些接口方法的实现,比如execute方法、query方法、update方法等

三、Spring传统jdbc实例

jdbc传统实现

缺点:

(1)需要自己管理连接(2)Jdbc操作重复代码封装与编写

实例:

1、数据库表fc_channel

2、Fc_channel模型 Fc_channe.java

public class fc_channel {

Stringchannel_Id;

Stringchannel_name;

Stringstatus;

Stringdisplay_order;

public fc_channel(String channel_Id, String channel_name,String status,

Stringdisplay_order) {

this.channel_Id= channel_Id;

this.channel_name= channel_name;

this.status= status;

this.display_order= display_order;

}

//此处省略set/get方法

}

3、访问数据库dao模式

public interface fc_channelDao {

public void insert(fc_channel fc);

public fc_channel findById(String CHANNEL_ID);

public voiddeleteFc_channel(String CHANNEL_ID);}

4、DAO的实现 FcImpl.java

//插入方法

public void insert(fc_channel fc){

String sql = "INSERTINTO fc_channel " +

"(CHANNEL_ID, CHANNEL_NAME, STATUS,DISPLAY_ORDER)VALUES (?,?,?,?)";

Connectionconn = null;

try {

conn = dataSource.getConnection();

PreparedStatementps = conn.prepareStatement(sql);

ps.setString(1, fc.getChannel_Id());

ps.setString(2, fc.getChannel_name());

ps.setString(3, fc.getDisplay_order());

ps.setString(4,fc.getStatus());

ps.executeUpdate();

ps.close();

}catch (SQLException e) {

throw newRuntimeException(e);

}finally {

if (conn !=null) {

try {

conn.close();

}catch (SQLException e) {}

}}}

//查找方法

public fc_channel findById(String Channel_Id){

Stringsql = "SELECT* FROM fc_channel WHERE Channel_Id = ?";

Connectionconn = null;

try {

conn = dataSource.getConnection();

PreparedStatementps = conn.prepareStatement(sql);

ps.setString(1, Channel_Id);

fc_channelfc = null;

ResultSetrs = ps.executeQuery();

if (rs.next()){

fc = newfc_channel(

rs.getString("CHANNEL_ID"),

rs.getString("CHANNEL_NAME"),

rs.getString("STATUS"),

rs.getString("DISPLAY_ORDER") );}

rs.close();

ps.close();

return fc;

} catch(SQLException e) {

throw newRuntimeException(e);

}finally {

if (conn !=null) {

try {

conn.close();

}catch (SQLException e) {}

}}}

@Override

public voiddeleteFc_channel(String CHANNEL_ID) {

// TODO Auto-generated method stub

}

5、bean配置 applicationContext.xml

6、测试类 test.java

publicclass test {

publicstaticvoid main( String[] args )

{

ApplicationContext context =

new ClassPathXmlApplicationContext("applicationContext.xml");

fc_channelDao fcd =(fc_channelDao)context.getBean("fc_channelDao");

fc_channel fc = new fc_channel("11", "22","33","44");

fcd.insert(fc);

}}

7、 工程目录

四、Spring 使用jdbcTemplate

1、使用方法:

创建JdbcTemplate对象

注入dataSource对象

调用JdbcTemplate封装的方法进行sql操作

2、优点:

(1)配置基于模板设置

(2)完成了资源的创建和释放的工作

(3)完成了对JDBC的核心流程的工作,包括SQL语句的创建和执行,简化了对JDBC的操作

(4)仅需要传递DataSource就可以把它实例化

(5)JdbcTemplate只需要创建一次,减少了代码复用的烦恼

(6)JdbcTemplate是线程安全类

3、实例

(1)DAO实现类JdbcTempDaoImpl.java

public class JdbcTempDaoImpl implements fc_channelDao {

private JdbcTemplate jdbcTemplate;

private DataSource dataSource;

public voidsetDataSource( DataSource dataSource) {

this.dataSource= dataSource;

}

//增

public voidinsert(fc_channel fc) {

Stringsql = "INSERTINTO fc_channel "

+"(CHANNEL_ID, CHANNEL_NAME,STATUS,DISPLAY_ORDER) VALUES (?,?,?,?)";

jdbcTemplate = newJdbcTemplate(dataSource);

jdbcTemplate.update(sql,

new Object[] { fc.getChannel_Id(),fc.getChannel_name(),

fc.getDisplay_order(), fc.getStatus()});

}

//查

public fc_channel findById(String Channel_Id) {

Stringsql = "SELECT* FROM fc_channel WHERE Channel_Id = ?";

jdbcTemplate = newJdbcTemplate(dataSource);

return jdbcTemplate.queryForObject(sql, newUserRowMapper(),Channel_Id);

}

class UserRowMapper implementsRowMapper<fc_channel> {

//rs为返回结果集,以每行为单位封装着

publicfc_channel mapRow(ResultSet rs, int rowNum)throws SQLException {

fc_channelfc = newfc_channel(

rs.getString("CHANNEL_ID"),

rs.getString("CHANNEL_NAME"),

rs.getString("STATUS"),

rs.getString("DISPLAY_ORDER") );

return fc;

}}

//删

public voiddeleteFc_channel(String CHANNEL_ID) {

jdbcTemplate = newJdbcTemplate(dataSource);

String sql = "deletefrom fc_channel where Channel_Id=?";

this.jdbcTemplate.update(sql, CHANNEL_ID);

}

}

(2)bean配置方法 applicationContext.xml

(3)实现类 test.java

publicclass test {

public static void main( String[] args )

{

ApplicationContext context =

new ClassPathXmlApplicationContext("applicationContext.xml");

fc_channelDao fcd =(fc_channelDao)context.getBean("fc_channelDao");

fc_channel fc = new fc_channel("11", "22","33","44");

fcd.insert(fc);

fc_channel fc1 = fcd.findById("11");

System.out.println(fc1.getChannel_Id());

System.out.println(fc1.getChannel_name());

System.out.println(fc1.getDisplay_order());

System.out.println(fc1.getStatus());

//删除

fcd.deleteFc_channel("1");

}

}

(4)jdbcTemplate缺点

必须于Spring框架结合在一起使用、不支持数据库跨平台、默认没有缓存.

为什么说会开发的测试才是合格的测试?

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT测试前沿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Spring jdbc简介
  • 二、spring的模版类
  • 三、Spring传统jdbc实例
    • 2、Fc_channel模型 Fc_channe.java
      • 3、访问数据库dao模式
        • public interface fc_channelDao {
          • 4、DAO的实现 FcImpl.java
            • 5、bean配置 applicationContext.xml
              • 6、测试类 test.java
              • 四、Spring 使用jdbcTemplate
                • 1、使用方法:
                  • 2、优点:
                    • 3、实例
                      • (1)DAO实现类JdbcTempDaoImpl.java
                        • (3)实现类 test.java
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档