前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >spring免配置使用JdbcTemplate操作

spring免配置使用JdbcTemplate操作

作者头像
叔牙
发布2020-11-19 14:45:28
6000
发布2020-11-19 14:45:28
举报
文章被收录于专栏:一个执拗的后端搬砖工

使用Spring-jdbc包自带的jdbcTemplate我们可以直接进行数据库操作(不使用持久层框架),使我们的应用程序更加灵活,但是使用Spring框架的时候难免要使用配置文件,

但是有些场景我们可能不需要那么重的配置。举例:我们的通用模块中可能要做到管控dubbo服务访问权限,而权限列表就放在mysql表中,那么我们可能在通用模块中需要操作数据库查询,但是用到查询的地方特别少,这时候我们加上spring配置,是有点浪费的。那么我们可不可以不使用配置去获得数据库连接或者jdbcTemplate去查询数据?当然是可以的,不过我们自己实现的话,首先比较困难,另外是没必要。我们此处使用最简化的方式实现这个功能:

一、新建maven项目&添加最简依赖

新建一个maven项目,在pom文件中添加以下依赖

<!-- 数据库连接驱动 -->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>5.1.41</version>

</dependency>

<!-- spring中jdbc相关操作依赖包 -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-jdbc</artifactId>

<version>4.3.7.RELEASE</version>

</dependency>

<!-- 连接池依赖 -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>druid</artifactId>

<version>1.1.2</version>

</dependency>

二、添加属性文件

在src/main/resources下添加jdbc.properties

文件内容配置如下:

属性文件中字段名命名有规则,参考下一步

三、新建工具类

既然是工具类,我们尽量定义成abstract或者final类型,可以选择让调用方式继承或者直接调用静态方法,尽量不允许new新对象,代码实现如下:

/**

* 简化数据源配置类

*

* @author Typhoon

* @date 2017-08-22 11:27 Tuesday

* @since V1.3.1

*/

public class DataSourceUtils {

public static Properties p = null;

public static String confile = "jdbc.properties";

static {

p = new Properties();

InputStream inputStream = null;

try {

inputStream = DataSourceUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");

inputStream = new BufferedInputStream(inputStream);

p.load(inputStream);

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (inputStream != null) {

inputStream.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

/**

*获取数据源,私有方法不对外暴露

*/

private static DataSource getDataSource() {

try {

return DruidDataSourceFactory.createDataSource(p);

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

*获取JdbcTemplate(使用getDataSource()获取获取源)

*/

public static JdbcTemplate getJdbcTemplate() {

DataSource dataSource = getDataSource();

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

return jdbcTemplate;

}

/**

*获取NamedParameterJdbcTemplate

* 在某些场景下比JdbcTemplate使用起来方便

*/

public static NamedParameterJdbcTemplate getNamedJdbcTemplate() {

DataSource dataSource = getDataSource();

NamedParameterJdbcTemplate namedJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);

return namedJdbcTemplate;

}

}

这里边最重要的一段代码是:

这里将从jdbc.properties读取的数据传给DruidDataSourceFactory去创建连接,进入源码中可以看到:

到这里我们就发现此处会将从jdbc.properties读取的属性赋值给该类中的字段,所以上一步中我们定义的jdbc.properties属性文件的字段要和DruidDataSourceFactory中定义的保持一致.

然后我们就可以使用getJdbcTemplate()和getNamedJdbcTemplate()获取jdbc操作工具,然后我们就可以直接去执行sql操作了

四、新建Dao

新建UserDao,并使用上边定义的工具类注入JdbcTemplate

/**

* 用户操作dao

*

* @author Typhoon

* @date 2017-08-22 15:32 Tuesday

* @since V1.3.1

*/

public class UserDao {

/**

* 获取jdbcTemplate

*/

private JdbcTemplate jdbcTemplate = DataSourceUtils.getJdbcTemplate();

/**

* 查询列表

*

* @return

*/

public List<User> queryAll() {

return jdbcTemplate.query(" select * from User ", BeanPropertyRowMapper.newInstance(User.class), new Object[] {});

}

}

题外话: spring3.x版本使用ParameterizedBeanPropertyRowMapper做数据映射,spring4.x取消了该类,可以使用替代类BeanPropertyRowMapper做数据映射

五、模拟调用方并测试

新建测试类模拟Dao调用方,并测试JdbcTemplate是否访问数据库成功且正确返回数据

/**

* 模拟调用方

*

* @author Typhoon

* @date 2017-08-22 15:34 Tuesday

* @since V1.3.1

*/

public class Consumer {

public static void main(String[] args) {

UserDao userDao = new UserDao();

List<User> list = userDao.queryAll();

for(User u : list) {

System.out.println(u);

}

}

}

使用java Application方式运行上述代码,可以看到如下结果:

可见我们已经基于免Spring配置的方式实现的通过jdbcTemplate与数据库交互.

总结

在一些通用模块中数据库交互比较少的场景下,可以使用这种免配置方式替代繁重的配置文件方式实现数据库访问.

  • 优点:免配置,使用方便.
  • 缺点:不适合比较繁杂的数据交互比较多的场景

ps:原创不易,多多支持!

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

本文分享自 PersistentCoder 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、新建maven项目&添加最简依赖
  • 二、添加属性文件
  • 三、新建工具类
  • 四、新建Dao
  • 五、模拟调用方并测试
  • 总结
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档