欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-13 16:06:46
...

与不同框架整合时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);

}

 

 

相关标签: mybatis redis