使用JdbcTemplate操作数据库(二十九)

使用JdbcTemplate操作数据库

Spring的JdbcTemplate是自动配置的,你可以直接使用@Autowired来注入到你自己的bean中来使用。

举例:我们在创建User表,包含属性nameage,下面来编写数据访问对象和单元测试用例。

  • 定义包含有插入、删除、查询的抽象接口UserService


    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    public interface UserService {

        /**

         * 新增一个用户

         * @param name

         * @param age

         */

        void create(String name, Integer age);

        /**

         * 根据name删除一个用户高

         * @param name

         */

        void deleteByName(String name);

        /**

         * 获取用户总量

         */

        Integer getAllUsers();

        /**

         * 删除所有用户

         */

        void deleteAllUsers();

    }

  • 通过JdbcTemplate实现UserService中定义的数据访问操作

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    @Service

    public class UserServiceImpl implements UserService {

        @Autowired

        private JdbcTemplate jdbcTemplate;

        @Override

        public void create(String name, Integer age) {

            jdbcTemplate.update("insert into USER(NAME, AGE) values(?, ?)", name, age);

        }

        @Override

        public void deleteByName(String name) {

            jdbcTemplate.update("delete from USER where NAME = ?", name);

        }

        @Override

        public Integer getAllUsers() {

            return jdbcTemplate.queryForObject("select count(1) from USER", Integer.class);

        }

        @Override

        public void deleteAllUsers() {

            jdbcTemplate.update("delete from USER");

        }

    }

  • 创建对UserService的单元测试用例,通过创建、删除和查询来验证数据库操作的正确性。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    25

    26

    27

    28

    29

    30

    31

    32

    33

    34

    35

    @RunWith(SpringJUnit4ClassRunner.class)

    @SpringApplicationConfiguration(Application.class)

    public class ApplicationTests {

        @Autowired

        private UserService userSerivce;

        @Before

        public void setUp() {

            // 准备,清空user表

            userSerivce.deleteAllUsers();

        }

        @Test

        public void test() throws Exception {

            // 插入5个用户

            userSerivce.create("a"1);

            userSerivce.create("b"2);

            userSerivce.create("c"3);

            userSerivce.create("d"4);

            userSerivce.create("e"5);

            // 查数据库,应该有5个用户

            Assert.assertEquals(5, userSerivce.getAllUsers().intValue());

            // 删除两个用户

            userSerivce.deleteByName("a");

            userSerivce.deleteByName("e");

            // 查数据库,应该有5个用户

            Assert.assertEquals(3, userSerivce.getAllUsers().intValue());

        }

    }

    上面介绍的JdbcTemplate只是最基本的几个操作,更多其他数据访问操作的使用请参考:JdbcTemplate API

    通过上面这个简单的例子,我们可以看到在Spring Boot下访问数据库的配置依然秉承了框架的初衷:简单。我们只需要在pom.xml中加入数据库依赖,再到application.properties中配置连接信息,不需要像Spring应用中创建JdbcTemplate的Bean,就可以直接在自己的对象中注入使用。

原文地址:https://www.cnblogs.com/MaxElephant/p/10232317.html

时间: 2024-10-08 21:05:07

使用JdbcTemplate操作数据库(二十九)的相关文章

企业搜索引擎开发之连接器connector(二十九)

在哪里调用监控器管理对象snapshotRepositoryMonitorManager的start方法及stop方法,然后又在哪里调用CheckpointAndChangeQueue对象的resume方法获取List<CheckpointAndChange> guaranteedChanges集合 下面跟踪到DiffingConnectorTraversalManager类的相关方法,在该类实现的方法中,调用了监控器管理对象snapshotRepositoryMonitorManager的相

Welcome to Swift (苹果官方Swift文档初译与注解二十九)---209~218页(第四章-- 流程控制)

