applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:property-placeholder location="classpath*:jdbc.properties" /> <!-- proxool连接池 -->
<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">
<property name="driver">
<value>${jdbc.driverClassName}</value>
</property>
<property name="driverUrl">
<value>${jdbc.url}</value>
</property>
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="alias" value="Pool_dbname" />
<property name="maximumActiveTime" value="600000" />
<property name="prototypeCount" value="0" />
<property name="maximumConnectionCount" value="50" />
<property name="minimumConnectionCount" value="2" />
<property name="simultaneousBuildThrottle" value="50" />
<property name="houseKeepingTestSql" value="select CURRENT_DATE" />
</bean> <!-- mybatis 配置 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:${jdbc.configLocation}" />
</bean> <bean id="sqlMapClient"
class="com.dc.appengine.oauth.dao.SqlMapClientTemplate">
<property name="sqlSession" ref="sqlSession" />
</bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean> <!-- 事务管理器 -->
<bean id="transactionmanager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean> <!-- 方法事务参数 -->
<tx:advice id="serviceAdvice" transaction-manager="transactionmanager">
<tx:attributes>
<tx:method name="updateAppScalableStatus" propagation="REQUIRES_NEW"
isolation="READ_UNCOMMITTED" rollback-for="Exception" />
<tx:method name="updateDefaultProtocol" propagation="REQUIRES_NEW"
isolation="READ_UNCOMMITTED" rollback-for="Exception" />
<tx:method name="saveProtocol" propagation="REQUIRES_NEW"
isolation="READ_UNCOMMITTED" rollback-for="Exception" />
<tx:method name="saveNewNode" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="add*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="run*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="save*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="saveUpgrade" propagation="SUPPORTS"
isolation="READ_COMMITTED" rollback-for="Exception" />
<tx:method name="update*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="del*" propagation="REQUIRED" rollback-for="Exception" />
<tx:method name="start*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="stop*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="destroy*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="deploy*" propagation="REQUIRED" isolation="READ_COMMITTED"
rollback-for="Exception" />
<tx:method name="reapply" propagation="REQUIRED" isolation="READ_COMMITTED"
rollback-for="Exception" />
<tx:method name="redeploy*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="isolate*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="return*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="unisolate*" propagation="REQUIRED"
rollback-for="Exception" />
<tx:method name="*"/>
</tx:attributes>
</tx:advice> <!-- 配置切面 -->
<aop:config proxy-target-class="true">
<aop:pointcut id="servicePointcut"
expression="execution(* com.dc.appengine.oauth.service.impl.*.*(..))" />
<aop:advisor pointcut-ref="servicePointcut" advice-ref="serviceAdvice" />
</aop:config> <context:component-scan
base-package="com.dc.appengine.oauth.dao.impl, com.dc.appengine.oauth.service.impl" /> </beans>

jdbc.properties

#oracle
#jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
#jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:PAAS
#jdbc.username=PAAS
#jdbc.password=PAAS
#jdbc.configLocation=sql-map-oracle-config.xml

#mysql
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/kfpt?useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root
jdbc.configLocation=sql-map-mysql-config.xml

sql-map-mysql-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//ibatis.apache.org//DTD Config 3.0//EN" "ibatis-3-config.dtd"> <configuration> <settings>
<setting name="lazyLoadingEnabled" value="false" />
<setting name="cacheEnabled" value="true"/>
</settings> <mappers>
<mapper resource="db/mapping/mysql/User.xml"/>
<mapper resource="db/mapping/mysql/AppInfo.xml"/>
<mapper resource="db/mapping/mysql/Service.xml"/>
<mapper resource="db/mapping/mysql/Resource.xml"/>
<mapper resource="db/mapping/mysql/Role.xml"/>
<mapper resource="db/mapping/mysql/Grant.xml"/>
</mappers> </configuration>

config.properties

#jetty
port=5022
contextPath=/oauth2
resourceBase=../web
descriptor=../web/WEB-INF/web.xml
threadPoolSize=10 #接口实现类
IUserImplClass=com.dc.appengine.oauth.interfaces.impl.UserImpl
IOAuthImplClass=com.dc.appengine.oauth.interfaces.impl.OAuthImpl #超时时间
code=600
token=3600 #https
keystore=oauth-server.keystore
KeyPassword=111111 #memcached 配置
cache.open = true
cache.servers = 10.126.253.49:11211
cache.pool.size = 10

