首页 > 其他分享 >jdbcTemplate

jdbcTemplate

时间:2022-12-06 22:26:08浏览次数:36  
标签:String void public book jdbcTemplate id batchArgs

jdbcTemplate

介绍

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

准备工作

引入相关 jar 包


有的包,没用到是自己测试使用的就一并截图了

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

<!--直接配置连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/book_db"/>
    <property name="username" value="root"/>
    <property name="password" value="root"/>
</bean>

配置 JdbcTemplate 对象,注入 DataSource

<!-- JdbcTemplate 对象 -->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <!--注入 dataSource-->
    <property name="dataSource" ref="dataSource"/>
</bean>

组件扫描

<!-- 组件扫描 -->
<context:component-scan base-package="com.zjh.jdbc"/>

JdbcTemplate 操作数据库(增删改)

创建 实体,service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象,在 service 注入 dao

实体类

public class Book {

    private String id;

    private String bookName;

    private String bookStatus;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getBookStatus() {
        return bookStatus;
    }

    public void setBookStatus(String bookStatus) {
        this.bookStatus = bookStatus;
    }
}

dao接口

public interface BookDao {

    /**
     * 添加方法
     * @param book 请求参数
     */
    void add(Book book);

    /**
     * 修改方法
     * @param book 请求参数
     */
    void update(Book book);

    /**
     * 删除方法
     * @param id 请求参数
     */
    void delete(String id);
}

dao接口实现类

@Repository
public class BookDaoImpl implements BookDao{

    /**
     * 注入 JdbcTemplate
     */
    @Autowired
    private JdbcTemplate jdbcTemplate;

    /**
     * 添加方法
     * @param book 请求参数
     */
    @Override
    public void add(Book book) {
        // 创建sql语句
        String sql = "insert into book values (?,?,?)";
        // 调用方法实现
        int update = jdbcTemplate.update(sql, book.getId(), book.getBookName(), book.getBookStatus());
        System.out.println(update);
    }

    /**
     * 修改方法
     * @param book 请求参数
     */
    @Override
    public void update(Book book) {
        // 修改sql语句
        String sql = "update book set book_name = ?, book_status = ? where id = ?";
        // 设置参数
        Object[] args = {book.getBookName(), book.getBookStatus(), book.getId()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }

    /**
     * 删除方法
     * @param id 请求参数
     */
    @Override
    public void delete(String id) {
        // 删除sql语句
        String sql = "delete from book where id = ?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println(update);
    }
}

service类

@Service
public class BookService {

    /**
     * 注入 dao
     */
    @Autowired
    private BookDao bookDao;

    /**
     * 添加方法
     * @param book 请求参数
     */
    public void addBook(Book book) {
        bookDao.add(book);
    }

    /**
     * 修改方法
     * @param book 请求参数
     */
    public void updBook(Book book) {
        bookDao.update(book);
    }

    /**
     * 删除方法
     * @param id 请求参数
     */
    public void delBook(String id) {
        bookDao.delete(id);
    }

}

测试类

public class BookTest {

    /**
     * 测试 jdbc 添加
     */
    @Test
    public void bookAddTest(){

        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean.xml");

        BookService bookService = context.getBean("bookService", BookService.class);

        Book book = new Book();
        book.setId("1");
        book.setBookName("java");
        book.setBookStatus("a");
        bookService.addBook(book);
    }

    /**
     * 测试 jdbc 修改
     */
    @Test
    public void bookUpdTest(){

        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean.xml");

        BookService bookService = context.getBean("bookService", BookService.class);

        Book book = new Book();
        book.setId("1");
        book.setBookName("mysql");
        book.setBookStatus("b");
        bookService.updBook(book);
    }

