Ibatis proyecto web eclipse

0

Por admin | Para la categoría de java j2ee, struts | noticia del 30-09-2009

Tutorial de Ibatis

Lo primero, como bien dice la wikipedia ibatis es un marco de trabajo desarrollado por apache que se ocupa de la capa de persistencia, situándose entre la capa de negocio y la base de datos. Ibatis esta disponible para java .net y ruby on rails.

Ibatis cumple una función similar a la de hibernate, algunos desarrolladores consideran a ibatis una alternativa por su sencillez y por no presentar un lenguaje específico para consultas.

En la página web del proyecto ibatis enlace proyecto ibatis

ibatisproject

Recordar que este ejemplo esta realizado en linux ubuntu pero que es totalmente compatible con windows.

Descargar la versión 2.3.0 o la versión 2.3.4 con las que se ha probado el ejemplo, una vez descargado y desempaquetado el proyecto dentro de la carpeta lib tenemos un fichero .jar con la versión correspondiente. Ese fichero debemos del importarlo el directorio lib de nuestro proyecto web dinámico de eclipse.

Partimos de la situación del ejemplo jdbc eclipse, nos habíamos descargado mysql, y el jar driver para jdbc creando la base de datos libros_jdbc, con una tabla llamada libros. En ese ejemplo creabamos un servlet que por método get mostraba un formulario para enviar después los datos por método post, insertar los datos y mostrar un listado de lo almacenado en la tabla.

Enlace al ejemplo anterior Conexión a bases de datos j2ee jdbc eclipse

Clase Bean Libro.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package conexion;
 
public class Libro {
 
	private int id_libro;
	private String titulo_libro;
	private String autor_libro;
	private String tematica_libro;
 
	public int getId_libro() {
		return id_libro;
	}
	public void setId_libro(int id_libro) {
		this.id_libro = id_libro;
	}
	public String getTitulo_libro() {
		return titulo_libro;
	}
	public void setTitulo_libro(String titulo_libro) {
		this.titulo_libro = titulo_libro;
	}
	public String getAutor_libro() {
		return autor_libro;
	}
	public void setAutor_libro(String autor_libro) {
		this.autor_libro = autor_libro;
	}
	public String getTematica_libro() {
		return tematica_libro;
	}
	public void setTematica_libro(String tematica_libro) {
		this.tematica_libro = tematica_libro;
	}
 
 
}

Ficheros de configuración para ibatis son tres y los pondremos en un package ibatisMap

ficheroibatis

El fichero basedatos.java es el servlet del anterior ejemplo jdbc el utilizado para ibatis es BaseDatosIbatis.java

En el propio proyecto de apache ibatis tienen tutoriales indicando la funcionalidad de cada uno de los ficheros necesarios para ibatis

Creamos un fichero xml para el mapeo del bean Libro “Libro.xml”, este fichero contiene el conjunto de consultas que van a ser utilizadas para el bean asociado a la tabla libros

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
    PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-2.dtd">
