Spring框架使用JDBCTemplate连接数据库

JDBCTemplate

JDBCTemplate(概念和准备)

  1. 什么是JdbcTemplate
    1. Spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库的操作
  2. 准备工作
    1. 引入相关的jar包
      image-20211204205930339

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NOyWzANa-1638844933137)(C:\Users\Master\AppData\Roaming\Typora\typora-user-images\image-20211204205952748.png)]

    2. 数据库连接池
          <!--数据库连接池-->
          <bean id="dateSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
              <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
              <!--这里注意要使用utf8编码-->
              <property name="url" value="jdbc:mysql://localhost:3306/dxz?characterEncoding=utf8"></property>
              <property name="username" value="root"></property>
              <property name="password" value="root"></property>
          </bean>
      
    3. 配置JdbcTemplate对象,注入DataSource
          <!--创建jdbcTemplate对象-->
          <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
              <!--注入dataSource对象-->
              <property name="dataSource" ref="dateSource"></property>
          </bean>
      
    4. 创建一个service类,创建dao类,在dao注入jdbcTemplate对象

      配置文件:

          <!--组件扫描-->
          <context:component-scan base-package="com.dxz.demo.book"></context:component-scan>
      

      source:

      @Service
      public class BookSource {
          @Autowired
          private BookImp bookImp;
      }
      
      

      BookImp:

      @Component
      public class BookImp implements Book{
          @Autowired
          private JdbcTemplate jdbcTemplate;
      }
      
  3. JdbcTemplate操作数据库(添加)
    1. 对应数据库创建实体类
    2. 编写service和dao
      1. 在Book中进行数据库添加操作

      2. 调用JdbcTemplate对象里面updata方法实现添加操作

        这个方法有两个参数:

        第一个参数sql语句,第二个参数可变参数,设置sql语句值

        @Component
        public class BookImp implements Book{
            @Autowired
            private JdbcTemplate jdbcTemplate;
        
            public void add(User user){
                String sql1 = "insert into spring values(?,?,?);";
                Object[] args = {user.getUserId(),user.getUserName(),user.getUserStatus()};
                int result = jdbcTemplate.update(sql1,args);
                System.out.println(result);
            }
        }
        
      3. 在BookSource中完成添加数据的操作
        @Service
        public class BookSource {
            @Autowired
            private BookImp bookImp;
        
            public void bookAdd(User user){
                bookImp.add(user);
            }
        }
        
  4. JdbcTemplate操作数据库(修改和删除)
    1. 在Book接口中添加删除和修改两个方法
      public interface Book {
          //添加方法
          public void add(User user);
          //修改方法
          public void update(User user);
          //删除方法
          public void delete(String id);
      }
      
    2. 在BookImp实现类之中重写删除和修改两个方法
          //修改方法
          public void update(User user){
              String sql2 = "update spring set name=?,status=? where id=?;";
              Object[] args = {user.getUserName(),user.getUserStatus(),user.getUserId()};
              int result = jdbcTemplate.update(sql2,args);
              System.out.println(result);
          }
          //删除方法
          public void delete(String id) {
              String sql3 = "delete from spring where id=?";
              int result = jdbcTemplate.update(sql3,id);
              System.out.println(result);
          }
      
    3. 在BookSource类中添加删除和修改
          //数据库的修改操作
          public void bookUpdate(User user){
              bookImp.update(user);
          }
          //数据库的删除操作
          public void bookDelete(String id){
              bookImp.delete(id);
          }
      
  5. JdbcTemplate操作数据库(查询)
    1. 查询返回某个值
      //查询返回所有数据的个数
          @Override
          public int selectCountBook() {
              String sql4 = "select count(*) from spring";
              int result = jdbcTemplate.queryForObject(sql4,Integer.class);
              System.out.println(result);
              return result;
          }
      
    2. 查询返回对象
      1. 场景:查询图书详情

      2. JdbcTemplate实现查询返回

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-riAguf5p-1638844933138)(C:\Users\Master\AppData\Roaming\Typora\typora-user-images\image-20211205110020838.png)]

        总共有三个参数

        (1)sql语句。

        (2)RowMapper是接口,针对返回不同类型的数据,使用接口里面实现类完成数据封装

        (3)sql语句值

        *注意数据库中的字段名和java中的字段名一定要一样

            @Override
            public User selectObjectBook(String id) {
                String sql5 = "select * from spring where id=?";
                User user = jdbcTemplate.queryForObject(sql5, new BeanPropertyRowMapper<User>(User.class),id);
                return user;
            }
        
    3. 查询返回集合
      1. 场景:查询图书列表分页

      2. 调用JdbcTemplate方法实现查询返回集合

        调用的方法是query,返回值为list集合

        总共有三个参数

        (1)sql语句。

        (2)RowMapper是接口,针对返回不同类型的数据,使用接口里面实现类完成数据封装

        (3)sql语句值

  6. JdbcTemplate操作数据库(批量操作)
    1. 批量操作就是操作表里面的多条记录

    2. JdbcTemplate实现批量添加操作

      batchUpdate(String sql,List<Object[]> batchArgs)
      

      有两个参数

      第一个参数:sql语句

      第二个参数:List集合,添加多条记录

          @Override
          public void adds() {
              String sql7 = "insert into spring values(?,?,?);";
              List<Object[]> listBatch = new ArrayList<>();
              Object[] o1 = {"3","java","a"};
              Object[] o2 = {"4","c++","b"};
              Object[] o3 = {"5","mysql","c"};
              listBatch.add(o1);
              listBatch.add(o2);
              listBatch.add(o3);
              int[] result = jdbcTemplate.batchUpdate(sql7,listBatch);
              System.out.println(Arrays.toString(result));
          }
      

istBatch.add(o1);
listBatch.add(o2);
listBatch.add(o3);
int[] result = jdbcTemplate.batchUpdate(sql7,listBatch);
System.out.println(Arrays.toString(result));
}
```

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

躺平崽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值