    /**
     * 测试 jdbc 删除
     */
    @Test
    public void bookDelTest(){

        ApplicationContext context =
                new ClassPathXmlApplicationContext("bean.xml");

        BookService bookService = context.getBean("bookService", BookService.class);

        bookService.delBook("1");
    }
}

JdbcTemplate 操作数据库(查询)

实体类添加 toString 方法

@Override
public String toString() {
    return "Book{" +
            "id='" + id + '\'' +
            ", bookName='" + bookName + '\'' +
            ", bookStatus='" + bookStatus + '\'' +
            '}';
}

dao接口

/**
 * 查询返回数据个数
 * @return int
 */
int selectCount();

/**
 * 查询返回对象
 * @param id 请求参数
 * @return Book
 */
Book findBookInfo(String id);

/**
 * 查询返回集合
 * @return List<Book>
 */
List<Book> findAllBook();

dao接口实现类

/**
 * 查询返回数据个数
 * @return int
 */
@Override
public int selectCount() {
    String sql = "select count(*) from book";
    return jdbcTemplate.queryForObject(sql, Integer.class);
}


/**
 * 查询返回对象
 * @param id 请求参数
 * @return Book
 *
 * RowMapper 是接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装
 */
@Override
public Book findBookInfo(String id) {
    String sql = "select * from book where id = ?";

    // 调用方法
    return jdbcTemplate.queryForObject(sql, new
            BeanPropertyRowMapper<>(Book.class), id);
}

/**
 * 查询返回集合
 * @return List<Book>
 */
@Override
public List<Book> findAllBook() {
    String sql = "select * from book";
    //调用方法
    return jdbcTemplate.query(sql, new
            BeanPropertyRowMapper<>(Book.class));
}

service类

/**
  * 查询返回数据个数
  * @return int
 */
public int selectCount() {
    return bookDao.selectCount();
}

/**
 * 查询返回对象
 * @param id 请求参数
 * @return Book
 */
public Book findBookInfo(String id) {
    return bookDao.findBookInfo(id);
}

/**
 * 查询返回集合
 * @return List<Book>
 */
public List<Book> findAllBook() {
    return bookDao.findAllBook();
}

测试类

@Test
public void bookQueryTest(){

    ApplicationContext context =
            new ClassPathXmlApplicationContext("bean.xml");

    BookService bookService = context.getBean("bookService", BookService.class);

    int count = bookService.selectCount();
    System.out.println("数据个数为:" + count);

    Book book = bookService.findBookInfo("1");
    System.out.println("id为1的图书信息是:" + book.toString());

    List<Book> bookList = bookService.findAllBook();
    System.out.println("图书列表:" + bookList);
}

JdbcTemplate 操作数据库(批量操作)

dao接口

/**
 * 批量添加
 * @param batchArgs 请求参数
 */
void batchAddBook(List<Object[]> batchArgs);

/**
 * 批量修改
 * @param batchArgs 请求参数
 */
void batchUpdateBook(List<Object[]> batchArgs);

/**
 * 批量删除
 * @param batchArgs 请求参数
 */
void batchDeleteBook(List<Object[]> batchArgs);

dao接口实现类

/**
 * 批量添加
 * @param batchArgs 请求参数
 */
@Override
public void batchAddBook(List<Object[]> batchArgs) {
    String sql = "insert into book values(?, ?, ?)";
    int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
    System.out.println(Arrays.toString(ints));
}

/**
 * 批量修改
 * @param batchArgs 请求参数
 */
@Override
public void batchUpdateBook(List<Object[]> batchArgs) {
    String sql = "update book set book_name = ?,book_status = ? where id = ?";
    int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
    System.out.println(Arrays.toString(ints));
}

/**
 * 批量删除
 * @param batchArgs 请求参数
 */
@Override
public void batchDeleteBook(List<Object[]> batchArgs) {
    String sql = "delete from book where id = ?";
    int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
    System.out.println(Arrays.toString(ints));
}

service类

/**
 * 批量添加
 * @param batchArgs 请求参数
 */
public void batchAddBook(List<Object[]> batchArgs) {
    bookDao.batchAddBook(batchArgs);
}

/**
 * 批量修改
 * @param batchArgs 请求参数
 */
public void batchUpdateBook(List<Object[]> batchArgs) {
    bookDao.batchUpdateBook(batchArgs);
}

/**
 * 批量删除
 * @param batchArgs 请求参数
 */
public void batchDeleteBook(List<Object[]> batchArgs) {
    bookDao.batchDeleteBook(batchArgs);
}

测试类

/**
 * 测试 jdbc 批量添加
 */
@Test
public void bookBatchAddTest(){

    ApplicationContext context =
            new ClassPathXmlApplicationContext("bean.xml");

    BookService bookService = context.getBean("bookService", BookService.class);

    // 批量添加测试
    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.batchAddBook(batchArgs);
}

/**
 * 测试 jdbc 批量修改
 */
@Test
public void bookBatchUpdTest(){

    ApplicationContext context =
            new ClassPathXmlApplicationContext("bean.xml");

    BookService bookService = context.getBean("bookService", BookService.class);

    // 批量修改
    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.batchUpdateBook(batchArgs);
}

/**
 * 测试 jdbc 批量删除
 */
@Test
public void bookBatchDelTest(){

    ApplicationContext context =
            new ClassPathXmlApplicationContext("bean.xml");

    BookService bookService = context.getBean("bookService", BookService.class);

    // 批量删除
    List<Object[]> batchArgs = new ArrayList<>();
    Object[] o1 = {"3"};
    Object[] o2 = {"4"};
    batchArgs.add(o1);
    batchArgs.add(o2);
    // 调用方法实现批量删除
    bookService.batchDeleteBook(batchArgs);
}

标签:String,void,public,book,jdbcTemplate,id,batchArgs
From: https://www.cnblogs.com/zjh0420/p/16960486.html

相关文章