Break break语句会立刻结束整个流程控制的执行.break语句可以在switch语句或者循环语句中帮助你提前结束循环或者switch的执行. Break in a Loop Statement  (循环语句中的break) 当在循环语句中使用break,会立刻结束循环的执行,并且跳转到循环体之后的第一行代码.循环不会再遍历执行了. Break in a Switch Statement (switch语句的break) 当在switch语句中使用break,break会立刻结速switc

二十九、linux常用命令(一)

vim是打开vim编辑器,别的编辑器还有vi(功能没有vim 强大),nano,emacs等等,感觉还是vim最强大,其次是vi,别的就要差一些了. 我听我们老师说,用图形界面本身已经会被高手笑了,如果打开一个gpedit或者kwrite那就废了......常用的命令 ls,列出当前目录下的文件,ls -l是列出详细信息,ls -a列出隐藏文件. cd,更改目录.clear,清屏命令.reset,重置终端. startx,启动图形界面.fdisk -l,查看硬盘分区. ps aux,列出系统进程

QT开发(二十九)——QT常用类(三)

QT开发(二十九)--QT常用类(三) 一.QImage 1.QImage简介 QT中提供了四个处理图像数据的类:QImage.QPixmap.QBitmap.QPicture. QImage提供了允许直接访问像素数据的硬件无关的图像显示方案,能够用作绘图设备. QImage专门为I/O.直接像素访问操作而设计,并进行了优化.访问图片的像素或是修改图片像素,则需要使用QImage,或者借助于QPainter来操作像素. 由于QImage继承自QPaintDevice,QPainter可以直接在Q

Android项目实战(二十九):酒店预定日期选择

原文:Android项目实战(二十九):酒店预定日期选择 先看需求效果图:              几个需求点: 1.显示当月以及下个月的日历 (可自行拓展更多月份) 2.首次点击选择"开始日期",再次点击选择"结束日期" (1).如果"开始日期" "结束日期" 相同  (2).如果"开始日期" "结束日期" 不同,且"结束日期" 晚于 "开始日期&quo

《条目二十九:对于逐个字符的输入请考虑istreambuf_iterator》

<条目二十九:对于逐个字符的输入请考虑istreambuf_iterator> 1.使用: ifstream inputfile("xxxx"); string fileDate((istream_iterator<char>(inputfile)), istream_iterator<char>()); 在流输入的时候遇到空格就跳过,也就是不会读入空格字符. 2.原因: istream_iterator使用operator>>来完成这个

攻城狮在路上(叁)Linux(二十九)--- 完整备份工具:dump以及restore

一.dump命令: 该命令既可以针对整个文件系统进行备份,也可以仅针对目录来备份.还可以指定不同的备份等级(-0~-9共10个等级). dump -W:列出在/etc/fstab中具有dump设置的分区是否备份过. 命令格式: dump [-Suvj] [-level] [-f 备份文件] 待备份数据 参数说明: -S:仅列出后面的待备份数据所需要的磁盘空间大小. -u:将这次dump的时间记录到/etc/dumpdates文件中. -v:将dump的文件过程显示出来. -j:加入bzip2的支

Android学习笔记二十九之SwipeRefreshLayout、RecyclerView和CardView

Android学习笔记二十九之SwipeRefreshLayout.RecyclerView和CardView 前面我们介绍了AlertDialog和几个常用的Dialog,ProgressDialog进度条提示框.DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框.这一节我们介绍几个新的API控件SwipeRefreshLayout.RecyclerView和CardView,这几个API控件都是google在Android5.0推出的.下面我们来学

[原创]ActionScript3游戏中的图像编程(连载二十九)

2.2.2 Photoshop投影大小的模拟 投影没有之前那么浓了,但是跟Photoshop里的效果差别还挺大,因为在Photoshop里我们还设置了另外一个属性:大小. Flash里似乎找不到它的影子,我们用排除法来进行定位,Photoshop投影样式的大小属性以像素为单位,Flash投影滤镜的选项只有距离和那对被“手铐”扣住的模糊属性符合条件,而Photoshop里也有一个距离,所以我们定位到模糊属性(图 2.15). 图 2.15 Flash投影的模糊属性 分别调整Photoshop的大小