与不同框架整合时mybatis的使用区别 (对比redis)

与不同框架整合时mybatis的使用区别 (对比redis)

一般mybatis或者redis等连接数据库的框架应用规则都差不多:

1,配置好工厂

2,工厂注入模版配置好模版(这时候其实已经可以直接通过这个模版操作了)

3,如果spring提供了人性话的封装这个模版的类,或其他框架可以人性化整合这个模版,就可以更方便的使用,不用每次都获取模版然后操作

  比如1,没有用封装的模版(就直接用模版)

      2,有框架对其封装了就用封装后的操作入口即可,更方便:

      用spring封装了模版(配置的时候将模版注入spring的一个类),或者spring集成的比如mapper,这个mapper会自动识别id=sqlSession的模版,

      那么也就有了封装,就不必每次使用模版操作了,直接用mapper提供的人性化的操作入口即可

<!-- 消除Redis的key前面的/xac/xed/x00/x05t/x00/t这些东西 -->

<bean id="stringRedisSerializer"

class="org.springframework.data.redis.serializer.StringRedisSerializer" />

<bean id="jedisTemplate" class="org.springframework.data.redis.core.RedisTemplate"

p:keySerializer-ref="stringRedisSerializer" p:hashKeySerializer-ref="stringRedisSerializer"

p:connection-factory-ref="jedisConnectionFactory" />//已经可以模版操作(Java硬编码)

<!-- redis缓存管理器 -->

<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager"

c:template-ref="jedisTemplate" />/////spring封装了这个模版之后就可以直接通过注解使用了

<!-- redis结束 -->

///(Java硬编码)(模版操作)

@Service(value = "redisService")

public class RedisServiceImpl<T> implements RedisService<T> {

@Autowired

private  RedisDao<T> redisDaoString;

/* set缓存操作 */

@Override

public void setObject(String key, T value) throws EsteelException {

redisDaoString.setObject(key, value);

System.out.println("====Set Redis " + key + "====");

}

}

public class RedisDaoImpl<T> implements RedisDao<T>

{

    @Autowired

    private RedisTemplate<String, T> jedisTemplate;

    private static LoggerAdapter log = LoggerAdapterFacory.getLoggerAdapter(RedisDaoImpl.class);

    

    public void setObject(String key, T value) throws EsteelException

    {

        try

        {

            ValueOperations<String, T> vps = jedisTemplate.opsForValue();

            vps.set(key, value);

          

        }

        catch (Exception ex)

        {

            String msg = "插入redis key:" + key + " value:" + value + "失败!";

            log.error(msg, ex);

            throw new EsteelException(msg, ex);

        }

        

    }

    }

    

//由于还用了spring封装所以还可以最直标签(封装)

@Override

@Cacheable(value="getfordMenuLimt",key="'getfordMenuLimt='+#param.get('pId')")

public List<Map> getfordMenuLimt(Map<String,Object> param) {

// TODO Auto-generated method stub

List<Map> map = new ArrayList<>();

map= (List<Map>) opmMenufolderMapper.getfordMenuLimt(param);

return map;

}

===================模版操作

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" p:dataSource-ref="dataSource">

<property name="configLocation" value="classpath:mybatis-config.xml"></property>

<property name="plugins">

   <array>

     <bean class="com.github.pagehelper.PageHelper">

       <property name="properties">

         <value>

           dialect=oracle

            reasonable=true

            offsetAsPageNum=true

         </value>

       </property>

     </bean>

   </array>

 </property>

</bean>

<bean id="sqlSessionTemplate" class="com.esteel.web.utils.ESteelSqlSessionTemplate" c:sqlSessionFactory-ref="sqlSessionFactory"></bean>

@Autowired

public ESteelSqlSessionTemplate sqlSessionTemplate;

@Override

public List<BasSpsxValueBeanVo> spsxPartKeycdpzzzMap() {

return sqlSessionTemplate.selectList("basSpsxValue.spsxPartKeycdpzzzMap");

}

=========================================

//spring集成通用mapper,通用mapper封装的mybatis(自动通过id="sqlSession"进行封装),那么也可以不用每次通过模版操作数据库,直接用mapper的人性化接口即可(封装)

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">

        <property name="dataSource" ref="dataSource" />

        <property name="typeAliasesPackage" value="com.esteel.*.bean"/> 

        <!-- typeAliasesPackage 为这个包下面的所有类生成别名,在配置文件中就可以直接用类名进行引用,而不用写全路径 -->

        <!-- <property name="typeAliasesPackage" value="com.esteel.system.bean,com.esteel.search" />

        <property name="mapperLocations" value="classpath:config_mybatis/*.xml" /> -->

        <property name="configLocation" value="classpath:config_spring/mybatis-config.xml" />

        <!-- 自动扫描entity目录, 省掉Configuration.xml里的手工配置 -->

<property name="mapperLocations"  >

<array>

                <value> classpath:config_mybatis/**/*.xml</value>

            </array>

</property>

      

        <property name="plugins">

            <array>

              <bean class="com.github.pagehelper.PageHelper">

                    <property name="properties">

                        <value>

                            dialect=oracle

                            reasonable=true

                        </value>

                    </property> 

                </bean> 

               <!--  <bean class="com.github.abel533.mapperhelper.MapperInterceptor">

                    <property name="properties">

                        <value>

                            mappers=com.github.abel533.mapper.Mapper

                            ORDER=BEFORE

                           

                        </value>

                    </property>

                </bean> -->

            </array>

        </property> 

    </bean>

 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate" scope="prototype">//通用mapper直接根据sqlSession这个名字自动装配sqlSession,直接通过mapper用

        <constructor-arg index="0" ref="sqlSessionFactory" />

        <!-- 如果想要进行批量操作可加入这个属性 -->

        <!-- <constructor-arg index="1" value="BATCH" /> -->

    </bean>

@Override

@Cacheable(value="getMenuItems",key="'menufolderid='+#item.menufolderid")

public List<OpmMenuitem> getMenuItems(OpmMenuitem item) {

// TODO Auto-generated method stub

return opmMenuitemMapper.select(item);

}

相关推荐