Spring+Maven+JdbcTemplate实现对mysql数据库操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38409944/article/details/82712038

第一步导入需要的maven:

 <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.0.8.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.11</version>
    </dependency>
    <dependency>
      <groupId>commons-dbcp</groupId>
      <artifactId>commons-dbcp</artifactId>
      <version>1.4</version>
    </dependency>
  </dependencies>

第二步:配置数据源:

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useAffectedRows=true&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&useSSL=false
jdbc.username=root
jdbc.password=123456

第三步:配置实体类:

public class Teacher {
    Integer id;
    String teacher_name;
    String gender;
    String school_id;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getTeacher_name() {
        return teacher_name;
    }

    public void setTeacher_name(String teacher_name) {
        this.teacher_name = teacher_name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getSchool_id() {
        return school_id;
    }

    public void setSchool_id(String school_id) {
        this.school_id = school_id;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "id=" + id +
                ", teacher_name='" + teacher_name + '\'' +
                ", gender='" + gender + '\'' +
                ", school_id='" + school_id + '\'' +
                '}';
    }
}

第四步:配置封装JdbcTemplate的类:
使用注解和自动封装的方法。

@Repository
public class MyJdbcTemlate {

    @Autowired
    private JdbcTemplate jdbcTemplate;
    /*
      获取单个的列值,或者做统计查询:jdbcTemplate.queryForObject(sql,long.class);

   */
    public long testQueryForOne(){
        String sql = "SELECT COUNT(id) from teachers";
        long count = jdbcTemplate.queryForObject(sql,long.class);
        return count;
    }
    /*
    查询集合:jdbcTemplate.query
     */
    public List<Teacher> testQueryForList(int id){
        String sql = "select id,name 'teacher_name',gender,school_id from teachers where id >?";
        RowMapper<Teacher> rowMapper = new BeanPropertyRowMapper<>(Teacher.class);
        List<Teacher> list = jdbcTemplate.query(sql,rowMapper,id);
        return list;
    }
    /*
    数据库中获取一条数据:jdbcTemplate.queryForObject
    RowMapper指定如何去映射结果集的行,常用的实现类是BeanPropertyRowMapper
    项目中的bean字段要和数据库对应,可以使用别名的方法,完成列名和属性名的映射 如name 'teacher_name'
    不支持级联属性,比如一个bean的属性是另一个bean 因为jdbcTemplate只是一个jdbc的小工具,而不是mybatis等ORM框架
     */
    public Teacher testQueryForObject(int id){
        String sql = "select id,name 'teacher_name',gender,school_id from teachers where id = ?";
        RowMapper<Teacher> rowMapper = new BeanPropertyRowMapper<>(Teacher.class);
        Teacher teacher = jdbcTemplate.queryForObject(sql,rowMapper,id);
        return teacher;
    }
    /*
    批量更新:jdbcTemplate.batchUpdate
    最后一个参数是Object[]的list类型,因为修改一条记录需要一个Object的数组,那么多条数据就需要多个Object数组。
     */
    public void testBatchUpdate(){
        String sql = "INSERT INTO teachers(name,gender) values(?,?)";
        List<Object[]> list = new ArrayList<Object[]>();
        list.add(new Object[]{"AA","1"});
        list.add(new Object[]{"BB","1"});
        list.add(new Object[]{"CC","1"});
        list.add(new Object[]{"DD","2"});
        jdbcTemplate.batchUpdate(sql,list);
    }

    /*
    执行更新操作:jdbcTemplate.update
     */
    public void testUpdate(int id){
        String sql = "UPDATE teachers SET name = ? WHERE id = ?";
        jdbcTemplate.update(sql,"love",id);
    }
}

第五步:配置xml文件:

 <context:component-scan base-package="main"></context:component-scan>

   <context:property-placeholder location="db.properties"></context:property-placeholder>
   <bean id="datasource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
      <property name="url" value="${jdbc.url}"></property>
      <property name="driverClassName" value="${jdbc.driver}"></property>
      <property name="username" value="${jdbc.username}"></property>
      <property name="password" value="${jdbc.password}"></property>
   </bean>
   <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource="#{datasource}"></bean>

最后一步:测试:

public class Main {
    private static ApplicationContext applicationContext = null;
    public static void main(String[] args) throws SQLException {
        applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
        MyJdbcTemlate myJdbcTemlate = (MyJdbcTemlate)applicationContext.getBean("myJdbcTemlate");
        Teacher teacher = myJdbcTemlate.testQueryForObject(7017);
        System.out.println(teacher);
    }
}

输出:

Teacher{id=7017, teacher_name='love', gender='1', school_id='2'}

猜你喜欢

转载自blog.csdn.net/qq_38409944/article/details/82712038
今日推荐