Hand tear Spring5 framework (eight) operation JdbcTemplate

What is JdbcTemplate?

The Spring framework encapsulates the JDBC, and the JDBCTemplate is used to facilitate the realization of the database.

How to use jdbcTemplate?

Ready to work

  • Reference jar package  
 <!--jdbcTemplate相关依赖-->

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-orm</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>5.2.8.RELEASE</version>
        </dependency>
        <!--mysql 数据库驱动-->
        <!-- Mysql驱动包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.13</version>
        </dependency>

        <!--数据库连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.14</version>
        </dependency>
  • Configure database connection pool
<context:component-scan base-package="org.learn.spring5"></context:component-scan>
    <!--引入外部的配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>   
	<!--配置数据库连接-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <property name="url" value="${prop.url}"></property>
        <property name="username" value="${prop.userName}"></property>
        <property name="password" value="${prop.password}"></property>
        <property name="driverClassName" value="${prop.driverClass}"></property>
    </bean>
  • Configure the jdbcTemplate object and inject the DataSource
<!--JdbcTemplate对象创建,注入dataSource对象-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--注入dataSource对象-->
        <property name="dataSource" ref="dataSource"></property>
    </bean>
  • Create jdbc.properties
prop.driverClass=com.mysql.cj.jdbc.Driver
prop.url=jdbc:mysql://127.0.0.1:3306/spring5-demo?characterEncoding=utf8&useSSL=false&serverTimezone=GMT%2B8&zeroDateTimeBehavior=CONVERT_TO_NULL
prop.userName=root
prop.password=123456
  • Create service class, dao class, inject jdbcTemplate object in dao class
package org.learn.spring5.service.impl;

import org.learn.spring5.dao.impl.UserDaoImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {
    //注入UserDao的对象
    @Autowired
    private UserDaoImpl userDao;

}

 

package org.learn.spring5.dao.impl;

import org.learn.spring5.service.impl.UserServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;

public class UserDaoImpl implements UserDao{

    //注入JdbcTemplate對象
    @Autowired
    private JdbcTemplate jdbcTemplate;
}
  • Write entity class User
package org.learn.spring5.entiy;

public class User {
    //id
    private Integer id;
    //用户名
    private String userName;
    //用户状态
    private Integer status;

