JDBCTemplate

JDBCTemplate(概念和准备)

什么是JDBCTenmplate?

Spring框架对JDBC进行封装,使用JDBCTeplete方便实现对数据库的操作

准备工作

(1)引入相关jar包

(2) 在spring配置文件配置数据库连接池

<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
      destroy-method="close">
    <property name="url" value="jdbc:mysql:///user_db?serverTimezone=GMT%2B8" />
    <property name="username" value="root" />
    <property name="password" value="root" />
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
</bean>

(3) 配置JDBCTemptete对象,注入DATASource

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

(4)创建service类,创建dao类  在dao注入jdbcTemplate对象

<!--    开启注解扫描-->
    <context:component-scan base-package="com.spring.collectiontype"></context:component-scan>
@Service
public class BookService {
    @Autowired
    private BookDao bookDao;
}
@Repository
public class BookDaoImpl implements BookDao{
     @Autowired
    private JdbcTemplate jdbcTemplate;
}

JDBCTemplate操作

添加

1 对数据库创建实体类

package com.spring.collectiontype.bean;

public class User {
    private String user_id;
    private String username;
    private String ustatus;

    public String getUser_id() {
        return user_id;
    }

    public void setUser_id(String user_id) {
        this.user_id = user_id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getUstatus() {
        return ustatus;
    }

    public void setUstatus(String ustatus) {
        this.ustatus = ustatus;
    }
}

2 编写service和dao

update(String sql,Object...args)

第一个参数:sql语句

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

package com.spring.collectiontype.dao;

import com.spring.collectiontype.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;

@Repository
public class BookDaoImpl implements BookDao{
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void add(User user) {
        String sql = "insert into t_user values(?,?,?)";
        Object[] args = {user.getUser_id(),user.getUsername(),user.getUstatus()};
        int update =jdbcTemplate.update(sql, args);
        System.out.println(update);
    }
}

3  测试类

package com.spring.collectiontype.textspring;

import com.spring.collectiontype.bean.User;
import com.spring.collectiontype.service.BookService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TextUser {
   @Test
    public void textJdbcTemplate(){
       ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
       BookService bookService = context.getBean("bookService",BookService.class);
       User user = new User();
       user.setUser_id("1");
       user.setUsername("小明");
       user.setUstatus("a");
       bookService.addBook(user);
   }
}

修改

@Override
public void update(User user) {
    String sql ="update t_user set username=?,ustatus=? where user_id=?";
    Object[] obj = {user.getUsername(),user.getUstatus(),user.getUser_id()};
    int update = jdbcTemplate.update(sql,obj);
    System.out.println(update);
}

删除

@Override
public void delete(User user) {
    String sql = "delete from t_user where user_id=?";
    int update=jdbcTemplate.update(sql,user.getUser_id());
    System.out.println(update);
}

查询(返回某个值)

1 查询表里边有多少条记录  返回的是某一个值

2 使用JdbcTemplate实现查询返回某个值代码

有两个参数

第一个参数  sql语句

第二个参数   返回类型Class

@Override
public int selectCount() {
    String sql = "select count(*) from t_user";
    Integer count = jdbcTemplate.queryForObject(sql,Integer.class);
    return count;
}

查询(返回对象)

1 场景 查询图书详情

2JdbcTemplate实现查询返回对象

有三个参数

第一个参数  sql语句

第二个参数  RowMapper是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装

第三个参数  sql语句值

@Override
public User findBookInfo(String id) {
    String sql = "select * from t_user where user_id=?";
    User user = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),id);
    return user;
}

查询(返回集合)

1 场景  查询列表

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

三个参数

第一个参数  sql语句

第二个参数 RowMapper接口,针对返回不同类型的数据,使这个接口里面实现类进行数据封装

第三个参数,sql语句

@Override
public List<User> findAll() {
    String sql = "select * from t_user";
    List<User> list = jdbcTemplate.query(sql,new BeanPropertyRowMapper<User>(User.class));
    return list;
}

批量操作

添加

1 批量操作  操作表里面多条记录

2 JdbcTemplate实现批量添加操作

第一个参数  sql语句

第二个参数  list集合  添加多条记录数据

@Override
public void batchAddBook(List<Object[]> batchArgs) {
    String sql = "insert into t_user values(?,?,?)";
    int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
    System.out.println(Arrays.toString(ints));
}

批量修改

@Override
public void batchUpdateBook(List<Object[]> batchArgs) {
    String sql ="update t_user set username=?,ustatus=? where user_id=?";
    int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
    System.out.println(Arrays.toString(ints));
}

批量删除

@Override
public void batchDeleteBook(List<Object[]> batchArgs) {
    String sql = "delete from t_user where user_id=?";
    int[] ints = jdbcTemplate.batchUpdate(sql,batchArgs);
    System.out.println(Arrays.toString(ints));
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值