¾Æ·¡ ¼ø¼·Î ¼³¸í.
1. MySql DB ±¸Ãà
2. À¥¾Û »ý¼º
3. MyBatis ¼³Á¤
3.1. ÇÊ¿äÇÑ ¶óÀ̺귯¸® ¼³Ä¡
3.2. ȯ°æ ¼³Á¤
3.3. ¸ÊÆÛ »ý¼º
3.4. JSP ¿¬µ¿
4. À¥ ÆäÀÌÁö »ý¼º
5. Å×½ºÆ®
2. À¥¾Û »ý¼º
3. MyBatis ¼³Á¤
3.1. ÇÊ¿äÇÑ ¶óÀ̺귯¸® ¼³Ä¡
3.2. ȯ°æ ¼³Á¤
3.3. ¸ÊÆÛ »ý¼º
3.4. JSP ¿¬µ¿
4. À¥ ÆäÀÌÁö »ý¼º
5. Å×½ºÆ®
ÃÖÁ¾ Æú´õ ±¸Á¶:
1. MySql DB ±¸Ãà
- Å×½ºÆ®¿ë °èÁ¤À» ¾Æ·¡¿Í °°ÀÌ ¼³Á¤Çß´Ù.
User name : "username"
Password : "password"
1) test ½ºÅ°¸¶¸¦ »ý¼ºÇÑ´Ù.
mysql> create schema test;
2) users Å×À̺íÀ» »ý¼ºÇÑ´Ù.
mysql> use test; mysql> create table users ( `username` varchar(255) not null, `password` varchar(255) not null, `email` varchar(255) not null, primary key (`username`) ) default charset=utf8;
3) user ¸¦ »ý¼ºÇÑ´Ù.
mysql> create user 'username'@'localhost' identified by 'password';
4) test ½ºÅ°¸¶¿¡ ´ëÇÑ ±ÇÇÑÀ» ¼³Á¤ÇÑ´Ù.
mysql> grant all privileges on test.* to 'username'@'locahost';
2. À¥¾Û »ý¼º
- Æú´õ ±¸Á¶
+ $WEB_APP/ + WEB-INF/ + libs/ - web.xml + index.jsp
web.xml ¼Ò½º:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true" version="3.0"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
3. MyBatis ¼³Á¤
3.1. ÇÊ¿äÇÑ ¶óÀ̺귯¸® ¼³Ä¡
- ´Ù¿î·Îµå
- MySql JDBC driver ´Ù¿î·Îµå : http://www.mysql.com/downloads/connector/j/
- MyBatis ´Ù¿î·Îµå : http://code.google.com/p/mybatis/downloads/list?can=3&q=Product%3DMyBatis
- commons dbcp ´Ù¿î·Îµå: http://commons.apache.org/dbcp/
- commons pool ´Ù¿î·Îµå: http://commons.apache.org/pool/
!) MyBatis Æú´õ¿¡ lib Æú´õ¿¡ ÀÖ´Â ÆÄÀϵ鵵 º¹»çÇÑ´Ù.
- asm-3.3.1.jar
- cglib-2.2.2.jar
- commons-dbcp-1.4.jar
- commons-logging-1.1.1.jar
- commons-pool-1.6.jar
- log4j-1.2.16.jar
- mybatis-3.1.1.jar
- mysql-connector-java-5.1.20-bin.jar
- slf4j-api-1.6.2.jar
- slf4j-log4j12-1.6.2.jar
3.2. ȯ°æ ¼³Á¤
- mybatis ¼³Á¤ ÆÄÀÏÀÎ mybatis-config.xml ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.(ÆÄÀÏ À̸§Àº Áß¿äÇÏÁö ¾Ê´Ù)
!) com.sample.mybatis.config ÆÐÅ°Áö¿¡ »ý¼ºÇÏ¿´´Ù.
!) ÆÄÀÏ ³»¿ë: JDBC ¼³Á¤¸¸ µé¾î ÀÖ´Ù.
<?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/test"/> <property name="username" value="username"/> <property name="password" value="password"/> </dataSource> </environment> </environments> </configuration>
3.3. ¸ÊÆÛ »ý¼º
- ÇÊ¿äÇÑ ÆÄÀϵé
- User.java - ·¹ÄÚµå ¾ÆÀÌÅÛ
- UserMapper.java - SQL ¹® ¼öÇàÀ» À§ÇÑ ÀÎÅÍÆäÀ̽º
- UserMap.xml - SQL ¹® ¸ÊÆÛ
- ¼Ò½º ÄÚµåµé
com.sample.mybatis.dto.User.java:
package com.sample.mybatis.dto; public class User { private String username; private String password; private String email; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } }com.sample.mybatis.dao.UserMapper.java:
package com.sample.mybatis.dao; import java.util.List; import com.sample.mybatis.dto.User; public interface UserMapper { public List<User> selectAllUsers(); public User selectUser(String username); public void insertUser(User user); public void updateUser(User user); public void deleteUser(String username); }com.sample.mybatis.sqlmap.UserMap.xml:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd"> <mapper namespace="com.sample.mybatis.dao.UserMapper"> <select id="selectAllUsers" resultType="User"> select username as username, password as password, email as email from users; </select> <select id="selectUser" parameterType="string" resultType="User"> select username as username, password as password, email as email from users where username=#{username}; </select> <insert id="insertUser" parameterType="User"> insert into users (username, password, email) values (#{username}, #{password}, #{email}); </insert> <update id="updateUser" parameterType="User"> update users set password=#{password}, email=#{email} where username=#{username} </update> <delete id="deleteUser" parameterType="string"> delete from users where username=#{username} </delete> </mapper>
- mybatis-config.xml ¿¡ Ãß°¡
<?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> <!-- Type alias --> <typeAliases> <typeAlias alias="User" type="com.sample.mybatis.dto.User"/> </typeAliases> <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/test"/> <property name="username" value="username"/> <property name="password" value="password"/> </dataSource> </environment> </environments> <!-- UserMap.xml µî·Ï --> <mappers> <mapper resource="com/sample/mybatis/sqlmap/UserMap.xml" /> </mappers> </configuration>
3.4. JSP ¿¬µ¿
- ¼¹ö ½ÃÀ۽ÿ¡ SqlSessionFactory ¸¦ »ý¼ºÇØ¾ß ÇÑ´Ù.
- SqlSessionFactory ¸¦ »ý¼ºÇÏ´Â ¼ºí¸´À» »ý¼ºÇÑ´Ù.
com.sample.mybatis.config.MyBatisConfig.java : ¼¹ö ½ÃÀ۽à init ÇÔ¼ö°¡ ½ÇÇàµÈ´Ù.
package com.sample.mybatis.config; import java.io.IOException; import java.io.InputStream; import javax.servlet.http.HttpServlet; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class MyBatisConfig extends HttpServlet { private static SqlSessionFactory sqlSessionFactory; public void init() { try { InputStream inputStream = Resources.getResourceAsStream("com/sample/mybatis/config/mybatis-config.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); } catch (IOException e) { e.printStackTrace(); } } public static SqlSessionFactory getSqlSessionFactory() { return sqlSessionFactory; } public static void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { MyBatisConfig.sqlSessionFactory = sqlSessionFactory; } }
- web.xml ¼³Á¤ : load-on-startup À» ¼³Á¤ÇØ Áà¾ß ÇÑ´Ù.
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" metadata-complete="true" version="3.0"> <!-- MyBatis initializer µî·Ï --> <servlet> <servlet-name>MyBatisInitializer</servlet-name> <servlet-class>com.sample.mybatis.config.MyBatisConfig</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
4. À¥ ÆäÀÌÁö »ý¼º
- User ·¹ÄÚµå »ý¼º, ¼öÁ¤, »èÁ¦ ÇÒ ¼ö ÀÖ´Â ÆäÀÌÁö (validation ¹ÌÆ÷ÇÔ)
user_control.jsp :
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="com.sample.mybatis.config.MyBatisConfig" %> <%@ page import="com.sample.mybatis.dao.*" %> <%@ page import="com.sample.mybatis.dto.*" %> <%@ page import="org.apache.ibatis.session.*" %> <%@ page import="java.util.*" %> <% // handle operation if (request.getMethod().equalsIgnoreCase("POST")) { SqlSession sqlSession = MyBatisConfig.getSqlSessionFactory().openSession(true); try { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); String subtype = request.getParameter("subtype"); if (subtype.equals("create-user")) { User user = new User(); user.setUsername(request.getParameter("username")); user.setPassword(request.getParameter("password")); user.setEmail(request.getParameter("email")); userMapper.insertUser(user); } else if (subtype.equals("modify-user")) { User user = new User(); user.setUsername(request.getParameter("username")); user.setPassword(request.getParameter("password")); user.setEmail(request.getParameter("email")); userMapper.updateUser(user); } else if (subtype.equals("delete-user")) { userMapper.deleteUser(request.getParameter("username")); } } finally { sqlSession.close(); } } // select users List<User> users = null; SqlSession sqlSession = MyBatisConfig.getSqlSessionFactory().openSession(true); try { UserMapper userMapper = sqlSession.getMapper(UserMapper.class); users = userMapper.selectAllUsers(); } finally { sqlSession.close(); } %> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>User Control</title> </head> <body> <h2>Create User</h2> <form name="create-form" method="post"> <input type="hidden" name="subtype" value="create-user" /> Username: <input type="text" name="username" value="" /><br /> Password: <input type="password" name="password" value="" /><br /> Email: <input type="email" name="email" value="" /><br /> <input type="submit" value="Create" /> </form> <h2>User List</h2> <ul> <% if (users == null || users.size() == 0) { %><li>no user</li><% } else { for (User user : users) { %> <li style="border:solid 1px black;padding:4px;margin-bottom:5px;"> <form name="modify-form" method="post"> <input type="hidden" name="subtype" value="modify-user" /> <input type="hidden" name="username" value="<%= user.getUsername() %>" /> Username: <%= user.getUsername() %><br /> Password: <input type="password" name="password" value="" /><br /> Email: <input type="text" name="email" value="<%= user.getEmail() %>" /><br /> <input type="submit" value="Modify" /> </form> <form name="delete-form" method="post"> <input type="hidden" name="subtype" value="delete-user" /> <input type="hidden" name="username" value="<%= user.getUsername() %>" /> <input type="submit" value="Delete" /> </form> </li> <% } } %> </ul> </body> </html>!) SqlSessionFactory.openSession() ÇÔ¼ö¿¡ true ¸¦ ÀÎÀÚ·Î ÁÖ¸é ÀÛ¾÷ÀÌ ³¡³ª¸é ÀÚµ¿À¸·Î commit ÇÑ´Ù.
5. Å×½ºÆ®