Setenta y cuatro, consulta de operación Spring y DAO ()

La clase JdbcTemplate también proporciona una gran cantidad de métodos de consulta () para manejar varias operaciones de consulta en las tablas de la base de datos. Entre ellos, varios métodos query() de uso común se muestran en la siguiente tabla:

método ilustrar
Consulta de lista (String sql, RowMapper rowMapper) Ejecute la instrucción SQL proporcionada por el parámetro de tipo de cadena y devuelva un resultado de tipo Lista a través de RowMapper.
Consulta de lista (String sql,PreparedStatementSetter pss RowMapper rowMapper) Cree un objeto PreparedStatement de acuerdo con la instrucción SQL proporcionada por el parámetro de tipo de cadena y devuelva el resultado a la Lista a través de RowMapper.
Consulta de lista (String sql, Object [] args, RowMapper rowMapper) Use el valor de Object[] para establecer el valor del parámetro en la instrucción SQL y use el método de devolución de llamada RowMapper para devolver directamente los datos de tipo List.
queryForObject(String sql,RowMapper rowMapper,Object...args) Vincule el parámetro args a la instrucción SQL y devuelva un registro de una sola fila de tipo Object a través de RowMapper.

queryForList( string sql,Objeto[] argumentos,

clase<T> tipo de elemento)

Este método puede devolver el resultado de varias filas de datos, pero debe devolver una lista y el parámetro elementType devuelve el tipo de elemento List.

contenido

Operación de consulta en DB

conexión de primer plano

Implementación de casos

Los objetos de plantilla JDBC son de múltiples instancias


Operación de consulta en DB

        Todos los resultados de la consulta de la plantilla JDBC se devuelven en forma de objetos. Según los diferentes tipos de objetos devueltos, las consultas se pueden dividir en dos categorías: consultas de objetos simples y consultas de objetos personalizados.

  • Consulta de objeto simple: el resultado de la consulta es un tipo de objeto simple, como String e Integer, o un tipo de colección de este tipo como elemento, como List, etc.
  • Consulta de objeto personalizado: el resultado de la consulta es un tipo personalizado, como Usuario, o un tipo de colección que usa este tipo como elemento, como Lista.

conexión de primer plano

Spring y la operación DAO se ejecutan () icono-predeterminado.png?t=M1L8https://blog.csdn.net/m0_54925305/article/details/123149019?spm=1001.2014.3001.5501

Actualización de operación Spring y DAO() icono-predeterminado.png?t=M1L8https://blog.csdn.net/m0_54925305/article/details/123169124?spm=1001.2014.3001.5501

        Nota: Los siguientes casos se basan en el caso anterior para ampliar la operación de consulta

Implementación de casos

        1. Insertar datos en la base de datos

mysql> select * from account;
Empty set (0.00 sec)

mysql> insert into account(username,balance) value("孙悟空",100);
Query OK, 1 row affected (0.04 sec)

mysql> insert into account(username,balance) value("唐僧",1000.00);
Query OK, 1 row affected (0.01 sec)

mysql> insert into account(username,balance) value("猪八戒",2000.00);
Query OK, 1 row affected (0.01 sec)

mysql> insert into account(username,balance) value("沙僧",5000.00);
Query OK, 1 row affected (0.00 sec)

mysql> select * from account;
+----+-----------+---------+
| id | username  | balance |
+----+-----------+---------+
|  1 | 孙悟空    |     100 |
|  2 | 唐僧      |    1000 |
|  3 | 猪八戒    |    2000 |
|  4 | 沙僧      |    5000 |
+----+-----------+---------+
4 rows in set (0.00 sec)

        2. Agregar método de consulta a AccountDao

	// 通过id查询
	public Account findAccountByid(int id);

	// 查询所有账户
	public List<Account> finfAllccount();

        3. Agregar método de consulta a AccountDaoImpl

	// 查询账户信息
	@Override
	public Account findAccountByid(int id) {
		// 定义SQL语句
		String sql = "select * from account where id=?";
		// 创建一个新的rowMapper对象
		RowMapper<Account> rowMapper = new BeanPropertyRowMapper<Account>(Account.class);
		// 将id 绑定到SQL语句中,通过RowMapper返回一个Object类型的当行记录
		return this.jdbcTemplate.queryForObject(sql, rowMapper, id);
	}

	// 查询所有账户信息
	@Override
	public List<Account> finfAllccount() {
		// 定义SQL
		String sql = "select * from account";
		// 创建一个新的rowMapper对象
		RowMapper<Account> rowMapper = new BeanPropertyRowMapper<Account>(Account.class);
		// 执行静态的SQL查询,通过RowMapper返回结果
		return this.jdbcTemplate.query(sql, rowMapper);
	}

        4. Cree la clase de prueba JdbcTemplateTest_delete

package com.Example.jdbc;

import java.util.List;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class JdbcTemplateTest_delete {
	public static void main(String[] args) {
		// 加载配置文件
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		// 获取AccountDao实例
		AccountDao accountDao = (AccountDao) applicationContext.getBean("accountDao");
		// 执行deleteAccount()方法,并获取返回结果
		int num = accountDao.deleteAccount(1);
		if (num > 0) {
			System.out.println("成功删除了" + num + "条数据!");
		} else {
			System.out.println("删除操作执行失败!");
		}
	}

	@Test
	public void findAccountByIdTest() {
		// 加载配置文件
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		// 获取AccountDao实例
		AccountDao accountDao = (AccountDao) applicationContext.getBean("accountDao");
		// 执行findAccountById()方法
		Account account = accountDao.findAccountById(1);
		System.out.println(account);
	}

	@Test
	public void findAllAccountTest() {
		// 加载配置文件
		ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
		// 获取AccountDao实例
		AccountDao accountDao = (AccountDao) applicationContext.getBean("accountDao");
		// 执行findAllAccount()方法,获取Account对象的集合
		List<Account> account = accountDao.findAllAccount();
		// 循环输出集合中的对象
		for (Account act : account) {
			System.out.println(act);
		}
	}

}

        5. Encuentre un solo dato y ejecute el método findAccountByIdTest

        6. Encuentre todos los datos y ejecute el método findAllAccountTest

Instancias múltiples de objeto de plantilla JDBC

        El objeto JdbcTemplate es de varias instancias , es decir, el sistema crea una instancia de JdbcTemplate para cada subproceso (método) que utiliza el objeto de plantilla y libera automáticamente la instancia de JdbcTemplate cuando finaliza el subproceso (método). Entonces, cada vez que usa el objeto JdbcTemplate, debe obtenerlo a través del método getJdbcTemplate().

Supongo que te gusta

Origin blog.csdn.net/m0_54925305/article/details/123177719
Recomendado
Clasificación