Mybatis連線多個數據庫配置方法
阿新 • • 發佈:2018-11-27
注意:本文配置不涉及Spring,僅限於Mybatis內。
思路:
1、configuration.xml配置檔案中environments內參數寫成動態傳參;
2、DBUtil類中構建SQLSessionFactory時讀取傳入的資料庫連線配置資訊動態生成。
案例如下:
1)configuration.xml配置資訊:
<environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="UNPOOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.user}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments>
2)DBUtil類:
import java.io.IOException; import java.io.InputStream; import java.util.Properties; 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 com.sz.properties.MG01; public class DBUtil { public SqlSession getSqlSession(Properties properties) throws IOException { // 通過配置檔案獲取資料庫連線資訊 InputStream stream = Resources.getResourceAsStream("Configuration.xml"); /* System.out.println(properties.getProperty("jdbc.driver")); System.out.println(properties.getProperty("jdbc.url")); System.out.println(properties.getProperty("jdbc.user")); System.out.println(properties.getProperty("jdbc.password")); */ // 通過配置資訊構建一個SQLSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(stream,properties); // 通過sqlSessionFactory開啟一個數據庫會話 SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; } // 測試主方法 public static void main(String[] args) { SqlSession sqlSession = null; try { sqlSession = new DBUtil().getSqlSession(DBProperties.CS15); System.out.println(sqlSession); } catch (IOException e) { e.printStackTrace(); } finally { if(session != null){ session.close(); } } } }
3)DBProperties工具類:
import java.util.Properties; public class DBProperties { public static final Properties MG01; public static final Properties CS15; static{ MG01 = new Properties(); MG01.setProperty("jdbc.driver", "oracle.jdbc.driver.OracleDriver"); MG01.setProperty("jdbc.url", "jdbc:oracle:thin:@192.168.0.0:1521/mg01"); MG01.setProperty("jdbc.user", "xxx"); MG01.setProperty("jdbc.password", "xxx"); CS15 = new Properties(); CS15.setProperty("jdbc.driver", "oracle.jdbc.driver.OracleDriver"); CS15.setProperty("jdbc.url", "jdbc:oracle:thin:@192.168.0.0:1521/mg15"); CS15.setProperty("jdbc.user", "xxx"); CS15.setProperty("jdbc.password", "xxx"); } }
4)javabean:User類
/**
* 賬號密碼實體類
*/
public class User {
private String uer;
private String pwd;
public String getUer() {
return uer;
}
public void setUer(String uer) {
this.uer = uer;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
5)IUser介面
import java.util.Map;
import com.sz.bean.User;
public interface IUser {
User login(Map<String, String> parameterMap);
}
6)User.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.sz.dao.IUser">
<resultMap type="com.sz.bean.User" id="UserResult">
<result column="username" jdbcType="VARCHAR" property="uer"/>
<result column="password" jdbcType="VARCHAR" property="pwd"/>
</resultMap>
<select id="login" parameterType="java.util.Map" resultMap="UserResult">
select username, password from sz_user where username = #{uer} and password = #{pwd}
</select>
</mapper>
7)UserAction類
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.ibatis.session.SqlSession;
import com.opensymphony.xwork2.ActionSupport;
import com.sz.bean.User;
import com.sz.dao.IUser;
import com.sz.db.DBUtil;
import com.sz.properties.DBProperties;
@SuppressWarnings("serial")
public class UserAction extends ActionSupport {
private String uer = "";// 賬號
private String pwd = "";// 密碼
public String login(){
if(uer != null && pwd != null){
Map<String, String> parameterMap = new HashMap<String, String>();
DBUtil util = new DBUtil();
SqlSession session = null;
User user = null;
parameterMap.put("uer", uer);
parameterMap.put("pwd", pwd);
try {
session = util.getSqlSession(DBProperties.DMS);
IUser iuser = session.getMapper(IUser.class);
user = iuser.login(parameterMap);
} catch (IOException e) {
e.printStackTrace();
} finally {
if(session != null){
session.close();
}
}
if(uer.equals(user.getUer())){
return "main";
}
return "error";
}
return "error";
}
/*
* 測試引數傳輸
*/
public String test(){
System.out.println(getUer());
System.out.println(getPwd());
return "error";
}
public String getUer() {
return uer;
}
public void setUer(String uer) {
this.uer = uer;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
}
8)struts2.xml配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<package name="admin" extends="struts-default" namespace="/">
<action name="User_*" method="{1}" class="com.sz.action.UserAction">
<result name="main">main.jsp</result>
<result name="error">login.jsp</result>
</action>
</package>
</struts>
9)頁面表單請求
<div class="main">
<div class="center">
<form action="User_login" id="formOne" method="post" onsubmit="return submitB()" >
<br/><br/>
<i class="fa fa-user Cone"> | </i>
<input type="text" name="uer" id="user" placeholder="使用者名稱"onblur="checkUser()"/>
<span id="user_pass"></span>
<br/>
<i class="fa fa-key Cone"> | </i>
<input type="password" name="pwd" id="pwd" placeholder="密碼"onblur="checkUser1()"/>
<span id="pwd_pass"></span>
<br/>
<input type="submit" value="登 錄" id="submit" name="submit" />
<br/>
</form>
</div>
</div>
這樣案例就可以跑起來了!(本案例配合struts2網頁呼叫)