log4j.properties

log4j.rootLogger=info,console,debug,info,warn,error,fatal

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n log4j.appender.debug=org.apache.log4j.DailyRollingFileAppender
log4j.appender.debug.File=./log/oauth/oauth_debug
log4j.appender.debug.DatePattern='.'yyyyMMdd'.log'
log4j.appender.debug.layout=org.apache.log4j.PatternLayout
log4j.appender.debug.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
log4j.appender.debug.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.debug.filter.F1.LevelMin=debug
log4j.appender.debug.filter.F1.LevelMax=debug log4j.appender.info=org.apache.log4j.DailyRollingFileAppender
log4j.appender.info.File=./log/oauth/oauth_info
log4j.appender.info.DatePattern='.'yyyyMMdd'.log'
log4j.appender.info.layout=org.apache.log4j.PatternLayout
log4j.appender.info.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
log4j.appender.info.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.info.filter.F1.LevelMin=info
log4j.appender.info.filter.F1.LevelMax=info log4j.appender.warn=org.apache.log4j.DailyRollingFileAppender
log4j.appender.warn.File=./log/oauth/oauth_warn
log4j.appender.warn.DatePattern='.'yyyyMMdd'.log'
log4j.appender.warn.layout=org.apache.log4j.PatternLayout
log4j.appender.warn.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
log4j.appender.warn.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.warn.filter.F1.LevelMin=warn
log4j.appender.warn.filter.F1.LevelMax=warn log4j.appender.error=org.apache.log4j.DailyRollingFileAppender
log4j.appender.error.File=./log/oauth/oauth_error
log4j.appender.error.DatePattern='.'yyyyMMdd'.log'
log4j.appender.error.layout=org.apache.log4j.PatternLayout
log4j.appender.error.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
log4j.appender.error.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.error.filter.F1.LevelMin=error
log4j.appender.error.filter.F1.LevelMax=error log4j.appender.fatal=org.apache.log4j.DailyRollingFileAppender
log4j.appender.fatal.File=./log/oauth/oauth_fatal
log4j.appender.fatal.DatePattern='.'yyyyMMdd'.log'
log4j.appender.fatal.layout=org.apache.log4j.PatternLayout
log4j.appender.fatal.layout.ConversionPattern=%d [%-5p] (%F.%M:%L) - %m%n
log4j.appender.fatal.filter.F1=org.apache.log4j.varia.LevelRangeFilter
log4j.appender.fatal.filter.F1.LevelMin=fatal
log4j.appender.fatal.filter.F1.LevelMax=fatal #log4j.logger.com.dc.oauth.server=debug #----------------------------------------------------Ibaits----------------------------------------------------
#log4j.logger.com.ibatis=debug
#log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=debug
#log4j.logger.com.ibatis.common.jdbc.ScriptRunner=debug
#log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=debug
#log4j.logger.java.sql.Connection=debug
#log4j.logger.java.sql.Statement=debug #log4j.logger.java.sql.PreparedStatement=debug,stdout
#log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n #log4j.appender.stdout=org.apache.log4j.ConsoleAppender
#log4j.appender.stdout.Target=System.out
#log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601}[%-5p][%c][%t]:%m%n

appinfo.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "ibatis-3-mapper.dtd">
<mapper namespace="AppInfo">
<cache eviction="LRU" type="com.dc.appengine.oauth.cache.MemcacheCacheHelper4Mybatis" />
<select id="findByAppKey" parameterType="java.lang.String" resultType="java.util.HashMap">
select *
from appinfo
where appkey = #{appKey}
</select>
<select id="findBySecondDomain" parameterType="java.lang.String" resultType="java.util.HashMap">
select *
from appinfo
where second_domain = #{secondDomain}
</select>
<select id="findByAppId" parameterType="java.lang.String" resultType="java.util.HashMap">
select *
from appinfo
where appid = #{appId}
</select>
</mapper>

