05-Spring框架之JdbcTemplate

1、JdbcTemplate(概念和准备)

1.1、什么是JdbcTemplate

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

1.2、准备工作

1.2.1、引入相关jar包

在这里插入图片描述

1.2.2、在spring配置文件配置数据库连接池
   <!--数据库连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="url" value="jdbc:mysql://localhost:3306/user_db?seUnicode=true&amp;characterEncoding=UTF8"/>
        <property name="username" value="root"/>
        <property name="password" value=""/>
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    </bean>
1.2.3、配置JdbcTemplate对象,注入DataSource
    <!--JdbcTemplate对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--注入dataSource-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
1.2.4、创建service类,创建dao类,在dao注入jdbcTemplate对象

*配置文件

    <!--组件扫描-->
    <context:component-scan base-package="pgh.jdbc"></context:component-scan>
        <!--开启AspectJ生成代理对象-->
    <aop:aspectj-autoproxy></aop:aspectj-autoproxy>

**Service

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

**Dao

@Repository
public class BookDaoImpl implements BookDao {
    // 注入JdbcTemplate
    @Autowired
    private JdbcTemplate jdbcTemplate;
}

2、JdbcTemplate操作数据库

dao中写接口,impl中写接口实现类,entity中写实体类,service写逻辑,test中测试

2.1、添加操作

2.1.1、对应数据库创建实体类
public class Book {
    private String userId;
    private String username;
    private String ustatus;

    public void setUserId(String userId) {
        this.userId = userId;
    }

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

    public String getUserId() {
        return userId;
    }

    public String getUsername() {
        return username;
    }

    public String getUstatus() {
        return ustatus;
    }

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

2.1.2、编写service和dao

1)在dao中进行数据库添加操作 2)调用JdbcTemplate对象里面update方法实现添加操作
在这里插入图片描述
有两个参数:第一个参数是sql语句,第二个参数是可变参数,设置sql语句值

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

    // 添加的方法
    @Override
    public void add(Book book) {
        //1、创建sql语句
        String sql = "insert into t_book values(?,?,?)";
        //2、调用方法实现
        Object[] args={book.getUserId(), book.getUsername(), book.getUstatus()};
        int update =jdbcTemplate.update(sql,args);
        System.out.println(update);
    }
}
2.1.3、测试类
public class testJdbcTemplate {
    @Test
    public void test01(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        Book book=new Book();
        book.setUserId("666");
        book.setUsername("电商");
        book.setUstatus("b");
        bookService.addBook(book);
    }
}

在这里插入图片描述

2.2、修改和删除

2.2.1、修改
    @Override
    public void updateBook(Book book) {
        String sql="update t_book set username=?,ustatus=? where user_id=?";
        Object[] args={book.getUsername(),book.getUstatus(),book.getUserId()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }
    @Test
    public void test02(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        Book book=new Book();
        book.setUserId("666");
        book.setUsername("打工仔");
        book.setUstatus("c");
        bookService.updateB(book);
    }

在这里插入图片描述

2.2.2、删除
    @Override
    public void deleteBook(String id) {
        String sql="delete from t_book where user_id=?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println(update);
    }
    @Test
    public void test03(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        bookService.deleteB("666");
    }

2.3、查询返回

2.3.1、返回某个值

1)查询表里有多少条记录,返回是某个值 2)使用JdbcTemplate实现查询返回某个值代码
在这里插入图片描述

    @Override
    public int selectCount() {
        String sql = "select count(*) from t_book";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
        return count;
    }
    @Test
    public void test04(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        int count = bookService.selectCountB();
        System.out.println(count);
    }

在这里插入图片描述

2.3.2、返回对象

在这里插入图片描述

    @Override
    public Book findBookInfo(String id) {
        String sql = "select * from t_book where user_id=?";
        //调用方法
        Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
        return book;
    }

在这里插入图片描述

2.3.3、批量操作

在这里插入图片描述

