Spring-JdbcTemplate

1.什么是JdbcTemplate

(1)spring框架对JDBC进行封装,使用JdbcTemplate方便实现对数据库操作

2.准备工作

(1) 引入相关jar

druid.jar ,mysql.jar , spring-jdbc.jar,spring-tx.jar,spring-orm.jar

(2)在spring配置 连接池

<!--数据源-->
  <bean id="ds" class="com.alibaba.druid.pool.DruidDataSource">
     <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
     <property name="username" value="root"/>
     <property name="password" value="root"/>
     <property name="url" value="jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC"/>
  </bean>

(3)配置JdbcTemplate对象, 注入DataSource

<!--创建JDBCTemplate 对象-->
   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
      <!--配置 数据源-->
      <property name="dataSource" ref="ds"/>
   </bean>

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

在配置文件中 添加: <context:component-scan base-package="com.ly.aop"/>

在service中注入dao, 在dao中注入jdbcTemplate对象

@Repository
public class BookDaoImpl implements BookDao {

    //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;
}
@Service
public class BookService {
    //注入dao
    @Autowired
    private BookDao bookDao;
}

3.jdbcTemplate 操作数据库(添加)  

1.对应数据库表,创建实体类

2.编写service 和dao

(1) 在dao中实现添加方法

(2)在JDBCTemplate对象里面调用update方法实现添加操作

@Repository
public class BookDaoImpl implements BookDao {

    //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void save(Book book) {
        String sql = "insert into book(name,status) values(?,?)";
        Object[] args = {book.getName(),book.getStatus()};
        int row = jdbcTemplate.update(sql,args);
        System.out.println("受影响的行数"+row);
    }
}
public void saveBook(Book book){
        bookDao.save(book);
    }

3.编写测试类

@Test
    public void testJdbc(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
        BookService bs = ac.getBean("bookService",BookService.class);
        Book book = new Book("java编程思想","1");
        bs.saveBook(book);
    }

jdbcTemplate 操作数据库(修改和删除) 

@Service
public class BookService {
    //注入dao
    @Autowired
    private BookDao bookDao;


    public void saveBook(Book book){
        bookDao.save(book);
    }

    public void updateBook(Book book){
        bookDao.update(book);
    }

    public void delById(int id){
        bookDao.delete(id);
    }
}
@Repository
public class BookDaoImpl implements BookDao {

    //注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Override
    public void save(Book book) {
        String sql = "insert into book(name,status) values(?,?)";
        Object[] args = {book.getName(),book.getStatus()};
        int row = jdbcTemplate.update(sql,args);
        System.out.println("添加-受影响的行数"+row);
    }

    @Override
    public void update(Book book) {
        String sql = "update book set name=?,status=? where id=? ";
        Object[] args = {book.getName(),book.getStatus(),book.getId()};
        int row = jdbcTemplate.update(sql,args);
        System.out.println("修改-受影响的行数"+row);
    }

    @Override
    public void delete(int id) {
        String sql = "delete from book where id="+id;
        int row = jdbcTemplate.update(sql);
        System.out.println("删除-受影响的行数"+row);
    }
}

测试类:

@Test
    public void testJdbc(){
        ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml");
        BookService bs = ac.getBean("bookService",BookService.class);
       // Book book = new Book("html","1");
       // bs.saveBook(book);//添加

       // bs.delById(1);// 删除

        Book b = new Book(2,"1111","3");
        bs.updateBook(b);//修改
    }

jdbcTemplate 操作数据库(查询返回某个值)

  1. 查询表里 一共有多少条数据, 返回是 某个值

  2. 使用JdbcTemplate实现,返回某个值

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

 

测试类
      int count =  bs.findCount();
        System.out.println(count);

jdbcTemplate 操作数据库(查询返回对象)

1.按照 主键id 查询所有信息

2.使用JdbcTemplate的queryForObject方法实现,返回对象

RowMapper是接口,返回不同类型数据

封装

 //dao
  @Override
     public Book findOne(int id){
         String sql = " select * from book where id=?";
         Book book = jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<Book>(Book.class),id);
         return book;
     }
 //service
   public Book findOne(int id){
         return bookDao.findOne(id);
     }

jdbcTemplate 操作数据库(查询返回集合) 

  1. 查询 全部图书信息

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

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

 

 public List<Book> findAll(){
        return bookDao.findAllBook();
    }

jdbcTemplate 操作数据库(批量添加)

  1. 批量操作: 操作表里多条记录

    2.JdbcTemplate的batchUpdate 方法实习批量添加

//批量添加
    @Override
    public void batchAdd(List<Object[]> list) {
        String sql = "insert into book(name,status) values(?,?)";
        int[] count = jdbcTemplate.batchUpdate(sql,list);
        System.out.println(Arrays.toString(count));
    }
//测试
 // 批量添加
        List<Object[]> list = new ArrayList<>();
        Object[] obj = {"lisi","1"};
        list.add(obj);
        Object[] obj1 = {"2222","2"};
        list.add(obj1);
        Object[] obj2 = {"44444","4"};
        list.add(obj2);
        bs.batchAdd(list);

jdbcTemplate 操作数据库(批量修改与删除) 

//批量修改
    @Override
    public void batchUpdate(List<Object[]> list) {
        String sql = "update book set name=?,status=? where id=? ";
        int[] count = jdbcTemplate.batchUpdate(sql,list);
        System.out.println(Arrays.toString(count));
    }
测试:      
       //批量修改
        List<Object[]> list = new ArrayList<>();
        Object[] obj = {"22","2",2};
        list.add(obj);
        Object[] obj1 = {"333","3",3};
        list.add(obj1);
        Object[] obj2 = {"4444","4",4};
        list.add(obj2);
        bs.batchUpdate(list);
@Override
    public void batchDel(List<Object[]> list) {
        String sql = "delete from book where id=? ";
        int[] count = jdbcTemplate.batchUpdate(sql,list);
        System.out.println(Arrays.toString(count));
    }
//测试
 //批量删除
        List<Object[]> list = new ArrayList<>();
        Object[] obj = {2};
        list.add(obj);
        Object[] obj1 = {3};
        list.add(obj1);
        Object[] obj2 = {4};
        list.add(obj2);
        bs.batchDel(list);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

射手座的程序媛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值