MemcacheCacheHelper4Mybatis.java

/**
*
*/
package com.dc.appengine.oauth.cache; import java.util.LinkedList;
import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock; import org.apache.ibatis.cache.Cache;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.dc.appengine.oauth.util.ConfigUtil; /**
* @author Administrator
*2014-10-20
*/
public class MemcacheCacheHelper4Mybatis implements Cache{ private static Logger LOG = LoggerFactory.getLogger( MemcacheCacheHelper4Mybatis.class ); private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(); private String id; private LinkedList<String> cacheKeys = new LinkedList<String>(); private MemcachedManager cache; private boolean openCache = Boolean.valueOf(ConfigUtil.getInstance().getProperty("cache.open")); public MemcacheCacheHelper4Mybatis( String id ){
this.id = id;
this.cache = MemcachedManager.getInstance();
} /* (non-Javadoc)
* @see org.apache.ibatis.cache.Cache#clear()
*/
@Override
public void clear() {
if( openCache ){
if( cacheKeys != null && cacheKeys.size() > 0 ){
for( String key : cacheKeys ){
try {
cache.getClient().delete( key );
} catch ( Exception e ) {
e.printStackTrace();
LOG.error( "delete " + key + " error! ", e );
}
}
cacheKeys.clear();
LOG.debug("clear");
}
}
} /* (non-Javadoc)
* @see org.apache.ibatis.cache.Cache#getId()
*/
@Override
public String getId() {
LOG.debug("getId:" + this.id);
return this.id;
} /* (non-Javadoc)
* @see org.apache.ibatis.cache.Cache#getObject(java.lang.Object)
*/
@Override
public Object getObject( Object key ) {
if( this.openCache ){
String cacheKey = String.valueOf(key.hashCode());
try {
Object obj = cache.getClient().get( cacheKey );
if( obj != null && !cacheKeys.contains( cacheKey ) ){
cacheKeys.add( cacheKey );
} else if( obj == null && cacheKeys.contains( cacheKey ) ){
cacheKeys.remove( cacheKey );
}
LOG.debug("getObject:" + obj);
return obj;
} catch ( Exception e ) {
e.printStackTrace();
LOG.error( "get " + key.toString() + " error!", e );
}
}
return null;
} /* (non-Javadoc)
* @see org.apache.ibatis.cache.Cache#getReadWriteLock()
*/
@Override
public ReadWriteLock getReadWriteLock() {
LOG.debug("getReadWriteLock");
return this.readWriteLock;
} /* (non-Javadoc)
* @see org.apache.ibatis.cache.Cache#getSize()
*/
@Override
public int getSize() {
LOG.debug("getSize:" + cacheKeys.size());
return cacheKeys.size();
} /* (non-Javadoc)
* @see org.apache.ibatis.cache.Cache#putObject(java.lang.Object, java.lang.Object)
*/
@Override
public void putObject(Object key, Object value) {
if( this.openCache ){
if( value != null && !"SERIALIZABLE_NULL_OBJECT".equals( value ) ){
String cacheKey = String.valueOf(key.hashCode());
cacheKeys.add( cacheKey );
try {
cache.getClient().set( cacheKey, 0, value );
LOG.debug("set " + key + "=" + value);
} catch ( Exception e ) {
e.printStackTrace();
LOG.error( "set " + cacheKey + " error!", e );
}
} }
} /* (non-Javadoc)
* @see org.apache.ibatis.cache.Cache#removeObject(java.lang.Object)
*/
@Override
public Object removeObject(Object key) {
if( this.openCache ){
String cacheKey = String.valueOf(key.hashCode());
try {
Object obj = cache.getClient().delete( cacheKey );
cacheKeys.remove( cacheKey );
LOG.debug("remove " + cacheKey);
return obj;
} catch ( Exception e ) {
e.printStackTrace();
LOG.error( "delete " + cacheKey + " error!", e);
}
}
return null;
} }

MemcachedManager.java