<sqlMap namespace="Libro">
   <select id="getLibro" parameterClass="int" resultClass="conexion.Libro">
    SELECT 
    id as id_libro,
    titulo as titulo_libro,
    autor as autor_libro,
    tematica as tematica_libro        
    FROM libros
    WHERE id = #value#
 
   </select>
 
   <insert id="introducirLibro" parameterClass="conexion.Libro">
   INSERT INTO libros (id,titulo,autor,tematica) VALUES (#id_libro#,#titulo_libro#,#autor_libro#,#tematica_libro#)     
   </insert>  
 
   <select id="getLibros" resultClass="conexion.Libro">
   SELECT 
   id as id_libro,
   titulo as titulo_libro,
   autor as autor_libro,
   tematica as tematica_libro
   FROM libros         
   </select>  
 
</sqlMap>

fichero de propiedades para el ejemplo, sustituye a lo que se hacia en el anterior ejemplo jdbc al cargar el driver

1
2
3
4
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/libros_jdbc
username=root
password=root

Fichero de configuración de Sql Map

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
    PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
    "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
<sqlMapConfig>
 
 <properties resource="ibatisMap/sqlMapConfig.properties" />
 <settings
    cacheModelsEnabled="true"
    enhancementEnabled="true"
    lazyLoadingEnabled="true"
    maxRequests="32"
    maxSessions="10"
    maxTransactions="5"
    useStatementNamespaces="false"
  />
 
 
 <transactionManager type="JDBC">
 
    <dataSource type="SIMPLE">
      <property name="JDBC.Driver" value="${driver}"/>
      <property name="JDBC.ConnectionURL" value="${url}"/>
      <property name="JDBC.Username" value="${username}"/>
      <property name="JDBC.Password" value="${password}"/>
    </dataSource>
  </transactionManager>
 
 <sqlMap resource="ibatisMap/Libro.xml"/>
</sqlMapConfig>

Imagen de los jars utilizados

jars

Creamos una clase dentro del package conexion con el nombre BaseDatosIbatis.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
package conexion;
 
import java.io.IOException;
import java.sql.SQLException;
import java.io.Reader;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;
import com.ibatis.common.resources.Resources;
import java.io.PrintWriter;
import java.util.List;
import java.util.Iterator;
 
/**
 * Servlet implementation class for Servlet: BaseDatosIbatis
 *
 */
 public class BaseDatosIbatis extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {
   static final long serialVersionUID = 1L;
   private  SqlMapClient sqlMap = null;
    /* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#HttpServlet()
	 */
	public BaseDatosIbatis() {
		super();
	}  
 
	public void init() throws ServletException 
	{
		super.init();
 
		try
		{
			String recursos = "ibatisMap/SqlMapConfigLibro.xml";
			Reader leer = Resources.getResourceAsReader(recursos);
			sqlMap = SqlMapClientBuilder.buildSqlMapClient(leer);
 
		}
	    catch ( Exception e)
		{
 
	           System.out.print("error mapeo: "+e.getMessage());
 
		}
 
	}
 
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
 
		//mostramos el listado con el método get
		response.setContentType("text/html");
 
		//preparamos el objeto de salida
		PrintWriter salida = response.getWriter();
 
 
		//creamos la salida 
 
 
		salida.print("<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\n");
		salida.print("<html>\n");
	    salida.print("<head>\n");
	    salida.print("<link rel='stylesheet' type='text/css' href='css/estilo.css'/>\n");	    
	    salida.print("</head>\n");
		salida.print("<body>\n");
		salida.print("<div id='contenedor'>\n");
		salida.print("<h2> Libros jdbc </h2>");
		salida.print("<div id='imagen'>");
		salida.print("<img src='imagenes/registro.png' title='carpeta'/>");
		salida.print("</div>");
		salida.print("<form action='BaseDatosIbatis' method='post'>\n<br/>");
		salida.print("<label>Titulo</label>\n<br/>");
		salida.print("<input type='text' name='titulo'/>\n<br/>");
		salida.print("<label>Autor</label>\n<br/>");
		salida.print("<input type='text' name='autor'/>\n<br/>");		
		salida.print("<label>Tematica</label>\n<br/>");
		salida.print("<input type='text' name='tematica'/>\n<br/>");
		salida.print("<input class='boton' type='submit' value='enviar'/>\n<br/>");		
		salida.print("</form>\n<br/>");
		salida.print("<div id='pie'>");
		salida.print("<p> www.railsymas.com </p>");
		salida.print("</div>");
 
		salida.print("</div>\n");
		salida.print("</body>\n<br/>");
		salida.print("</html>");
 
 
	}  	
 
	/* (non-Java-doc)
	 * @see javax.servlet.http.HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String titulo = request.getParameter("titulo");
		String autor =  request.getParameter("autor");
		String tematica = request.getParameter("tematica");
 
 
 
		response.setContentType("text/html");
 
		PrintWriter salida = response.getWriter();
 
		//creamos el objeto libro
		Libro libro = new Libro();
 
		libro.setAutor_libro(autor);
		libro.setTematica_libro(tematica);
		libro.setTitulo_libro(titulo);
		libro.setId_libro(0);
 
	    //insertamos en la base de datos el objeto libro
 
		try
		{
		    //insertamos los datos recibidos de 
			sqlMap.insert("introducirLibro", libro);
 
			//recuperamos los datos de la base de datos
			List <Libro> resultado =   sqlMap.queryForList("getLibros");
 
			//mostramos el resultado
			salida.print("<!DOCTYPE html PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN' 'http://www.w3.org/TR/html4/loose.dtd'>\n");
			salida.print("<html>\n");
		    salida.print("<head><title>Mostramos los datos</title></head>\n");
		    salida.print("<link rel='stylesheet' type='text/css' href='css/estilo.css'/>\n");	
			salida.println("<body>");
			salida.print("<div id='contenedor'>\n");
			salida.print("<h2> Libros jdbc </h2>");
			salida.println("<table id='tabla'>");
			salida.println("<tr>");
			salida.println("<th>titulo</th><th>autor</th><th>tematica</th>");
			salida.println("</tr>");
			Iterator <Libro> iterador = resultado.iterator();
			while (iterador.hasNext())
			{
				Libro auxLibro = (Libro) iterador.next();
 
				salida.println("<tr>");				
				salida.println("<td class='impar'>"+auxLibro.getTitulo_libro()+"</td>");
				salida.println("<td class='par'>"+auxLibro.getAutor_libro()+"</td>");
				salida.println("<td class='impar'>"+auxLibro.getTematica_libro()+"</td>");
				salida.println("</tr>");
 
 
 
 
			}
 
			 salida.println("</table>");
			 salida.print("<div id='pie'>");
			 salida.print("<p> www.railsymas.com </p>");
			 salida.print("</div>");
			 salida.print("</div>\n");
			 salida.println("</body>");
			 salida.println("</html>");
 
 
		}
		catch (SQLException e)
		{
           System.out.print("error de consulta "+e.getMessage()); 			
		}
 
 
 
	}   	  	    
}

Escribe un comentario