//批量添加
@Override
public void batchAddBook(List<Object[]> batchArgs) {
 String sql = "insert into t_book values(?,?,?)";
 int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
 System.out.println(Arrays.toString(ints));
}
//批量添加测试
List<Object[]> batchArgs = new ArrayList<>();
Object[] o1 = {"3","java","a"};
Object[] o2 = {"4","c++","b"};
Object[] o3 = {"5","MySQL","c"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
//调用批量添加
bookService.batchAdd(batchArgs);
//批量修改
@Override
public void batchUpdateBook(List<Object[]> batchArgs) {
 String sql = "update t_book set username=?,ustatus=? where user_id=?";
 int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
 System.out.println(Arrays.toString(ints));
}
//批量修改
List<Object[]> batchArgs = new ArrayList<>();
Object[] o1 = {"java0909","a3","3"};
Object[] o2 = {"c++1010","b4","4"};
Object[] o3 = {"MySQL1111","c5","5"};
batchArgs.add(o1);
batchArgs.add(o2);
batchArgs.add(o3);
//调用方法实现批量修改
bookService.batchUpdate(batchArgs);
//批量删除
@Override
public void batchDeleteBook(List<Object[]> batchArgs) {
 String sql = "delete from t_book where user_id=?";
 int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
 System.out.println(Arrays.toString(ints));
}
//批量删除
List<Object[]> batchArgs = new ArrayList<>();
Object[] o1 = {"3"};
Object[] o2 = {"4"};
batchArgs.add(o1);
batchArgs.add(o2);
//调用方法实现批量删除
bookService.batchDelete(batchArgs);

3、mvc层次

3.1、dao

public interface BookDao {
    // 添加操作
    public void add(Book book);
    // 修改操作
    public void updateBook(Book book);
    // 删除操作
    void deleteBook(String id);
    // 返回某个值
    int selectCount();
    // 返回对象
    Book findBookInfo(String id);
}

3.2、dao的实现

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


    // 添加的方法
    @Override
    public void add(Book book) {
        //1、创建sql语句
        String sql = "insert into t_book values(?,?,?)";
        //2、调用方法实现
        Object[] args={book.getUserId(), book.getUsername(), book.getUstatus()};
        int update =jdbcTemplate.update(sql,args);
        System.out.println(update);
    }

    @Override
    public void updateBook(Book book) {
        String sql="update t_book set username=?,ustatus=? where user_id=?";
        Object[] args={book.getUsername(),book.getUstatus(),book.getUserId()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }

    @Override
    public void deleteBook(String id) {
        String sql="delete from t_book where user_id=?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println(update);
    }

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

    @Override
    public Book findBookInfo(String id) {
        String sql = "select * from t_book where user_id=?";
        //调用方法
        Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
        return book;
    }
}

3.3、entity

public class Book {
    private String userId;

    @Override
    public String toString() {
        return "Book{" +
                "userId='" + userId + '\'' +
                ", username='" + username + '\'' +
                ", ustatus='" + ustatus + '\'' +
                '}';
    }

    private String username;
    private String ustatus;

    public void setUserId(String userId) {
        this.userId = userId;
    }

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

    public String getUserId() {
        return userId;
    }

    public String getUsername() {
        return username;
    }

    public String getUstatus() {
        return ustatus;
    }

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

3.4、service

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

    public void addBook(Book book){
        bookDao.add(book);
    }

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

    public void deleteB(String id){
        bookDao.deleteBook(id);
    }

    public int selectCountB(){
        int count = bookDao.selectCount();
        return count;
    }

    public Book findBook(String id){
        Book book = bookDao.findBookInfo(id);
        return book;
    }
}

3.5、test

public class testJdbcTemplate {
	// 测试添加
    @Test
    public void test01(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        Book book=new Book();
        book.setUserId("666");
        book.setUsername("电商");
        book.setUstatus("b");
        bookService.addBook(book);
    }
	// 测试修改
    @Test
    public void test02(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        Book book=new Book();
        book.setUserId("666");
        book.setUsername("打工仔");
        book.setUstatus("c");
        bookService.updateB(book);
    }
	// 测试删除
    @Test
    public void test03(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        bookService.deleteB("666");
    }
	// 测试返回某个值
    @Test
    public void test04(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        int count = bookService.selectCountB();
        System.out.println(count);
    }
	// 测试返回对象
    @Test
    public void test05(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean.xml");
        BookService bookService = context.getBean("bookService", BookService.class);
        Book book = bookService.findBook("666");
        System.out.println(book.toString());
    }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值