MyBatis: missing mybatis-sql-maps-config.xml
authorGustavo Martin Morcuende <gustavo@supergusarapo.(none)>
Mon, 26 Aug 2013 22:57:44 +0000 (00:57 +0200)
committerGustavo Martin Morcuende <gustavo@supergusarapo.(none)>
Mon, 26 Aug 2013 22:57:44 +0000 (00:57 +0200)
MyBatis maps config file and renamed package

MyBatis/src/main/java/de/example/ibatis/TestMain.java [deleted file]
MyBatis/src/main/java/de/example/mybatis/TestMain.java [new file with mode: 0644]
MyBatis/src/main/resources/mybatis-sql-maps-config.xml [new file with mode: 0644]

diff --git a/MyBatis/src/main/java/de/example/ibatis/TestMain.java b/MyBatis/src/main/java/de/example/ibatis/TestMain.java
deleted file mode 100644 (file)
index 4c2b11b..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-package de.example.ibatis;
-
-import java.io.IOException;
-import java.util.Date;
-
-import org.apache.ibatis.io.Resources;
-import org.apache.ibatis.session.SqlSession;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.apache.ibatis.session.SqlSessionFactoryBuilder;
-
-import de.example.mybatis.model.Ad;
-import de.example.mybatis.repository.mapper.AdMapper;
-
-//import de.example.ibatis.demo.dao.UserDao;
-//import de.example.ibatis.demo.dao.UserDaoIbatis;
-//import de.example.ibatis.dto.UserTEO;
-
-public class TestMain {
-
-       public static void main(String[] args) throws IOException {
-               //Initialize dao
-               //UserDao manager = new UserDaoIbatis();
-
-//             File file = new File("sql-maps-config.xml");
-//             FileInputStream fileInputStream = new FileInputStream(file);
-               // AL FINAL NO NECESITABA TODO ESTO DE FILECHANNEL Y BYTEBUFFERS xD se me fue la pinza :(
-               // al menos mira lo del FileChannel.size() porque es interesante recordarlo
-               // y saber que si el archivo puede cambiar el metodo FileChannel.size() no te vale :(
-               // y tendrias que usar algo como lo que hiciste en AxisC3 driver :)
-//             FileChannel fileChannel = fileInputStream.getChannel();
-               
-               // FileChannel.size() internamente usa fstat64 recuperando st_size
-               // asi puede saber el tamaño del archivo antes de leerlo. Esto puede
-               // ser un problema si el archivo puede cambiar por alguna razon desconocida
-               // mientras lo estoy leyendo.
-               // ver: FileChannelImpl.c (la implementacion nativa de FileChannel)
-               // otra solucion es lo que hice para AxisC3, un array de byes mutable
-               // que se incrementa tanto como haga falta hasta que haya leido todos los bytes
-               // Por tanto si a priori no puedo saber el tamaño del archivo a leer deberia
-               // usar un array de bytes mutables cuyo tamaño puede incrementarse si hace falta
-               // como hice con el AxisC3 :)
-               
-               //fileInputStream.read(new byte[(int)fileChannel.size()]); <----- puedo leer tambien asi pero me apetece usar byte buffers
-               // de java.nio :)
-               
-               
-               //joer.size devuelve long!!!! hago casta int pierdo datos :(  ¿solucion?
-//             ByteBuffer gus = ByteBuffer.allocate((int)fileChannel.size());
-//             int result = 0;
-//             while (result != -1) {
-//                     result = fileChannel.read(gus);
-//             }
-//             TestMain.class.getResourceAsStream("sql-maps-config.xml");
-//             Reader reader = Resources.getResourceAsReader("sql-maps-config.xml");
-               
-               // Desde el Javadoc de org.xml.sax.InputSource:
-//              <p>The SAX parser will use the InputSource object to determine how
-//              to read XML input.  If there is a character stream available, the
-//              parser will read that stream directly, disregarding any text
-//              encoding declaration found in that stream.
-//              If there is no character stream, but there is
-//              a byte stream, the parser will use that byte stream, using the
-//              encoding specified in the InputSource or else (if no encoding is
-//              specified) autodetecting the character encoding using an algorithm
-//              such as the one in the XML specification.  If neither a character
-//              stream nor a
-//              byte stream is available, the parser will attempt to open a URI
-//              connection to the resource identified by the system
-//              identifier.</p>
-               
-               // LUEGO SI LE PASO UN FileInputStream/InputStream (no es un character stream) y no especifico el encoding
-               // se deberia autodetectar el encoding usando la especificacion XML (leyendo
-               // la cabecera del archivo xml) GUAY!!!! JUSTO LO QUE ME GUSTA :)
-//             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(fileInputStream);
-               
-               // JOER NO HACIA FALTA TANTO LIO PARA CONSEGUIR UN INPUTSTREAM. DE HECHO LA MEJOR
-               // FORMA ES HACERLO ASI SIEMPRE (con el getResourceAsStream) ASÍ NO DEPENDES
-               // DE PATHS ABSOLUTIOS NI NADA, TE SIRVE PARA .jars, O DIRECTORIOS FISICOS, LO QUE SEA QUE ESTE
-               // EN EL CLASSPATH:
-               SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
-                               .build(/**TestMain.class.getResourceAsStream("sql-maps-config.xml")**/
-                                               Resources.getResourceAsStream("mybatis-sql-maps-config.xml"));
-               SqlSession session = sqlSessionFactory.openSession();
-               // EN MYBATIS HAY UNA FORMA MEJOR QUE ESTA
-//             try {
-//             Ad ad = session.selectOne("de.example.mybatis.model.Ad.selectByPrimaryKey", 101);
-//             } finally {
-//                     session.close();
-//             }
-               // ESTA FORMA ES MUCHO MEJOR :)
-               try {
-                       AdMapper mapper = session.getMapper(AdMapper.class);
-                       Ad adprueba = new Ad();
-                       adprueba.setCompanyCategId(200L);
-                       adprueba.setCreatedAt(new Date());
-                       adprueba.setCompanyId(2L);
-                       adprueba.setUpdatedAt(new Date());
-                       mapper.insert(adprueba);
-//                     Ad ad = mapper.selectByPrimaryKey(1000L);
-               } finally {
-                       session.close();
-               }
-               
-               // De esa forma consigo que el encoding dependa del valor puesto en la cabecera del xml :)
-               
-//             SqlSession session = sqlSessionFactory.openSession();
-//             try {
-//               Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
-//             } finally {
-//               session.close();
-//             }
-//             
-//             SqlSession session = sqlSessionFactory.openSession();
-//             try {
-//               BlogMapper mapper = session.getMapper(BlogMapper.class);
-//               Blog blog = mapper.selectBlog(101);
-//             } finally {
-//               session.close();
-//             }
-//             SqlMapClient sqlmapClient = SqlMapClientBuilder.buildSqlMapClient (reader);
-//
-//             //Create a new user to persist
-//             UserTEO user = new UserTEO();
-//             user.setId(1);
-//             user.setName("Demo User");
-//             user.setPassword("password");
-//             user.setEmail("demo-user@howtodoinjava.com");
-//             user.setStatus(1);
-//
-//             //Add the user
-//             manager.addUser(user,sqlmapClient);
-//
-//             //Fetch the user detail
-//             UserTEO createdUser = manager.getUserById(4, sqlmapClient);
-//             System.out.println(createdUser.getEmail());
-//
-//             //Lets delete the user
-//             manager.deleteUserById(1, sqlmapClient);
-//             try {
-//                     Thread.sleep(100000);
-//             } catch (InterruptedException e) {
-//                     // TODO Auto-generated catch block
-//                     e.printStackTrace();
-//             }
-       }
-
-}
diff --git a/MyBatis/src/main/java/de/example/mybatis/TestMain.java b/MyBatis/src/main/java/de/example/mybatis/TestMain.java
new file mode 100644 (file)
index 0000000..2db41c4
--- /dev/null
@@ -0,0 +1,147 @@
+package de.example.mybatis;
+
+import java.io.IOException;
+import java.util.Date;
+
+import org.apache.ibatis.io.Resources;
+import org.apache.ibatis.session.SqlSession;
+import org.apache.ibatis.session.SqlSessionFactory;
+import org.apache.ibatis.session.SqlSessionFactoryBuilder;
+
+import de.example.mybatis.model.Ad;
+import de.example.mybatis.repository.mapper.AdMapper;
+
+//import de.example.ibatis.demo.dao.UserDao;
+//import de.example.ibatis.demo.dao.UserDaoIbatis;
+//import de.example.ibatis.dto.UserTEO;
+
+public class TestMain {
+
+    public static void main(final String[] args) throws IOException {
+        //Initialize dao
+        //UserDao manager = new UserDaoIbatis();
+
+        //             File file = new File("sql-maps-config.xml");
+        //             FileInputStream fileInputStream = new FileInputStream(file);
+        // AL FINAL NO NECESITABA TODO ESTO DE FILECHANNEL Y BYTEBUFFERS xD se me fue la pinza :(
+        // al menos mira lo del FileChannel.size() porque es interesante recordarlo
+        // y saber que si el archivo puede cambiar el metodo FileChannel.size() no te vale :(
+        // y tendrias que usar algo como lo que hiciste en AxisC3 driver :)
+        //             FileChannel fileChannel = fileInputStream.getChannel();
+
+        // FileChannel.size() internamente usa fstat64 recuperando st_size
+        // asi puede saber el tamaño del archivo antes de leerlo. Esto puede
+        // ser un problema si el archivo puede cambiar por alguna razon desconocida
+        // mientras lo estoy leyendo.
+        // ver: FileChannelImpl.c (la implementacion nativa de FileChannel)
+        // otra solucion es lo que hice para AxisC3, un array de byes mutable
+        // que se incrementa tanto como haga falta hasta que haya leido todos los bytes
+        // Por tanto si a priori no puedo saber el tamaño del archivo a leer deberia
+        // usar un array de bytes mutables cuyo tamaño puede incrementarse si hace falta
+        // como hice con el AxisC3 :)
+
+        //fileInputStream.read(new byte[(int)fileChannel.size()]); <----- puedo leer tambien asi pero me apetece usar byte buffers
+        // de java.nio :)
+
+
+        //joer.size devuelve long!!!! hago casta int pierdo datos :(  ¿solucion?
+        //             ByteBuffer gus = ByteBuffer.allocate((int)fileChannel.size());
+        //             int result = 0;
+        //             while (result != -1) {
+        //                     result = fileChannel.read(gus);
+        //             }
+        //             TestMain.class.getResourceAsStream("sql-maps-config.xml");
+        //             Reader reader = Resources.getResourceAsReader("sql-maps-config.xml");
+
+        // Desde el Javadoc de org.xml.sax.InputSource:
+        //              <p>The SAX parser will use the InputSource object to determine how
+        //              to read XML input.  If there is a character stream available, the
+        //              parser will read that stream directly, disregarding any text
+        //              encoding declaration found in that stream.
+        //              If there is no character stream, but there is
+        //              a byte stream, the parser will use that byte stream, using the
+        //              encoding specified in the InputSource or else (if no encoding is
+        //              specified) autodetecting the character encoding using an algorithm
+        //              such as the one in the XML specification.  If neither a character
+        //              stream nor a
+        //              byte stream is available, the parser will attempt to open a URI
+        //              connection to the resource identified by the system
+        //              identifier.</p>
+
+        // LUEGO SI LE PASO UN FileInputStream/InputStream (no es un character stream) y no especifico el encoding
+        // se deberia autodetectar el encoding usando la especificacion XML (leyendo
+        // la cabecera del archivo xml) GUAY!!!! JUSTO LO QUE ME GUSTA :)
+        //             SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(fileInputStream);
+
+        // JOER NO HACIA FALTA TANTO LIO PARA CONSEGUIR UN INPUTSTREAM. DE HECHO LA MEJOR
+        // FORMA ES HACERLO ASI SIEMPRE (con el getResourceAsStream) ASÍ NO DEPENDES
+        // DE PATHS ABSOLUTIOS NI NADA, TE SIRVE PARA .jars, O DIRECTORIOS FISICOS, LO QUE SEA QUE ESTE
+        // EN EL CLASSPATH:
+        final SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
+        .build(/**TestMain.class.getResourceAsStream("sql-maps-config.xml")**/
+                Resources.getResourceAsStream("mybatis-sql-maps-config.xml"));
+        final SqlSession session = sqlSessionFactory.openSession();
+        // EN MYBATIS HAY UNA FORMA MEJOR QUE ESTA
+        //             try {
+        //             Ad ad = session.selectOne("de.example.mybatis.model.Ad.selectByPrimaryKey", 101);
+        //             } finally {
+        //                     session.close();
+        //             }
+        // ESTA FORMA ES MUCHO MEJOR :)
+        try {
+            final AdMapper mapper = session.getMapper(AdMapper.class);
+            final Ad adprueba = new Ad();
+            adprueba.setCompanyCategId(200L);
+            adprueba.setCreatedAt(new Date());
+            adprueba.setCompanyId(2L);
+            adprueba.setUpdatedAt(new Date());
+            mapper.insert(adprueba);
+            //                 Ad ad = mapper.selectByPrimaryKey(1000L);
+        } finally {
+            session.close();
+        }
+
+        // De esa forma consigo que el encoding dependa del valor puesto en la cabecera del xml :)
+
+        //             SqlSession session = sqlSessionFactory.openSession();
+        //             try {
+        //               Blog blog = session.selectOne("org.mybatis.example.BlogMapper.selectBlog", 101);
+        //             } finally {
+        //               session.close();
+        //             }
+        //
+        //             SqlSession session = sqlSessionFactory.openSession();
+        //             try {
+        //               BlogMapper mapper = session.getMapper(BlogMapper.class);
+        //               Blog blog = mapper.selectBlog(101);
+        //             } finally {
+        //               session.close();
+        //             }
+        //             SqlMapClient sqlmapClient = SqlMapClientBuilder.buildSqlMapClient (reader);
+        //
+        //             //Create a new user to persist
+        //             UserTEO user = new UserTEO();
+        //             user.setId(1);
+        //             user.setName("Demo User");
+        //             user.setPassword("password");
+        //             user.setEmail("demo-user@howtodoinjava.com");
+        //             user.setStatus(1);
+        //
+        //             //Add the user
+        //             manager.addUser(user,sqlmapClient);
+        //
+        //             //Fetch the user detail
+        //             UserTEO createdUser = manager.getUserById(4, sqlmapClient);
+        //             System.out.println(createdUser.getEmail());
+        //
+        //             //Lets delete the user
+        //             manager.deleteUserById(1, sqlmapClient);
+        //             try {
+        //                     Thread.sleep(100000);
+        //             } catch (InterruptedException e) {
+        //                     // TODO Auto-generated catch block
+        //                     e.printStackTrace();
+        //             }
+    }
+
+}
diff --git a/MyBatis/src/main/resources/mybatis-sql-maps-config.xml b/MyBatis/src/main/resources/mybatis-sql-maps-config.xml
new file mode 100644 (file)
index 0000000..5ec8c90
--- /dev/null
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE configuration
+  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
+  "http://mybatis.org/dtd/mybatis-3-config.dtd">
+<configuration>
+  <environments default="development">
+    <environment id="development">
+      <transactionManager type="JDBC"/>
+      <dataSource type="POOLED">
+        <property name="driver" value="com.mysql.jdbc.Driver"/>
+        <property name="url" value="jdbc:mysql://localhost:3306/mybatis_example"/>
+        <property name="username" value="root"/>
+        <property name="password" value="root"/>
+      </dataSource>
+    </environment>
+  </environments>
+  <mappers>
+    <mapper resource="de/example/mybatis/repository/mapper/AdDescriptionMapper.xml"/>
+    <mapper resource="de/example/mybatis/repository/mapper/AdMapper.xml"/>
+  </mappers>
+</configuration>
\ No newline at end of file