/**
*
*/
package com.dc.appengine.oauth.cache; import java.io.IOException; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import com.dc.appengine.oauth.util.ConfigUtil; import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.command.BinaryCommandFactory;
import net.rubyeye.xmemcached.impl.KetamaMemcachedSessionLocator;
import net.rubyeye.xmemcached.utils.AddrUtil; /**
* @author Administrator
*2014-10-8
*/
public class MemcachedManager { private final Logger logger = LoggerFactory.getLogger( MemcachedManager.class ); private String servers; private int poolSize; private boolean openCache = false; private MemcachedClient client; private static MemcachedManager instance; public static MemcachedManager getInstance(){
if( instance == null ){
synchronized( MemcachedManager.class ){
if( instance == null ){
instance = new MemcachedManager();
}
}
}
return instance;
} private MemcachedManager(){
try {
init();
} catch (IOException e) {
logger.error( "cache manager init failed!", e );
}
} public MemcachedClient getClient(){
return client;
} private void init() throws IOException{
// openCache = Boolean.parseBoolean( ConfigHelper.getValue("cache.open") );
openCache = Boolean.parseBoolean(ConfigUtil.getInstance().getProperty("cache.open"));
if( openCache ){
// servers = ConfigHelper.getValue("cache.servers");
servers = ConfigUtil.getInstance().getProperty("cache.servers");
// poolSize = Integer.parseInt( ConfigHelper.getValue("cache.pool.size") );
poolSize = Integer.parseInt(ConfigUtil.getInstance().getProperty("cache.pool.size"));
MemcachedClientBuilder builder = new XMemcachedClientBuilder( AddrUtil.getAddresses( servers ) );
builder.setCommandFactory( new BinaryCommandFactory() );
builder.setConnectionPoolSize( poolSize );
builder.setSessionLocator( new KetamaMemcachedSessionLocator() );
client = builder.build();
}
} public void closePool() throws IOException {
client.shutdown();
client = null;
logger.info("Ibatis memcached pool closed");
} }

SqlMapClientDaoSupport.java

/**
*
*/
package com.dc.appengine.oauth.dao; import com.ibatis.sqlmap.client.SqlMapClient; /**
* @author Administrator
*2014-10-17
*/
public class SqlMapClientDaoSupport { private SqlMapClient sqlMapClient; public SqlMapClientTemplate getSqlMapClientTemplate() {
return (SqlMapClientTemplate) sqlMapClient;
} public void setSqlMapClient(SqlMapClient sqlMapClient) {
this.sqlMapClient = sqlMapClient;
} }

SqlMapClientTemplate.java