    public Integer getId() {
        return id;
    }

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

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }
}
  •  Create data and table structure
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user`  (
  `id` int(11) NOT NULL,
  `user_name` varchar(22) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `status` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

Specific operation

  • JdbcTemplate operation database-add function

1) Add the add method in the UserDaoImpl class

2) Call the update method of the JdbcTemplate object

package org.learn.spring5.dao.impl;

import org.learn.spring5.entiy.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Component;

@Component
public class UserDaoImpl implements UserDao{

    //注入JdbcTemplate對象
    @Autowired
    private JdbcTemplate jdbcTemplate;

    public void add(User user) {
        //1.創建sql語句
        String sql="insert into t_user values(?,?,?)";
        //2.調用方法实现
        Object[] args={user.getId(),user.getUserName(),user.getStatus()};
        int update = jdbcTemplate.update(sql, args);
        System.out.println(update);
    }
}

3) Write test program

import org.junit.Test;
import org.learn.spring5.entiy.User;
import org.learn.spring5.service.impl.UserService;
import org.learn.spring5.service.impl.UserServiceImpl;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestSpring5 {
    /**
     * 操作JdbcTemplate,添加操作
     */
    @Test 
    public void testAdd() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        User user = new User();
        user.setId(1);
        user.setUserName("张三");
        user.setStatus(1);
        userService.addUser(user);

    }


}

The program returns result 1, the identification data is added successfully!

  • JdbcTemplate operation database-modification function
public int update(User user) {
        String sql = "update t_user set user_name =?,status=? where id =?";
        Object[] args = {user.getUserName(), user.getStatus(), user.getId()};
        int update = jdbcTemplate.update(sql, args);

        return update;
    }

Write test program

   //JdbcTemplate修改操作
    @Test
    public void testUpdate() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        User user = new User();
        user.setId(1);
        user.setUserName("张四");
        user.setStatus(0);
        userService.update(user);
    }
  • JdbcTemplate operation database-query function

1) The query returns a certain value

 public int queryCount() {
        String sql = "select count(*) from t_user";
        Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
        return count;
    }

Write test program

//JdbcTemplate 查询操作,返回用户的数量
    @Test
    public void testQueryCount() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        int count = userService.queryCount();
        System.out.println(count);
    }

2) The query returns the object

public User findOne(Integer id) {
        String sql = "select * from t_user where id =?";
        User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<User>(User.class), id);
        return user;
    }

Write test program

 //JdbcTemplate 查询操作,返回对象根据id
    @Test
    public void testQueryById() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        User user = userService.queryById(1);
        System.out.println(user);
    }

3) The query returns a collection

//JdbcTemplate 查询操作,返回集合对象
    @Test
    public void testFindAll() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        List<User> all = userService.findAll();
        System.out.println(all);
    }

Write test program

  //JdbcTemplate 查询操作,返回集合对象
    @Test
    public void testFindAll() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        List<User> all = userService.findAll();
        System.out.println(all);
    }
  • JdbcTemplate operation database-delete function
 public int del(Integer id) {
        String sql = "delete from t_user where id =?";
        int update = jdbcTemplate.update(sql, id);
        return update;
    }

Write test program

 //JdbcTemplate删除操作
    @Test
    public void testDel() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        userService.del(1);
    }
  • JdbcTemplate operation database-batch add
    public void batchAdd(List<Object[]> users) {
        String sql = "insert into t_user values(?,?,?)";
        int[] ints = jdbcTemplate.batchUpdate(sql, users);
        System.out.println(Arrays.asList(ints));

    }

Write test program

  //JdbcTemplate 批量添加操作
    @Test
    public void batchAdd() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        List<Object[]> list = new ArrayList<Object[]>();
        Object[] o1 = {"4","name1",0};
        Object[] o2 = {"5","name2",0};
        Object[] o3 = {"6","name3",0};
        list.add(o1);
        list.add(o2);
        list.add(o3);
        userService.batchAdd(list);
    }
  • JdbcTemplate operation database-batch modification and deletion
//批量修改操作
  public void batchUpdate(List<Object[]> users) {
        String sql = "update t_user set user_name =?,status=? where id =?";
        int[] ints = jdbcTemplate.batchUpdate(sql, users);
        System.out.println(Arrays.asList(ints).toString());

    }
//批量删除操作
    public void batchDel(List<Object[]> users) {
        String sql = "delete from t_user where id =?";
        int[] ints = jdbcTemplate.batchUpdate(sql, users);
        System.out.println(ints);
    }

Write test program

//JdbcTemplate 批量修改操作
    @Test
    public void batchUpdate() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        List<Object[]> list = new ArrayList<Object[]>();
        Object[] o1 = {"namexiugai", 1, 4};
        Object[] o2 = {"name2xiugai", 1, 5};
        Object[] o3 = {"name3xiugai", 1, 6};
        list.add(o1);
        list.add(o2);
        list.add(o3);
        userService.batchUpdate(list);
    }

    //JdbcTemplate 批量删除操作
    @Test
    public void batchDel() {
        ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
        UserService userService = context.getBean("userServiceImpl", UserServiceImpl.class);
        List<Object[]> list = new ArrayList<Object[]>();
        Object[] o1 = {4};
        Object[] o2 = {5};
        Object[] o3 = {6};
        list.add(o1);
        list.add(o2);
        list.add(o3);
        userService.batchDel(list);
    }

 

Guess you like

Origin blog.csdn.net/java_cxrs/article/details/108413476