栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Spring——JdbcTemplate操作数据库

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spring——JdbcTemplate操作数据库

一、JdbcTemplate(概念和准备)

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

2、准备工作

(1)引入相关jar包

链接:https://pan.baidu.com/s/1KjSq-sdsz6wgXmPxvAY5ug 
提取码:oy66

(2)在spring配置文件中配置数据库连接池

    
    
        
        
        
        
        
    

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

    
    
        
        
    

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

①配置文件

    
    

②Service

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

③Dao

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

 (5)创建数据库

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

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

public class Book {
    private String userId;
    private String username;
    private String 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;
    }
}

2、编写service和dao

(1)在dao进行数据库添加操作

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

update(string sql,Object... args)

有两个参数(第一个参数:sql语句,第二个参数:可变参数,设置sql语句值)

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

    //添加的方法
    public void addBook(Book book){
        bookDao.add(book);
    }
}
@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);
    }

3、测试类

@Test
    public void testJdbacTemplate(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService =context.getBean("bookService", BookService.class);
        Book book =new Book();
        book.setUserId("1");
        book.setUsername("java");
        book.setUstatus("a");
        bookService.addBook(book);
    }

 一行受到影响

信息: {dataSource-1} inited
1

查看数据库

三、JdbcTemplate操作数据库(修改和删除)
//  1、修改
    @Override
    public void updateBook(Book book) {
        //  1、创建sql语句
        String sql = "update t_book set username=?,set ustatus=?where user_id=?";
        //  2、调用方法实现
        Object[] args = {book.getUsername(),book.getUstatus(),book.getUserId()};
        int update = jdbcTemplate.update(sql,args);
        System.out.println(update);
    }

 //  2、删除
    @Override
    public void delete(String id) {
        //  1、创建sql语句
        String sql = "delete from t_book where user_id=?";
        //  2、调用方法实现
        int update = jdbcTemplate.update(sql,id);
        System.out.println(update);
    }
    }

测试代码

   @Test
    public void testJdbacTemplate(){
        ApplicationContext context=
                new ClassPathXmlApplicationContext("bean1.xml");
        BookService bookService =context.getBean("bookService", BookService.class);
      //1、修改
        Book book =new Book();
        book.setUserId("1");
        book.setUsername("spring");
        book.setUstatus("oykq");
        bookService.updateBook(book);

 //     2、删除
        
    }

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

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

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

queryForObject(string sql,class requiredType)

有两个参数(第一个参数:SQL语句,第二个参数:返回类型Class)

    //查询表记录数
    @Override
    public int selectCount() {
        //  1、创建sql语句
        String sql = "select count(*) from t_book";
        //  2、调用方法实现
        Integer count= jdbcTemplate.queryForObject(sql,Integer.class);
        return count;
    }

测试代码

        //查询返回某个值
        int count =bookService.findCount();
        System.out.println(count);
    }

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

1、场景:查询图书详情

2、JdbcTemplate实现查询返回对象

queryForObject(string sql,RowMapper rowMapper,Object... args)

有三个参数(第一个参数:sql语句,第二个参数:RowMapper(是一个接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装),第三个参数:sql语句值)

    //查询返回对象
    @Override
    public Book findBookInfo(String id) {
        //  1、创建sql语句
        String sql = "select * from t_book where user_id=?";
        //  2、调用方法实现
        Book book= jdbcTemplate.queryForObject(sql,new  BeanPropertyRowMapper(Book.class),id);
        return book;
    }

测试代码

        //查询返回对象
        Book book = bookService.findOne("1");
        System.out.println(book);

测试结果

信息: {dataSource-1} inited
Book{userId='1', username='aaa', ustatus='a'}

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

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

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

query(string sql,RowMapper rowMapper,Object... args)

有三个参数(第一个参数:sql语句,第二个参数:RowMapper(是一个接口,针对返回不同类型数据,使用这个接口里面实现类完成数据封装),第三个参数(可忽略):sql语句值)

    //查询返回集合
    @Override
    public List findAllBook() {
        //  1、创建sql语句
        String sql = "select * from t_book";
        //  2、调用方法实现
        List bookList= jdbcTemplate.query(sql,new  BeanPropertyRowMapper(Book.class));
        return bookList;

测试代码

        //查询返回对象
        List bookList = bookService.findAll();
        System.out.println(bookList);

输出结果

信息: {dataSource-1} inited
[Book{userId='1', username='aaa', ustatus='a'}, Book{userId='2', username='bbb', ustatus='b'}]

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

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

2、JdbcTemplate实现批量添加操作

batchUpdate(String sql,List batchArgs) 

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

 service添加批量添加的方法

    //批量添加
    public void batchAdd(List batchArgs){
        bookDao.batchAddBook(batchArgs);
    }
@Override
    public void batchAddBook(List batchArgs) {
        String sql = "insert into t_user values(?,?,?)";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    } 

测试代码

        //批量添加
        List batchArgs =new ArrayList<>();
        Object[] o2 ={"4","javaweb","b"};
        Object[] o3 ={"5","mybatis","c"};
        Object[] o1 ={"6","springmvc","d"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        batchArgs.add(o3);
        bookService.batchAdd(batchArgs);

运行结果 

信息: {dataSource-1} inited
[1, 1, 1]

查看数据库

3、JdbcTemplate实现批量修改操作

    @Override
    public void batchUpdateBook(List 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 batchArgs =new ArrayList<>();
        Object[] o2 ={"c","javaweb","3"};
        Object[] o3 ={"b","mybatis","4"};
        Object[] o1 ={"a","springmvc","5"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        batchArgs.add(o3);
        bookService.batchUpdate(batchArgs);

3、JdbcTemplate实现批量删除操作

    //批量删除
    @Override
    public void batchDeleteBook(List batchArgs) {
        String sql = "delete from t_book where user_id=?";
        int[] ints = jdbcTemplate.batchUpdate(sql, batchArgs);
        System.out.println(Arrays.toString(ints));
    }
        //批量删除
        List batchArgs =new ArrayList<>();
        Object[] o1 ={"4"};
        Object[] o2 ={"5"};
        Object[] o3 ={"6"};
        batchArgs.add(o1);
        batchArgs.add(o2);
        batchArgs.add(o3);
        bookService.batchDelete(batchArgs);

目录

一、JdbcTemplate(概念和准备)

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

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

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

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

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

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


转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号