JdbcTemplate模板

时间:2021-07-24 03:14:05

一、简单查询案例

  1、创建studentdb实体类

package cn.student.entity;

public class Studentdb {
    private Integer sid; //编号
    private String sname;   //姓名
    private String saddress;    //地址

    public Integer getSid() {
        return sid;
    }

    public void setSid(Integer sid) {
        this.sid = sid;
    }

    public String getSname() {
        return sname;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getSaddress() {
        return saddress;
    }

    public void setSaddress(String saddress) {
        this.saddress = saddress;
    }
}

  2、创建Dao层接口

    JdbcTemplate模板

 

 

   3、创建Dao层实现类IStudentDaoImpl并实现查询方法

  @Override
    public List<Studentdb> getAllStudent() {
        //获取JDBC模板对象
        JdbcTemplate jdbcTemplate=getJdbcTemplate();
        String sql="select * from studentinfo";
        //执行查询操作
        List<Studentdb> stuList=jdbcTemplate.query(sql, new RowMapper<Studentdb>() {
            /**
             *
             * @param rs 结果集
             * @param i  当前的记录行
             * @return  方法的返回值,返回泛型
             * @throws SQLException
             */
            @Override
            public Studentdb mapRow(ResultSet rs, int i) throws SQLException {
                Studentdb stu=new Studentdb();
                stu.setSid(rs.getInt("sid"));
                stu.setSname(rs.getString("sname"));
                stu.setSaddress(rs.getString("saddress"));
                return stu;
            }
        });
       /* RowMapper<Studentdb> rowMapper=new BeanPropertyRowMapper<>(Studentdb.class);
        List<Studentdb> stuList=jdbcTemplate.query(sql,rowMapper);*/
        //最后返回list集合
        return stuList;
    }

  4、创建Service层

    JdbcTemplate模板

 

 

   5、创建Service实现层IStudentServiceImpl

package cn.student.service.impl;

import cn.student.dao.IStudentDao;
import cn.student.entity.Studentdb;
import cn.student.service.IStudentSerice;

import java.util.List;

public class IStudentServiceImpl implements IStudentSerice {
    //植入Dao层对象
    private IStudentDao iStudentDao;

    //查询的方法
    @Override
    public List<Studentdb> getAllStudent() {
        return iStudentDao.getAllStudent();
    }
     
public IStudentDao getiStudentDao(){ return iStudentDao; } public void setiStudentDao(IStudentDao iStudentDao){ this.iStudentDao=iStudentDao; } }

  6、配置jdbc.properties数据源

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/studentdb?useUniCode=true&characterEncoding=utf-8
jdbc.username=root
jdbc.password=123

  7、配置applicationContext.xml文件

<?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"
       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">
   
    <context:component-scan base-package="cn.student"/>
    <!--加载配置文件-->
    <context:property-placeholder location="classpath:database.properties"/>
    <!--
        DataSource供模板调用
        DriverManagerDataSource:spring提供管理数据源的
        c3p0数据源   dbcp数据源
    -->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property value="${jdbc.driver}" name="driverClassName"/>
        <property value="${jdbc.url}" name="url"/>
        <property value="${jdbc.username}" name="username"/>
        <property value="${jdbc.password}" name="password"/>
    </bean>

    <!--植入JDBCTemplate-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"></property>
    </bean>

    <!--注入Dao层对象-->
    <bean id="iStudentDao" class="cn.student.dao.impl.IStudentDaoImpl">
        <property name="jdbcTemplate" ref="jdbcTemplate"></property>
    </bean>

    <!--值入Service-->
    <bean id="iStudentService" class="cn.student.service.impl.IStudentServiceImpl">
        <property name="iStudentDao" ref="iStudentDao"></property>
    </bean>
</beans>

  8、Test测试

public class StudentTest {
    //查询的方法
    @Test
    public void stuTest(){
        ApplicationContext cxt=new ClassPathXmlApplicationContext("applicationContext.xml");
        IStudentSerice iStudentService = (IStudentSerice)cxt.getBean("iStudentService");
        List<Studentdb> stuList=iStudentService.getAllStudent();
        for (Studentdb a:stuList){
            System.out.println(a.getSname());
        }
    }
}

  9、测试结果如下

    JdbcTemplate模板

二、实现数据添加(applicationContext.xml文件和jdbc数据源在简单查询中已配置完毕

  1、在Dao层中添加实现数据添加的方法

    JdbcTemplate模板

 

   2、DaoImpl实现方法

 @Override
    public int addstu(Studentdb stu) {
        String sql="INSERT INTO studentinfo (sname,saddress) VALUES(?,?)";
        Object[] obj={stu.getSname(),stu.getSaddress()};
        int count = this.getJdbcTemplate().update(sql, obj);
        return count;
    }

  3、Service层定义相同该方法,

   ServiceImpl实现该方法

 //添加的方法
    @Override
    public int addstu(Studentdb stu) {
        return iStudentDao.addstu(stu);
    }

  4、Test测试

 //添加的方法
    @Test
    public void addstu(){
        ApplicationContext cxt=new ClassPathXmlApplicationContext("applicationContext.xml");
        IStudentSerice iStudentService = (IStudentSerice)cxt.getBean("iStudentService");
        Studentdb stus=new Studentdb();
        stus.setSname("赵六");
        stus.setSaddress("北京");
        int addstu = iStudentService.addstu(stus);
        System.out.println(addstu);
    }

  执行结果大于一表示添加成功

修改案例和添加案例几乎相同不做详细截图

三、实现数据删除

  1、在Dao层中添加实现数据删除的方法

    JdbcTemplate模板

 

   2、DaoImpl实现方法

  @Override
    public int delete(Integer sid) {
        String sql="delete from studentinfo where sid=?";
        int count = this.getJdbcTemplate().update(sql, sid);
        return count;
    }

  3、Service层定义相同该方法,

   ServiceImpl实现该方法

//删除的方法
    @Override
    public int delete(Integer sid) {
        return iStudentDao.delete(sid);
    }

  4、Test测试

//删除的方法
    @Test
    public void deletestu(){
        ApplicationContext cxt=new ClassPathXmlApplicationContext("applicationContext.xml");
        IStudentSerice iStudentService = (IStudentSerice)cxt.getBean("iStudentService");
        int delete = iStudentService.delete(7);
        System.out.println(delete);
    }

  执行结果大于一表示添加成功