primavera JDBC
módulo de base de datos JDBC de primavera es responsable de la gestión de recursos y manejo de errores, simplifica en gran medida el funcionamiento de los desarrolladores de bases de datos, permitiendo a los desarrolladores de bases de datos liberados de operaciones tediosas, por lo tanto más energía en los procesos de negocio.
Análisis de primavera JdbcTemplate:
Para el funcionamiento de la base de datos, Spring Framework proporciona la clase JdbcTemplate, que es la base para la capa de abstracción de datos Spring Framework, otra clase abstracta alto nivel se construye encima de JdbcTemplate.
configuración de Spring JDBC
módulo SpringJDBC consiste en cuatro paquetes, a saber, el núcleo (core), el origen de datos (fuente de paquetes de datos), de objetos (paquetes de objetos) y apo (Support Package)
Núcleo: contiene la funcionalidad básica de JDBC, incluyendo JdbcTemplate etc.
DataSource: utilidad de acceso a fuentes de datos de clase, tiene que lograr una variedad de fuentes de datos
Objeto: un acceso orientado a objetos para bases de datos, que permite ejecutar la consulta y devuelve un resultado de objetos de negocio, atributos puede estar entre las columnas y el objeto de negocio en la tabla de datos de resultados de la consulta de mapas.
Soporte: que comprende el núcleo y el objeto, por ejemplo, una excepción de SQL conversión excepción
Los ejemplos de código se muestra:
Tiene una base de datos y tablas
métodos de interfaz de escritura:
interfaz pública PersonDao {
// add
public int addPerson (Persona p);
// actualización
public int updatePerson (Persona p);
// eliminar
public int deletePerson (int id);
// Según Identificación
Persona findPersonById pública (int id);
// Consulta todos
Lista pública <persona> findAllPerson ();
}
clases de interfaz de escritura:
public class PersonDaoImpl implementos PersonDao {
// Declarar propiedades JdbcTemplate y sus métodos setter
JdbcTemplate JdbcTemplate privado;
setJdbcTemplate pública vacío (JdbcTemplate JdbcTemplate) {
this.jdbcTemplate = JdbcTemplate;
}
// add
@Anular
public int addPerson (Persona p) {
// generada-Auto TODO Stub
// definir sql
Cadena sql = "INSERT INTO Persona (nombre, PWD) valor (?,?)";
// define matriz para almacenar parámetros declaración sql
Object [] obj = new Object [] {p.getName (), p.getPwd ()};
int num = this.jdbcTemplate.update (sql, obj);
num regresar;
}
@Anular
public int updatePerson (Persona p) {
// generada-Auto TODO Stub
// definir sql
Cadena SQL = "actualización persona nombre del set = ?, pwd = donde id =??";
// define matriz para almacenar parámetros declaración sql
Object [] obj = new Object [] {p.getName (), p.getPwd (), p.getId ()};
int num = this.jdbcTemplate.update (sql, obj);
num regresar;
}
@Anular
public int deletePerson (int id) {
// generada-Auto TODO Stub
// definir sql
Cadena SQL = "borrar de la persona donde id =?";
int num = this.jdbcTemplate.update (sql, id);
num regresar;
}
@Anular
Persona findPersonById pública (int id) {
// generada-Auto TODO Stub
// define una instrucción SQL
Cadena sql = "select * from persona donde id =?";
// crear un nuevo objeto es BeanPropertyRowMapper
RowMapper <persona> RowMapper = new BeanPropertyRowMapper <persona> (
Person.class);
// El id se une a la instrucción SQL se puede consultar la base de datos y la cartografía
retorno this.jdbcTemplate.queryForObject (sql, RowMapper, id);
}
@Anular
Lista pública <persona> findAllPerson () {
// generada-Auto TODO Stub
Cadena sql = "SELECT * FROM persona";
// crear un nuevo objeto es BeanPropertyRowMapper
RowMapper <persona> RowMapper = new BeanPropertyRowMapper <persona> (
Person.class);
// El id se une a la instrucción SQL se puede consultar la base de datos y la cartografía
retorno this.jdbcTemplate.query (sql, RowMapper);
}
}
clases de entidad de escritura:
public class Persona {
Identificación del private int;
private String nombre;
pwd cadena privada;
Persona pública () {
súper();
// generada automáticamente TODO talón de constructor
}
Persona pública (int id, String nombre, cadena PWD) {
súper();
this.id = id;
this.name = Nombre;
this.pwd = pwd;
}
public int getId () {
Identificación del retorno;
}
setId public void (int id) {
this.id = id;
}
Public String getName () {
Nombre del retorno;
}
pública setName void (String nombre) {
this.name = Nombre;
}
Cadena getPwd pública () {
pwd regresar;
}
setpwd pública vacío (PWD String) {
this.pwd = pwd;
}
@Anular
Cadena public toString () {
volver "Persona [id =" + Identificación + "name =" + nombre + "pwd =" + pwd + "]";
}
}
clases de prueba de escritura:
public class {testDemo
@Prueba
método public void () {
ApplicationContext aplicación = nuevo ClassPathXmlApplicationContext ( "applicationContext.xml");
JdbcTemplate JdbcTemplate = (JdbcTemplate) app.getBean ( "JdbcTemplate");
// utilizar declaraciones se ejecuta el método Execute () SQL para crear la tabla de Estudiantes
jdbcTemplate.execute ( "crear estudiante tabla (" +
"Id int clave principal," +
"Varchar nombre de usuario (50)," +
"Doble balance)");
System.out.println ( "Creación de acabado tabla sudent ...");
}
@Prueba
addMethod2 public void () {
ApplicationContext aplicación = nuevo ClassPathXmlApplicationContext ( "applicationContext.xml");
PersonDao pd = (PersonDao) app.getBean ( "PersonDao");
Persona p = new Persona ();
p.setName ( "Wei Yan");
p.setPwd ( "123");
int num = pd.addPerson (p);
System.out.println (num);
}
@Prueba
updateMethod3 public void () {
ApplicationContext aplicación = nuevo ClassPathXmlApplicationContext ( "applicationContext.xml");
PersonDao pd = (PersonDao) app.getBean ( "PersonDao");
Persona p = new Persona ();
p.setId (1);
p.setName ( "Zhao");
p.setPwd ( "123");
int num = pd.updatePerson (p);
System.out.println (num);
}
@Prueba
deleteMethod4 public void () {
ApplicationContext aplicación = nuevo ClassPathXmlApplicationContext ( "applicationContext.xml");
PersonDao pd = (PersonDao) app.getBean ( "PersonDao");
Persona p = new Persona ();
p.setId (1);
int num = pd.deletePerson (2);
System.out.println (num);
}
@Prueba
findPersonByIdMethod5 public void () {
ApplicationContext aplicación = nuevo ClassPathXmlApplicationContext ( "applicationContext.xml");
PersonDao pd = (PersonDao) app.getBean ( "PersonDao");
Persona findPersonById = pd.findPersonById (1);
System.out.println (findPersonById);
}
@Prueba
findAllPersonMethod6 public void () {
ApplicationContext aplicación = nuevo ClassPathXmlApplicationContext ( "applicationContext.xml");
PersonDao pd = (PersonDao) app.getBean ( "PersonDao");
Lista <persona> findAllPerson = pd.findAllPerson ();
para (p Persona: findAllPerson) {
System.out.println (p);
}
}
}
Escribir archivo de configuración:
<! - 1, la fuente de datos de configuración ->
<Bean id = clase "origen de datos" = "org.springframework.jdbc.datasource.DriverManagerDataSource">
<! - con bases de datos ->
<Property name = "driverClassName" value = "com.mysql.jdbc.Driver" />
<! - enlace a la URL de base de datos ->
<Nombre = valor de la propiedad "url" = "jdbc: mysql: // localhost: 3306 / demo" />
<! - nombre de usuario enlace a la base de datos ->
<Nombre de propiedad = valor "nombre de usuario" = "raíz" />
<! - Contraseña vincular la base de datos ->
<Nombre de propiedad = valor "contraseña" = "123456" />
</ Bean>
<! - 2, configurar plantillas de JDBC ->
<Bean id = clase "JdbcTemplate" = "org.springframework.jdbc.core.JdbcTemplate">
<! - por defecto debe utilizar una fuente de datos ->
<Property name = "dataSource" ref = "origen de datos" />
</ Bean>
<Bean id = clase "PersonDao" = "com.bdqn.cn.dao.PersonDaoImpl">
<Property name = "JdbcTemplate" ref = "JdbcTemplate" />
</ Bean>
Primavera de gestión de transacciones 's
modo de gestión de transacciones:
- gestión de transacciones programática
gestión de transacciones se logra mediante la escritura de código, incluyendo la definición del principio de la transacción, la transacción después de la normal y anormal cometer rollback de transacciones
- gestión de transacciones declarativa
gestión de transacciones se logra a través de la tecnología AOP, la idea principal es la gestión de los asuntos como un código de "aspecto", escrito por separado y luego por la tecnología de gestión de transacciones AOP se "corte" el código de tejido en la clase de objetivos de negocio
gestión de transacciones declarativa de dos maneras:
1, basado en el enfoque de gestión de transacciones declarativa XML es relevante comunicado por la configuración de reglas de negocio en el fichero de configuración de lograr. Spring2.0 más tarde, una transacción de configuración x espacio de nombres para el siguiente tx espacio de nombres <tx: advice> elemento para configurar la transacción de notificación (procesamiento de mejora). Cuando: Después <tx consejos> configura elementos de los servicios de procesamiento avanzadas, puede escribir por la configuración de AOP, que la primavera generar automáticamente el objetivo de proxy.