Spring

spring jdbc Template操作

2018-05-29  本文已影响12人  DouDouZH

一、介绍

1、spring框架是一站式框架
2、spring对不同的持久化层的技术都进行了封装
3、jdbcTemplate和dbUtils使用很相似,都是对数据库进行crud操作

二、增加操作

1、导入相关的jar包
image.png
2、创建对象设置数据库信息
image.png
3、创建jdbcTemplate对象,设置数据源
image.png
4、调用jdbcTompiate对象里的方法实现操作
image.png
5、代码

TestAdd.java

import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class TestAdd {
    //修改操作
    @Test
    public void add() {
        DriverManagerDataSource dataSource=new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/person");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        
        //创建jdbcTemplate对象,设置数据源
        JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
        //调用jdbcTemplate对象方法实现操作
        String sql="insert into person(name,age,sex) values(?,?,?)";
        String [] data={"zhangsan","20","nan"};
        int row=jdbcTemplate.update(sql, data);
        System.out.println(row);
    }
}
6、运行结果
控制台 数据库

三、修改操作

1、设置数据库信息
2、创建jdbcTemplate
3、调用jdbcTemplate模版的方法实现
4、代码

update.java

package work.doudou.test;

import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class update {
    //添加操作
    @Test
    public void updata() {
        DriverManagerDataSource dataSource=new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/person");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        
        //创建jdbcTemplate对象,设置数据源
        JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
        //调用jdbcTemplate对象方法实现操作
        String sql="update person set name=? where name=?";
        String [] data={"lisi","zhangsan"};
        int row=jdbcTemplate.update(sql, data);
        System.out.println(row);
    }
}
5、运行结果
控制台 数据库

四、删除操作

1、设置数据库信息
2、创建jdbcTemplate
3、调用jdbcTemplate模版的方法实现
4、代码

delete.java

package work.doudou.test;

import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class delete {
    //删除操作
    @Test
    public void delete() {
        DriverManagerDataSource dataSource=new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/person");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        
        //创建jdbcTemplate对象,设置数据源
        JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
        //调用jdbcTemplate对象方法实现操作
        String sql="delete from person where name=?";
        String [] data={"lisi"};
        int row=jdbcTemplate.update(sql, data);
        System.out.println(row);
    }
}

5、运行结果


控制台 数据库

五、查询操作

1、使用jdbcTemplate实现查询操作
2、查询具体实现
(1)返回一个值 queryForObject(sql, requiredType)

代码seletc.java

package work.doudou.test;

import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.experimental.theories.FromDataPoints;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

public class seletc {
    //查询操作
    @Test
    public void seletcCount() {
        DriverManagerDataSource dataSource=new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/person");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        
        //创建jdbcTemplate对象,设置数据源
        JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
        //调用方法得到记录数
        String sql="select count(*) from person";
        //调用jdbcTemplate的方法
        int count=jdbcTemplate.queryForObject(sql, Integer.class);
        System.out.println(count);
    }
}

运行结果


查到3条数据
数据库有3条数据
(2)返回一个对象 queryForObject(sql, rowMapper, args)
package work.zhangdouou.bean;

public class UserBean {
    private int id;
    private String name;
    private int age;
    private String sex;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "UserBean [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
    }   
}

MyRowMapper .java

package work.doudou.myrowmapper;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.RowMapper;

import work.zhangdouou.bean.UserBean;

public class MyRowMapper implements RowMapper<UserBean> {

    @Override
    public UserBean mapRow(ResultSet rs, int num) throws SQLException {
        //1从结果集得到数据
        int id=rs.getInt("id");
        String name=rs.getString("name");
        int age=rs.getInt("age");
        String sex=rs.getString("sex");
        //2把得到数据封装到对象
        UserBean userBean=new UserBean();
        userBean.setId(id);
        userBean.setName(name);
        userBean.setAge(age);
        userBean.setSex(sex);
        return userBean;
    }
}

seletc.java

package work.doudou.test;

import static org.junit.Assert.*;

import java.sql.ResultSet;
import java.sql.SQLDataException;

import javax.swing.tree.RowMapper;
import javax.swing.tree.TreePath;

import org.junit.Test;
import org.junit.experimental.theories.FromDataPoints;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import work.doudou.myrowmapper.MyRowMapper;
import work.zhangdouou.bean.UserBean;

public class seletc {

    //查询操作,查询返回对象
    @Test
    public void seletcBean() {
        DriverManagerDataSource dataSource=new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/person");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        
        //创建jdbcTemplate对象,设置数据源
        JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
        //调用方法得到记录数
        String sql="select * from person where name=?";
        String [] data={"zhangsan"};
        //调用jdbcTemplate的方法
        //第二个方法是个借口你RoMapper需要自己实现接口,自己封装数据
        UserBean userBean=jdbcTemplate.queryForObject(sql, new MyRowMapper(), data);    
        System.out.println(userBean.toString());
    }       
}

运行结果


image.png
(3)返回list集合 query(sql, rse, args)
package work.zhangdouou.bean;

public class UserBean {
    private int id;
    private String name;
    private int age;
    private String sex;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    @Override
    public String toString() {
        return "UserBean [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + "]";
    }   
}

MyRowMapper .java

package work.doudou.myrowmapper;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.jdbc.core.RowMapper;

import work.zhangdouou.bean.UserBean;

public class MyRowMapper implements RowMapper<UserBean> {

    @Override
    public UserBean mapRow(ResultSet rs, int num) throws SQLException {
        //1从结果集得到数据
        int id=rs.getInt("id");
        String name=rs.getString("name");
        int age=rs.getInt("age");
        String sex=rs.getString("sex");
        //2把得到数据封装到对象
        UserBean userBean=new UserBean();
        userBean.setId(id);
        userBean.setName(name);
        userBean.setAge(age);
        userBean.setSex(sex);
        return userBean;
    }
}

seletc.java

package work.doudou.test;

import static org.junit.Assert.*;

import java.sql.ResultSet;
import java.sql.SQLDataException;
import java.util.List;

import javax.swing.tree.RowMapper;
import javax.swing.tree.TreePath;

import org.junit.Test;
import org.junit.experimental.theories.FromDataPoints;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;

import work.doudou.myrowmapper.MyRowMapper;
import work.zhangdouou.bean.UserBean;

public class seletc {
    
    //查询操作返回list
    @Test
    public void seletcList() {
        DriverManagerDataSource dataSource=new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/person");
        dataSource.setUsername("root");
        dataSource.setPassword("root");
        
        //创建jdbcTemplate对象,设置数据源
        JdbcTemplate jdbcTemplate=new JdbcTemplate(dataSource);
        //调用方法得到记录数
        String sql="select * from person";
        //调用jdbcTemplate的方法
        //第二个方法是个借口你RoMapper需要自己实现接口,自己封装数据
        List<UserBean> list = jdbcTemplate.query(sql, new MyRowMapper());   
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i).toString());
        }
    }   
}

运行结果


image.png
上一篇下一篇

猜你喜欢

热点阅读