124_Java_Spring5_JdbcTemplate

举报
alexsully 发表于 2021/08/12 12:02:33 2021/08/12
【摘要】 JdbcTemplate

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

1 导包
2 配置xml文件

prop.driverClass=com.mysql.jdbc.Driver
prop.url=jdbc:mysql://localhost:3306/t_spring?useSSL=false&characterEncoding=utf8
prop.userName=root
prop.password=xxx

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
                           http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
                           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">

<!--    组件扫描-->
    <context:component-scan base-package="com.alex"></context:component-scan>
    <!--引入外部属性文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <!--配置连接池-->

    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <!--        prop.driverClass=com.mysql.jdbc.Driver  ${key值}-->
        <property name="driverClassName" value="${prop.driverClass}"></property>
        <property name="url" value="${prop.url}"></property>
        <property name="username" value="${prop.userName}"></property>
        <property name="password" value="${prop.password}"></property>
    </bean>


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


public interface BookDao {
    void add(Book book);

    void deleteone(String id);

    void updateone(Book book);

    int querycount();

    Book queryBook(String id);

    List<Book> queryBooks();

    void batchAdd(List<Object []> args);

    void batchupdate(List<Object[]> args);

    void batchdelete(List<Object[]> args);
}
@Service
public class BookService {

    @Autowired
    private BookDao bookdao;

    //update 添加
    public void addBook(Book book){
        bookdao.add(book);
    }

//    update 删除
    public void deleteBook(String id){
        bookdao.deleteone(id);
    }

//    update 更新
    public void updateBook(Book book){
        bookdao.updateone(book);
    }

//    queryobject 查询

    public int queryCount(){
       return bookdao.querycount();
    }

    public Book queryone(String id ){
        return bookdao.queryBook(id);
    }

    public List<Book> querayall(){
        return bookdao.queryBooks();
    }


    public void batchaddBook(List<Object[]> args){
         bookdao.batchAdd(args);
    }

    public void batchupdateBook(List<Object[]> args){
        bookdao.batchupdate(args);
    }

    public void batchdeleteBook(List<Object[]> args){
        bookdao.batchdelete(args);
    }
}

1 添加/删除/更新

@Repository
public class BookDaoImpl implements BookDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    // update 插入
    @Override
    public void add(Book book) {
        String sql = "insert into t_book values(?,?,?)";
        Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()};

        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }

    // update 删除
    @Override
    public void deleteone(String id) {
        String sql = "delete from t_book where userid =?";
        int update = jdbcTemplate.update(sql, id);
        System.out.println(update);

    }

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

    }
}
   @Test
    public void test3(){
        ClassPathXmlApplicationContext context1 = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context1.getBean("bookService", BookService.class);
        Book book = new Book();
        book.setUserId("1");
        book.setUsername("java_1");
        book.setUstatus("a_1");

        bookService.updateBook(book);
    }

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

@Repository
public class BookDaoImpl implements BookDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

//    queryforobject 查询返回特殊值

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

//    queryforobject 查询返回单条记录
    @Override
    public Book queryBook(String id) {
        String sql = "select *  from t_book where userid =?";
        Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<Book>(Book.class), id);
        return book;
    }


//    query 返回一组bean 对象
    @Override
    public List<Book> queryBooks() {
        String sql = "select *  from t_book ";
        List<Book> books = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
        return books;
    }
}


3 批量添加 / 修改

@Repository
public class BookDaoImpl implements BookDao {

    @Autowired
    private JdbcTemplate jdbcTemplate;

//    批量添加
    @Override
    public void batchAdd(List<Object []> args) {
        String sql = "insert into t_book values(?,?,?)";
        // batchupdate 做了封装, 遍历 List<object []> 后 执行添加操作
        int[] ints = jdbcTemplate.batchUpdate(sql, args);
        System.out.println(Arrays.toString(ints));
    }


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

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

    }
}


   @Test
    public void test5(){
        ClassPathXmlApplicationContext context1 = new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService = context1.getBean("bookService", BookService.class);

        List<Object []> args = new ArrayList<>();
        Object[] s1 = {"3", "java_3", "a"};
        Object[] s2 = {"4", "java_4", "b"};
        Object[] s3 = {"5", "java_5", "c"};
        args.add(s1);
        args.add(s2);
        args.add(s3);

        bookService.batchaddBook(args);

    }


【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。