原創文章轉載請注明出處:@協思, http://zeeman.cnblogs.com
mybatis作為一種半自動化的ORM工具,可以提供更大的靈活性,逐漸受到社區的歡迎。
官方下載地址是:https://code.google.com/p/mybatis/downloads/list?can=3&q=Product%3DMyBatis
我這里下載的是3.2.2版本。
1. 在eclipse中新建dynamic web project, 引入mybatis-3.2.2.jar,sqljdbc4.jar(可以直接復制jar包到WebContent\WEB-INF\lib下)。
2.在src同級目錄新建configuration文件夾,新建mybatis.xml文件,用於保存mybastis的全局配置,內容如下:
<?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> <typeAliases> <typeAlias alias="EmployeeInfo" type="com.mosoro.example.model.EmployeeInfo" /> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.microsoft.sqlserver.jdbc.SQLServerDriver" /> <property name="url" value="jdbc:sqlserver://192.168.*.*:1433;databaseName=Northwind; catalogName=Northwind" /> <property name="username" value="sa" /> <property name="password" value="****" /> <property name="poolMaximumActiveConnections" value="50" /> </dataSource> </environment> </environments> <mappers> <mapper resource="maps/Employee.xml" /> </mappers> </configuration>
3.可以看到,我們在mappers中定義了一個employee.xml,在實際開發中,在這個文件中定義SQL和實體映射關系,我們現在在configuration下新建maps目錄,在maps下新建Employee.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.mosoro.example.mapper.EmployeeMapper"> <select id="GetList" parameterType="int" resultType="EmployeeInfo"><![CDATA[ select * from Employees with(nolock) where EmployeeID = #{EmployeeID} ]]></select> </mapper>
我們的目錄結構現在看起來會是這樣子:
4.mybatis是基於會話和數據庫交互的,所以我們需要創建SessionFactory,在src下新建package:com.mosoro.example.data, 新建class:SessionFactoryManager.java
package com.mosoro.example.data; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; public class SessionFactoryManager { private static SqlSessionFactory _sqlSessionFactory; static { SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder(); _sqlSessionFactory = ssfb.build(SessionFactoryManager.class.getClassLoader() .getResourceAsStream("mybatis.xml")); } public static SqlSessionFactory getSSF() { return _sqlSessionFactory; } public static SqlSession openSession() { return getSSF().openSession(); } }
注意我們在這里會讀取剛才定義的mybatis.xml文件。
5.新建package:com.mosoro.example.model,class:EmployeeInfo.java,這是我們要用的Model類。
package com.mosoro.example.model; public class EmployeeInfo { private int EmployeeID; private String LastName; public int getEmployeeID() { return EmployeeID; } public void setEmployeeID(int EmployeeID) { this.EmployeeID = EmployeeID; } public String getLastName(){ return this.LastName; } public void setLastName(String LastName){ this.LastName = LastName; } }
6.定義mapper類。新建package: com.mosoro.example.mapper, interface: EmployeeMapper.java
package com.mosoro.example.mapper; import java.util.List; import com.mosoro.example.model.EmployeeInfo; public interface EmployeeMapper { List<EmployeeInfo> GetList(int id); }
7.ok,我們准備工作都做好了,現在可以使用mybatis來訪問一次數據庫了。新建package:com.mosoro.example.biz, class:EmployeeBiz.java
package com.mosoro.example.biz; import java.util.List; import org.apache.ibatis.session.SqlSession; import org.apache.log4j.Logger; import com.mosoro.example.data.SessionFactoryManager; import com.mosoro.example.mapper.EmployeeMapper; import com.mosoro.example.model.EmployeeInfo; public class EmployeeBiz { private Logger logger = Logger.getLogger(EmployeeBiz.class); public List<EmployeeInfo> GetList() { // 獲取SqlSession SqlSession session = SessionFactoryManager.openSession(); try { EmployeeMapper userDA = session.getMapper(EmployeeMapper.class); List<EmployeeInfo> users = userDA.GetList(1); logger.debug("get emloyee list ok"); return users; } catch (Exception e) { e.printStackTrace(); return null; } finally { session.close(); } } }
8.修改index.jsp文件如下:
<%@page import="org.apache.jasper.tagplugins.jstl.core.ForEach"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import = "java.util.*" %> <%@ page import = "com.mosoro.example.biz.*" %> <%@ page import = "com.mosoro.example.model.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>mybatis example</title> </head> <body> <% EmployeeBiz employeeBiz =new EmployeeBiz(); List<EmployeeInfo> list = employeeBiz.GetList(); for(EmployeeInfo e : list){ out.println(e.getLastName()+"<br />"); } %> </body> </html>
9. 運行這個頁面,可以看到有數據從庫中抓出來了。我們最終的項目結構是下面這樣: