与不同框架整合时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);
}
相关推荐
* 知识点:Spring Boot 数据访问概述、基础环境搭建、使用注解的方式整合 MyBatis、使用配置文件的方式整合 MyBatis、Spring Data JPA 介绍、使用 Spring Boot 整合 JPA、Redis 介绍、使用 Spring Boot 整合 Redis ...
6. **Redis单机版与集群版的区别与配置**:对比分析Redis单机版和集群版的优缺点,讲解如何搭建Redis集群,配置哨兵系统(Sentinel)以实现高可用性。 7. **JD案例**:这个部分可能涉及如何利用SpringBoot和Redis解决...
使用框架: Spring Boot + Spring + SpringMVC + Mybatis + Redis + RabbitMQ 具体内容: 有四种解决方案来做对比 1.利用MySQL的update行锁实现悲观锁。 2.MySQL加字段version实现乐观锁。 3.基于AtomicInteger的CAS...
【标题与描述解析】 标题"基于SSM的高校运动会管理系统源码.zip"表明这是...同时,它也提供了改进和扩展的可能性,比如引入Spring Boot简化部署,使用React或Vue等前端框架提升用户体验,或是通过Redis缓存优化性能。
- 与Spring、SpringMVC等框架整合良好。 3. **MyBatis缺点**: - 对动态SQL的支持没有Hibernate等ORM框架强大。 - 由于没有代码生成器,所以开发工作量大。 4. **适用场合**:适合于需要进行SQL优化和定制化SQL...
通过这个个人博客项目,新手可以全面了解SSM框架的整合与应用,学习如何进行数据库设计、前后端交互、安全控制等Web开发中的关键技能。这是一个绝佳的实践平台,能够帮助开发者从理论走向实践,提升自身的技术能力。
SSM框架是Java Web开发中常用的一种整合框架,它是由Spring、Spring MVC和MyBatis三个开源框架组成的。本系统“基于SSM的员工工资管理系统”正是利用了这些技术来实现对员工工资数据的有效管理和操作。 1. **Spring...
MyBatis则作为持久层框架,实现SQL与Java对象的映射,简化数据库操作。 2. **系统架构** 该平台采用微服务架构,每个功能模块独立部署,提高了系统的可扩展性和维护性。同时,结合微信小程序,实现了移动端的图纸...
3. **数据访问**:探讨了如何使用Spring Boot与数据库进行交互,如JDBC、MyBatis、Hibernate等ORM框架的集成与应用。 4. **配置管理**:解析了Spring Boot的外部化配置,包括application.properties和YAML格式的配置...
- ORM框架更换:从Hibernate切换到MyBatis,原因是Hibernate虽然自动化程度高,但在灵活性和性能方面不如MyBatis。通过测试对比,MyBatis在性能上有优势,且团队成员对Hibernate不熟悉。 3. **实施步骤**: - ...
- **NoSQL**:了解MongoDB、Redis等NoSQL数据库,对比分析与关系型数据库的区别。 3. **框架**: - **Spring框架**:理解依赖注入(DI)和面向切面编程(AOP),熟悉Spring Boot、Spring Cloud的应用。 - **MyBatis*...
- **分层架构**: 在大型项目中,JFinal 可以与其他技术结合,例如采用 Service 层实现业务逻辑,DAO 层进行数据访问,使用 MyBatis 或 Hibernate 作为持久层框架。 - **RESTful API 设计**: 利用 JFinal 的注解...
5. ORM支持:整合Mybatis,简化数据库操作。 二、Jboot与SpringBoot对比 虽然Jboot与SpringBoot同为微服务框架,但它们各有侧重。SpringBoot以其全面的生态和强大的社区支持受到广泛青睐,而Jboot则在性能和易用性...
5. 报表统计:生成各类工资报表,如个人工资单、部门工资汇总、年度薪资对比等。 四、SpringBoot在系统中的应用 1. 数据访问层(DAO):使用Spring Data JPA进行数据库操作,提供简洁的API,减少代码量。 2. 服务层...
2. **丰富的库和框架**:Spring、MyBatis、Apache Flink等开源框架为系统开发提供了强大支持。 3. **稳定性和安全性**:Java的垃圾回收机制和严格的类型检查保证了系统的稳定性和安全性。 4. **并发处理能力**:Java...
4. 缓存技术:使用Redis或Hazelcast进行缓存,提升系统性能。 5. 日志管理:使用Logback或Log4j记录系统日志,便于问题排查。 6. 邮件服务:整合JavaMailSender发送邮件通知。 总结,基于Springboot的内容管理系统...
然后通过对比分析法对同类APP进行全面分析,通过整理各同类产品的界面设计版式、颜色、图标的使用等进行总结,对本设计的研究有借鉴意义。最后通过实地调查法对淮北市进行实地考察,根据地方特色开发趣味性功能,利用...