美文网首页Spring
spring jdbc Template操作

spring jdbc Template操作

作者: DouDouZH | 来源:发表于2018-05-29 12:00 被阅读12次

    一、介绍

    1、spring框架是一站式框架
    • 针对javaee三层,每一层都有解决技术
    • 在dao层,使用jdbcTemplate
    2、spring对不同的持久化层的技术都进行了封装
    • jdbcTomplte对jdbc进行了封装
    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实现查询操作
    • jdbcTemplate有接口RowMapper
    • jdbcTemplate对这个接口没有提供实现类,得到不同的数据类型需要自己进行封装
    2、查询具体实现
    (1)返回一个值 queryForObject(sql, requiredType)
    • 第一个参数是SQL语句
    • 第二个参数是返回类型的class

    代码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)
    • 要自己写封装类
      UserBean.java
    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)
    • sql语句
    • RowMapper接口,自己写类实现封装
    • 可变参数
      UserBean.java
    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

    相关文章

      网友评论

        本文标题:spring jdbc Template操作

        本文链接:https://www.haomeiwen.com/subject/ebknjftx.html