Como complemento al Post anterior aquí va un ejemplo de Base de datos, Java, Mysql, Open Source, Programación e IBatis para poder dar una idea de las diferentes opciones que hay en cuanto al manejo de Data Base.
Es un sistema de almacenamiento de formulas en una droguería. A continuacion creamos los DTO:
package com.serunix.model;
import java.util.List;
/**
* author hgroj@s
*
*/
public class Recipe {
private int recipeId;
private String patientName;
private List medicaments;
}
_______________________________________
package com.serunix.model;
/**
* @author hgroj@s
*
*/
public class Medicament {
private int medicamentId;
private String name;
private String description;
private Recipe recipe;
}
Luego creamos los Servicios:
package com.serunix.model.services;
import java.util.List;
import com.serunix.model.Recipe;
/**
* @author hgroj@s
*
*/
public interface RecipeDaoImpl {
List getAllRecipes();
Recipe getRecipeById(Integer id);
}
_______________________________________
package com.serunix.model.services;
import java.util.List;
import com.serunix.model.Medicament;
/**
* @author hgroj@s
*
*/
public interface MedicamentDaoImpl {
List getAllMedicaments();
Medicament getMedicamentById(Integer id);
int update(Medicament medicament);
Boolean insert(Medicament medicament);
int delete(Integer id);
}
Creamos los Los Daos:
package com.serunix.model.daos;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.serunix.model.Recipe;
import com.serunix.model.services.RecipeDaoImpl;
/**
* @author hgroj@s
*
*/
public class RecipeDao extends SqlMapClientDaoSupport implements RecipeDaoImpl {
public List getAllRecipes() {
return (List)getSqlMapClientTemplate().queryForList("Recipe.getAllRecipes", null);
}
public Recipe getRecipeById(Integer id) {
return (Recipe)getSqlMapClientTemplate().queryForObject("Recipe.getRecipeById", id);
}
}
_______________________________________
package com.serunix.model.daos;
import java.util.List;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import com.serunix.model.Medicament;
import com.serunix.model.services.MedicamentDaoImpl;
/**
* @author hgroj@s
*
*/
public class MedicamentDao extends SqlMapClientDaoSupport implements MedicamentDaoImpl {
public List getAllMedicaments() {
return (List) getSqlMapClientTemplate().queryForList("getAllMedicaments", null);
}
public Medicament getMedicamentById(Integer id) {
return ((Medicament)getSqlMapClientTemplate().queryForObject("getMedicamentById", id));
}
public int update(Medicament medicament) {
return getSqlMapClientTemplate().update("update", medicament);
}
public Boolean insert(Medicament medicament) {
return (Boolean)getSqlMapClientTemplate().insert("insert", medicament);
}
public int delete(Integer id) {
return (int)getSqlMapClientTemplate().delete("delete", id);
}
}
En seguida el mapeo XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Medicament">
<cacheModel id="recipeCache" type="MEMORY" readOnly="false" >
<flushInterval hours="24"/>
</cacheModel>
<resultMap class="com.serunix.model.Medicament" id="medicamentsMap">
<result property="medicamentId"
column="medicamentId"/>
<result property="name"
column="name"/>
<result property="description"
column="description"/>
</resultMap>
<select id="findMedicaments" parameterClass="java.lang.Integer" resultMap="medicamentsMap" cacheModel="recipeCache">
SELECT * FROM tcmedicaments WHERE recipeId = #id#;
</select>
</sqlMap>
_______________________________________
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Recipe">
<cacheModel id="recipeCache" type="MEMORY" readOnly="false" >
<flushInterval hours="24"/>
</cacheModel>
<resultMap class="com.serunix.model.Recipe" id="recipeMap">
<result property="recipeId"
column="recipeId"/>
<result property="patientName"
column="patientName"/>
<result property="medicaments"
column="recipeId" select="Medicament.findMedicaments" />
</resultMap>
<select id="getRecipeById" parameterClass="java.lang.Integer" resultMap="recipeMap" cacheModel="recipeCache">
SELECT * FROM trrecipes WHERE recipeId = #id#;
</select>
</sqlMap>
Y no olvidemos el spring-context.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
"http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>
<property name="url"><value>jdbc:mysql://127.0.0.1/SU BASE</value></property>
<property name="username"><value>SU USUARIO</value></property>
<property name="password"><value>SU PASSWORD</value></property>
</bean>
<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="dataSource"><ref bean="dataSource"/></property>
<property name="configLocation">
<value>classpath:SqlMapConfig.xml</value>
</property>
<property name="useTransactionAwareDataSource">
<value>true</value>
</property>
</bean>
<bean id="recipeDao" class="com.serunix.model.daos.RecipeDao">
<property name="sqlMapClient">
<ref bean="sqlMapClient"/>
</property>
</bean>
</beans>
Por ultimo un Main de testeo, espero les sirva….
package test;
import java.util.Iterator;
import org.apache.log4j.Logger;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.serunix.model.Medicament;
import com.serunix.model.Recipe;
import com.serunix.model.daos.RecipeDao;
/**
* @author hgroj@s
*
*/
public class TestDaos {
protected static Logger logger = Logger.getLogger(TestDaos.class);
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ClassPathXmlApplicationContext ctxt = new ClassPathXmlApplicationContext("spring-context.xml");
RecipeDao repl = (RecipeDao) ctxt.getBean("recipeDao");
Recipe recipe = (Recipe)repl.getRecipeById(1);
Iterator iteRecipe = recipe.getMedicaments().iterator();
logger.info(" Recipe No. " + recipe.getRecipeId() + " \n");
logger.info(" Patient Name: " + recipe.getPatientName() + " \n");
while (iteRecipe.hasNext())
{
Medicament medicament = (Medicament)iteRecipe.next();
logger.info(" ----- Medicaments ------------- \n");
logger.info(medicament.getMedicamentId() + ".- Name: "+ medicament.getName() +" \n");
logger.info( "\t Description: "+ medicament.getDescription() +" \n");
}
}
}
Dejo el fuente del proyecto… FarmaciaIbatis. Este es el archivo sql de la DB el proyecto se creo en eclipse, pero si importan las librerias correspondientes y crean los todos los objetos seguro no tendran problemas con Netbeans,
No hay comentarios:
Publicar un comentario