zoukankan      html  css  js  c++  java
  • spring mybatis memcached

    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;
                }
            }
        }
    
    }
  • 相关阅读:
    2019 ICPC Malaysia National H题
    欧拉定理证明
    P3384 【模板】树链剖分
    HDU 6070 Dirt Ratio(线段树、二分)
    51Nod 1571 最近等对(线段树、离线查询)
    51Nod 1781 Pinball(线段树、dp、离散化)
    51Nod 1494 选举拉票(权值线段树)
    51Nod 1766 树上的最远点对(欧拉序、lca、线段树区间合并)
    lintcode-179-更新二进制位
    lintcode-178-图是否是树
  • 原文地址:https://www.cnblogs.com/sayaoailun/p/4874901.html
Copyright © 2011-2022 走看看