/**
*
*/
package com.dc.appengine.oauth.dao; import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;
import java.util.Map; import javax.sql.DataSource; import org.apache.ibatis.executor.BatchResult;
import org.apache.ibatis.session.RowBounds;
import org.mybatis.spring.SqlSessionTemplate;
import org.mybatis.spring.support.SqlSessionDaoSupport; import com.ibatis.common.util.PaginatedList;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapSession;
import com.ibatis.sqlmap.client.event.RowHandler; /**
* @author Administrator
*2014-10-17
*/ @SuppressWarnings("deprecation")
public class SqlMapClientTemplate extends SqlSessionDaoSupport implements SqlMapClient{ private SqlSessionTemplate sqlSession; public void setSqlSession(SqlSessionTemplate sqlSession) {
this.sqlSession = sqlSession;
super.setSqlSessionTemplate( sqlSession );
} public SqlSessionTemplate getSqlSession() {
return sqlSession;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapClient#flushDataCache()
*/
@Override
public void flushDataCache() {
super.getSqlSession().clearCache();
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapClient#flushDataCache(java.lang.String)
*/
@Override
public void flushDataCache(String arg0) { } /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapClient#getSession()
*/
@Override
public SqlMapSession getSession() {
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapClient#openSession()
*/
@Override
public SqlMapSession openSession() {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapClient#openSession(java.sql.Connection)
*/
@Override
public SqlMapSession openSession(Connection arg0) {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#delete(java.lang.String)
*/
@Override
public int delete(String arg0) {
return super.getSqlSession().delete(arg0);
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#delete(java.lang.String, java.lang.Object)
*/
@Override
public int delete(String arg0, Object arg1) {
// TODO Auto-generated method stub
return super.getSqlSession().delete(arg0, arg1);
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#executeBatch()
*/
@Override
public int executeBatch() throws SQLException {
// TODO Auto-generated method stub
List<BatchResult> list = super.getSqlSession().flushStatements();
int i = 0;
for( BatchResult br : list ){
int[] counts = br.getUpdateCounts();
for( int count : counts ){
i += count;
}
}
return i;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#executeBatchDetailed()
*/
@Override
public List executeBatchDetailed() {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#insert(java.lang.String)
*/
@Override
public Object insert(String statement) {
return super.getSqlSession().insert( statement );
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#insert(java.lang.String, java.lang.Object)
*/
@Override
public Object insert(String statement, Object object) {
return super.getSqlSession().insert( statement, object );
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForList(java.lang.String)
*/
@Override
public List queryForList(String arg0) {
// TODO Auto-generated method stub
return super.getSqlSession().selectList(arg0);
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForList(java.lang.String, java.lang.Object)
*/
@Override
public List queryForList(String statement, Object object){
return super.getSqlSession().selectList( statement, object );
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForList(java.lang.String, int, int)
*/
@Override
public List queryForList(String arg0, int arg1, int arg2)
throws SQLException {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForList(java.lang.String, java.lang.Object, int, int)
*/
@Override
public List queryForList(String arg0, Object arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
RowBounds rb = new RowBounds( arg2, arg3);
return super.getSqlSession().selectList(arg0, arg1, rb);
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForMap(java.lang.String, java.lang.Object, java.lang.String)
*/
@Override
public Map queryForMap(String arg0, Object arg1, String arg2)
throws SQLException {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForMap(java.lang.String, java.lang.Object, java.lang.String, java.lang.String)
*/
@Override
public Map queryForMap(String arg0, Object arg1, String arg2, String arg3)
throws SQLException {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForObject(java.lang.String)
*/
@Override
public Object queryForObject(String arg0) {
// TODO Auto-generated method stub
return super.getSqlSession().selectOne(arg0);
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForObject(java.lang.String, java.lang.Object)
*/
@Override
public Object queryForObject(String arg0, Object arg1) {
// TODO Auto-generated method stub
return super.getSqlSession().selectOne(arg0, arg1);
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForObject(java.lang.String, java.lang.Object, java.lang.Object)
*/
@Override
public Object queryForObject(String arg0, Object arg1, Object arg2)
throws SQLException {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForPaginatedList(java.lang.String, int)
*/
@SuppressWarnings("deprecation")
@Override
public PaginatedList queryForPaginatedList(String arg0, int arg1)
throws SQLException {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryForPaginatedList(java.lang.String, java.lang.Object, int)
*/
@SuppressWarnings("deprecation")
@Override
public PaginatedList queryForPaginatedList(String arg0, Object arg1,
int arg2) throws SQLException {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#startBatch()
*/
@Override
public void startBatch() throws SQLException {
// TODO Auto-generated method stub } /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#update(java.lang.String)
*/
@Override
public int update(String arg0) throws SQLException {
// TODO Auto-generated method stub
return super.getSqlSession().update(arg0);
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#update(java.lang.String, java.lang.Object)
*/
@Override
public int update(String arg0, Object arg1) {
// TODO Auto-generated method stub
return super.getSqlSession().update(arg0, arg1);
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapTransactionManager#commitTransaction()
*/
@Override
public void commitTransaction() throws SQLException {
// TODO Auto-generated method stub } /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapTransactionManager#endTransaction()
*/
@Override
public void endTransaction() throws SQLException {
// TODO Auto-generated method stub } /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapTransactionManager#getCurrentConnection()
*/
@Override
public Connection getCurrentConnection() throws SQLException {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapTransactionManager#getDataSource()
*/
@Override
public DataSource getDataSource() {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapTransactionManager#getUserConnection()
*/
@Override
public Connection getUserConnection() throws SQLException {
// TODO Auto-generated method stub
return null;
} /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapTransactionManager#setUserConnection(java.sql.Connection)
*/
@Override
public void setUserConnection(Connection arg0) throws SQLException {
// TODO Auto-generated method stub } /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapTransactionManager#startTransaction()
*/
@Override
public void startTransaction() throws SQLException {
// TODO Auto-generated method stub } /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapTransactionManager#startTransaction(int)
*/
@Override
public void startTransaction(int arg0) throws SQLException {
// TODO Auto-generated method stub } /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryWithRowHandler(java.lang.String, com.ibatis.sqlmap.client.event.RowHandler)
*/
@Override
public void queryWithRowHandler(String arg0, RowHandler arg1)
throws SQLException {
// TODO Auto-generated method stub } /* (non-Javadoc)
* @see com.ibatis.sqlmap.client.SqlMapExecutor#queryWithRowHandler(java.lang.String, java.lang.Object, com.ibatis.sqlmap.client.event.RowHandler)
*/
@Override
public void queryWithRowHandler(String arg0, Object arg1, RowHandler arg2)
throws SQLException {
// TODO Auto-generated method stub }
}

AppInfoDAO.java

package com.dc.appengine.oauth.dao.impl;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component; import com.dc.appengine.oauth.dao.SqlMapClientDaoSupport;
import com.ibatis.sqlmap.client.SqlMapClient; @Component("AppInfoDAO")
public class AppInfoDAO extends SqlMapClientDaoSupport { @Autowired
public AppInfoDAO(@Qualifier("sqlMapClient") SqlMapClient sqlMapClient) {
super();
super.setSqlMapClient(sqlMapClient);
} @SuppressWarnings("unchecked")
public Map<String, Object> findByAppKey(String appKey) {
Object result = getSqlMapClientTemplate().queryForObject("AppInfo.findByAppKey", appKey);
if (result == null) {
return null;
} else {
return (Map<String, Object>) result;
}
} @SuppressWarnings("unchecked")
public Map<String, Object> findBySecondDomain(String secondDomain) {
Object result = getSqlMapClientTemplate().queryForObject("AppInfo.findBySecondDomain", secondDomain);
if (result == null) {
return null;
} else {
return (Map<String, Object>) result;
}
} @SuppressWarnings("unchecked")
public Map<String, Object> findByAppId(String appId) {
Object result = getSqlMapClientTemplate().queryForObject("AppInfo.findByAppId", appId);
if (result == null) {
return null;
} else {
return (Map<String, Object>) result;
}
} }

AppInfoService.java

package com.dc.appengine.oauth.service.impl;

import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Service; import com.dc.appengine.oauth.dao.impl.AppInfoDAO; @Service("AppInfoService")
public class AppInfoService { @Autowired
@Qualifier("AppInfoDAO")
private AppInfoDAO appInfoDAO; public Map<String, Object> findBySecondDomain(String secondDomain) {
return appInfoDAO.findBySecondDomain(secondDomain);
} public Map<String, Object> findByAppKey(String appKey) {
return appInfoDAO.findByAppKey(appKey);
} public Map<String, Object> findByAppId(String appId) {
return appInfoDAO.findByAppId(appId);
} public boolean hasApp(String appKey) {
Map<String, Object> appInfo = findByAppKey(appKey);
if (appInfo == null) {
return false;
} else {
return true;
}
} public boolean checkApp(String appKey, String appSecret) {
Map<String, Object> appInfo = findByAppKey(appKey);
if (appInfo == null) {
return false;
} else {
String secret = (String) appInfo.get("appSecretKey");
if (appSecret != null && appSecret.equals(secret)) {
return true;
} else {
return false;
}
}
} }

spring mybatis memcached的更多相关文章

  1. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  2. 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)

    硬盘和内存的作用是什么 硬盘的作用毫无疑问我们大家都清楚,不就是用来存储数据文件的么?如照片.视频.各种文档或等等,肯定也有你喜欢的某位岛国老师的动作片,这个时候无论我们电脑是否关机重启它们永远在那里 ...

  3. SpringMVC + Spring + MyBatis 整合 + Spring shrio + easyUI + 权限管理框架,带shrio session和shrio cache集群实现方案

    工作之余先来写了一个不算规范的简单架子 基于spring mvc + spring + mybatis + Spring shrio 基于redis的集群方案 系统权限部分,分成多个机构,其中每个机构 ...

  4. Idea SpringMVC+Spring+MyBatis+Maven调整【转】

    Idea SpringMVC+Spring+MyBatis+Maven整合   创建项目 File-New Project 选中左侧的Maven,选中右侧上方的Create from archetyp ...

  5. SpringMVC+Spring+MyBatis+Maven调整【转】

    Idea SpringMVC+Spring+MyBatis+Maven整合   创建项目 File-New Project 选中左侧的Maven,选中右侧上方的Create from archetyp ...

  6. struts2 spring mybatis 整合(test)

    这几天搭了个spring+struts2+mybatis的架子,练练手,顺便熟悉熟悉struts2. 环境:myEclipse10+tomcat7+jdk1.6(1.8的jre报错,所以换成了1.6) ...

  7. Spring+Mybatis基于注解整合Redis

    基于这段时间折腾redis遇到了各种问题,想着整理一下.本文主要介绍基于Spring+Mybatis以注解的形式整合Redis.废话少说,进入正题. 首先准备Redis,我下的是Windows版,下载 ...

  8. Spring+MyBatis框架中sql语句的书写,数据集的传递以及多表关联查询

    在很多Java EE项目中,Spring+MyBatis框架经常被用到,项目搭建在这里不再赘述,现在要将的是如何在项目中书写,增删改查的语句,如何操作数据库,以及后台如何获取数据,如何进行关联查询,以 ...

  9. 手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版)

    手把手Maven搭建SpringMVC+Spring+MyBatis框架(超级详细版) SSM(Spring+SpringMVC+Mybatis),目前较为主流的企业级架构方案.标准的MVC设计模式, ...

随机推荐

  1. 【HOW】SharePoint如何彻底删除用户

    在网站中打开“人员和组”,在选中某一用户后,一般只有“从用户组中删除用户”操作.此操作只能将此用户从此用户组中删除,却不能从网站集中彻底删除. 要将用户从网站集中彻底删除,可按如下步骤操作: 1. 在 ...

  2. yii-basic-app-2.0.5/basic/config/web.php

    <?php $params = require(__DIR__ . '/params.php'); $config = [ 'id' => 'basic', 'basePath' => ...

  3. 无需写try/catch,也能正常处理异常 (转)

    原文地址: http://www.cnblogs.com/artech/archive/2012/10/28/automatic-exception-handling-aspnet.html 对于企业 ...

  4. I prefer fcitx

    sudo add-apt-repository ppa:fcitx-team/nightly sudo apt-get update Then, you should install Fcitx.Fc ...

  5. 记录一下emacs在window下的配置过程

    今天重装WIN7 64位新系统,装完发现emacs无法加载以前的插件了.网上搜一下才记起来,emacs默认读取的配置文件在c盘,在这个原始配置文件中还需要添加一些路径转换的语句才能转到用户自己的配置文 ...

  6. Magic xpa 2.5发布 Magic xpa 2.5 Release Notes

    Magic xpa 2.5發佈 Magic xpa 2.5 Release Notes Magic xpa 2.5 Release NotesNew Features, Feature Enhance ...

  7. canvas生成二维码,并下载保存为本地的图片

    function getTicket(id,salt){//qrcode生成canvas二维码 $(".zc-mask").show(); $(".edit-box&qu ...

  8. FTP地址格式如下:“ftp://用户名:密码@FTP服务器IP”

    FTP地址格式如下:“ftp://用户名:密码@FTP服务器IP”

  9. 软件工程—我的IT的新篇章

    这学期开了一门软件工程,在开始学习过程中,我对软件工程充满了浓厚的兴趣,我很享受软件工程带给我的快乐与激情,让我对计算机编程更加的了解与享受,我非常的喜欢这门学科,我对老师的教学方式非常的喜欢,我觉得 ...

  10. 《疯狂Java讲义》(四)---- 面向对象&基于对象

    "基于对象"也使用了对象,但是无法利用现有的对象模板产生新的对象类型,继而产生新的对象,也就是说,"基于对象"没有继承的特点,而多态更需要继承,所以" ...