前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring5之JdbcTemplate

Spring5之JdbcTemplate

作者头像
OY
发布2022-03-12 14:39:46
4070
发布2022-03-12 14:39:46
举报
文章被收录于专栏:OY_学习记录OY_学习记录

一、JdbcTemplate(概念和准备)

1、JdbcTemplate

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

2、过程准备

  1. 引入相关 jar 包
  1. 在 spring 配置文件配置数据库连接池
代码语言:javascript
复制
<!--数据库连接池-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
    <property name="url" value="jdbc:mysql:///user_db"/>
    <property name="username" value="root"/>
    <property name="password" value="6090"/>
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
</bean>
  1. 配置 JdbcTemplate 对象,注入 DataSource
代码语言:javascript
复制
<!--JdbcTemplate对象-->
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <!--注入 dateSource-->
    <property name="dataSource" ref="dataSource"></property>
</bean>
  1. 创建 service 类,创建 dao 类,在 dao 注入 jdbcTemplate 对象
  • 配置文件
代码语言:javascript
复制
<!--组件扫描-->
<context:component-scan base-package="com.oy.online.Spring"></context:component-scan>
  • Service
代码语言:javascript
复制
@Service
public class BookService {

    // 注入dao
    @Autowired
    private BookDao bookDao;
}
  • Dao
代码语言:javascript
复制
@Repository
public class BookDaoImpl implements BookDao {

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

二、JdbcTemplate 操作数据库(添加)

1、对应数据库创建实体类

代码语言:javascript
复制
public class Book {
    private String userId;
    private String username;
    private String ustatus;

    public User() {
    }

    public User(String userId, String username, String ustatus) {
        this.userId = userId;
        this.username = username;
        this.ustatus = ustatus;
    }

    public String getUserId() {
        return userId;
    }

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

    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;
    }

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

2、编写 service 和 dao

  1. 在 dao 进行数据库添加操作
  2. 调用 JdbcTemplate 对象里面 update 方法实现添加操作
  • 第一个参数: sql 语句
  • 第二个参数: 可变参数,设置 sql 语句值
代码语言:javascript
复制
@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()};
        jdbcTemplate.update(sql, args);
    }

}

3、测试类

代码语言:javascript
复制
@Test
public void jdbcTemplateTest(){
    ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");

    BookService bookService = context.getBean("bookService", BookService.class);
    Book book = new Book("1", "Java", "a");
    bookService.addBook(book);
}

三、JdbcTemplate 操作数据库(修改和删除)

1、修改

代码语言:javascript
复制
// 修改
@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);
}

2、删除

代码语言:javascript
复制
@Override
  public void deletes(String id) {
      String sql = "delete from t_book where user_id=?";
      int update = jdbcTemplate.update(sql, id);
      System.out.println(update);
  }

四、JdbcTemplate 操作数据库(查询返回某个值)

1、查询表里面有多少条记录,返回是某个值

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

  • 第一个参数: sql 语句
  • 第二个参数:返回类型 Class
代码语言:javascript
复制
@Override
public int selectCountBook() {
    String sql = "select count(*) from t_book";
    Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
    return count;
}

五、JdbcTemplate 操作数据库(查询返回对象)

1、场景:查询图书详情

2、JdbcTemplate 实现查询返回对象

  • 第一个参数:sql 语句
  • 第二个参数: RowMapper 是接口,针对返回不同的类型数据,使用这个接口里面实现类完成数据封装
  • 第三个参数:sql 语句的值
代码语言:javascript
复制
// 查询返回对象
@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;
}

六、JdbcTemplate 操作数据库(查询返回集合)

1、场景:查询图书列表分页

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

  • 第一个参数: sql 语句
  • 第二个参数:RowMapper 是接口,针对返回不同类型数据,使的这个接口里面实现类完成数据封装
  • 第三个参数:sql 语句
代码语言:javascript
复制
@Override
public List<Book> findAllBook() {
    String sql = "select * from t_book";
    // 调用方法
    List<Book> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<Book>(Book.class));
    return list;
}

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

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

2、JdbcTemplate 实现批量添加操作

  • 第一个参数: sql 语句
  • 第二个参数: List 集合,添加多条记录数据

批量添加

代码语言:javascript
复制
@Override
   public void batchAddBook(List<Object[]> batchArgs) {
       String sql = "insert into t_book value(?,?,?)";
       int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
       System.out.println(ints);
   }

测试:

代码语言:javascript
复制
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.bacthAdd(batchArgs);

3、JDBCTemplate 实现批量修改操作

代码语言:javascript
复制
@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));
}

测试:

代码语言:javascript
复制
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);

4、JdbcTemplate 实现批量删除操作

代码语言:javascript
复制
// 批量删除
@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));
}

测试:

代码语言:javascript
复制
//批量删除
List<Object[]> batchArgs = new ArrayList<>();Object[] o1 = {"3"};
Object[] o2 = {"4"};
batchArgs.add(o1);
batchArgs.add(o2);
//调用方法实现批量删除
bookService.batchDelete(batchArgs);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-07-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、JdbcTemplate(概念和准备)
    • 1、JdbcTemplate
      • 2、过程准备
      • 二、JdbcTemplate 操作数据库(添加)
        • 1、对应数据库创建实体类
          • 2、编写 service 和 dao
            • 3、测试类
            • 三、JdbcTemplate 操作数据库(修改和删除)
              • 1、修改
                • 2、删除
                • 四、JdbcTemplate 操作数据库(查询返回某个值)
                • 五、JdbcTemplate 操作数据库(查询返回对象)
                • 六、JdbcTemplate 操作数据库(查询返回集合)
                • 七、JdbcTemplate 操作数据库(批量操作)
                相关产品与服务
                数据库
                云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档