当前位置: 首页 > wzjs >正文

网站建设类合同范本家电企业网站模板

网站建设类合同范本,家电企业网站模板,西安官网seo哪家公司好,税企互动平台一、环境搭建与依赖管理 1. 依赖配置扩展 除了基础的Spring、MyBatis和数据库驱动&#xff0c;推荐添加以下依赖以增强功能&#xff1a; <!-- Spring JDBC&#xff08;事务管理依赖&#xff09; --> <dependency><groupId>org.springframework</groupI…
一、环境搭建与依赖管理
1. 依赖配置扩展

除了基础的Spring、MyBatis和数据库驱动,推荐添加以下依赖以增强功能:

<!-- Spring JDBC(事务管理依赖) -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.20</version>
</dependency><!-- 日志框架(推荐SLF4J + Logback) -->
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.36</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.11</version>
</dependency><!-- 测试支持 -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>5.3.20</version><scope>test</scope>
</dependency>
2. 多环境配置(开发、测试、生产)

通过Spring的Profile机制实现环境隔离:

<!-- applicationContext.xml -->
<beans profile="dev"><bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource"><!-- 开发环境数据库配置 --></bean>
</beans><beans profile="prod"><bean id="dataSource" class="com.zaxxer.HikariDataSource"><!-- 生产环境数据库配置 --></bean>
</beans>

激活方式:

  • JVM参数:-Dspring.profiles.active=dev

  • 代码中:System.setProperty("spring.profiles.active", "dev")

二、进阶配置技巧
1. JavaConfig配置方式(替代XML)

使用注解驱动配置更简洁:

@Configuration
@MapperScan("com.example.mapper") // 自动扫描Mapper接口
@EnableTransactionManagement      // 启用注解事务
public class MyBatisConfig {@Beanpublic DataSource dataSource() {HikariDataSource ds = new HikariDataSource();ds.setDriverClassName("com.mysql.cj.jdbc.Driver");ds.setJdbcUrl("jdbc:mysql://localhost:3306/test_db");ds.setUsername("root");ds.setPassword("123456");return ds;}@Beanpublic SqlSessionFactory sqlSessionFactory() throws Exception {SqlSessionFactoryBean factory = new SqlSessionFactoryBean();factory.setDataSource(dataSource());factory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/**/*.xml"));return factory.getObject();}@Beanpublic PlatformTransactionManager transactionManager() {return new DataSourceTransactionManager(dataSource());}
}
2. 多数据源配置

在复杂项目中可能需要连接多个数据库:

@Configuration
public class MultiDataSourceConfig {@Bean(name = "primaryDataSource")@ConfigurationProperties(prefix = "spring.datasource.primary")public DataSource primaryDataSource() {return DataSourceBuilder.create().type(HikariDataSource.class).build();}@Bean(name = "secondaryDataSource")@ConfigurationProperties(prefix = "spring.datasource.secondary")public DataSource secondaryDataSource() {return DataSourceBuilder.create().type(HikariDataSource.class).build();}@Bean@Primarypublic SqlSessionFactory primarySqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean factory = new SqlSessionFactoryBean();factory.setDataSource(dataSource);return factory.getObject();}@Beanpublic SqlSessionFactory secondarySqlSessionFactory(@Qualifier("secondaryDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean factory = new SqlSessionFactoryBean();factory.setDataSource(dataSource);return factory.getObject();}
}
三、MyBatis高阶特性实战
1. 动态SQL与复杂查询

在Mapper XML中编写动态SQL:

<select id="selectUsers" resultType="User">SELECT * FROM user<where><if test="name != null">AND name LIKE CONCAT('%', #{name}, '%')</if><if test="email != null">AND email = #{email}</if></where>ORDER BY id DESC
</select>
2. 一级与二级缓存配置
  • 一级缓存:默认开启,作用域为SqlSession。

<mapper namespace="com.example.mapper.UserMapper"><cache eviction="LRU" flushInterval="60000" size="512" readOnly="true"/>
</mapper>
在Spring中需确保SqlSessionFactory的配置:
factory.setConfiguration(mybatisConfiguration()); // 设置全局配置// 自定义Configuration
public Configuration mybatisConfiguration() {Configuration config = new Configuration();config.setCacheEnabled(true); // 启用二级缓存return config;
}
3. 自定义TypeHandler

处理复杂类型转换(如JSON字段与Java对象的映射):

@MappedTypes(UserDetail.class)
@MappedJdbcTypes(JdbcType.VARCHAR)
public class UserDetailTypeHandler extends BaseTypeHandler<UserDetail> {private final ObjectMapper objectMapper = new ObjectMapper();@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, UserDetail parameter, JdbcType jdbcType) {ps.setString(i, objectMapper.writeValueAsString(parameter));}@Overridepublic UserDetail getNullableResult(ResultSet rs, String columnName) {return parseJson(rs.getString(columnName));}// 其他方法省略...
}

在MyBatis配置中注册:

<typeHandlers><typeHandler handler="com.example.handler.UserDetailTypeHandler"/>
</typeHandlers>
四、性能优化与最佳实践
1. 连接池调优(HikariCP为例)
HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(20);          // 最大连接数
config.setMinimumIdle(5);               // 最小空闲连接
config.setConnectionTimeout(30000);      // 连接超时时间(毫秒)
config.setIdleTimeout(600000);           // 空闲连接存活时间
config.setMaxLifetime(1800000);          // 连接最大生命周期
2. 批量操作提升性能

使用SqlSession的批量模式:

@Autowired
private SqlSessionFactory sqlSessionFactory;public void batchInsertUsers(List<User> users) {try (SqlSession session = sqlSessionFactory.openSession(ExecutorType.BATCH)) {UserMapper mapper = session.getMapper(UserMapper.class);for (User user : users) {mapper.insertUser(user);}session.commit(); // 手动提交}
}
3. SQL优化建议
  • 避免在循环中执行单条SQL

  • 使用<foreach>标签实现批量插入:

    <insert id="batchInsert">INSERT INTO user (name, email) VALUES<foreach item="user" collection="list" separator=",">(#{user.name}, #{user.email})</foreach>
    </insert>

五、测试与调试
1. 单元测试(Spring Test + JUnit)
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = MyBatisConfig.class)
public class UserMapperTest {@Autowiredprivate UserMapper userMapper;@Test@Transactional // 测试后自动回滚public void testInsertUser() {User user = new User("Alice", "alice@example.com");userMapper.insertUser(user);assertNotNull(user.getId());}
}
2. SQL日志输出

配置Logback(logback.xml):

<logger name="com.example.mapper" level="DEBUG"/> <!-- Mapper接口日志 -->
<logger name="java.sql.Connection" level="DEBUG"/> <!-- SQL执行日志 -->
<logger name="org.mybatis" level="TRACE"/> <!-- MyBatis内部日志 -->
六、常见问题深度解析
1. 事务失效场景
  • 原因1:非public方法使用@Transactional

  • 原因2:自调用(同类方法内部调用)
    解决方案:通过AOP代理调用或使用AopContext.currentProxy()

2. 懒加载异常(LazyInitializationException)
  • 背景:在事务外访问延迟加载的关联对象

  • 解决方案

    • 使用OpenSessionInViewFilter(Web项目)

    • 在事务范围内提前加载所需数据(如JOIN FETCH

3. MyBatis映射字段丢失
  • 原因:数据库字段名与Java属性名不一致(如驼峰vs下划线)

  • 解决
    全局配置开启驼峰映射:

    <settings><setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>


文章转载自:

http://xk1uMKCk.thbnt.cn
http://NaU07XAH.thbnt.cn
http://7KfqJF3r.thbnt.cn
http://VRGvQ5xa.thbnt.cn
http://jZNKoylI.thbnt.cn
http://NRpV775B.thbnt.cn
http://jslNtHwh.thbnt.cn
http://OYfJWmfm.thbnt.cn
http://Vk0cORcF.thbnt.cn
http://zXKFqGP6.thbnt.cn
http://T4RIgwe7.thbnt.cn
http://2ytTAjoP.thbnt.cn
http://SLpx9LbD.thbnt.cn
http://Dfoedgdu.thbnt.cn
http://nY5wzHOr.thbnt.cn
http://5hMEQRxv.thbnt.cn
http://zJoDFM26.thbnt.cn
http://Odq9BTtV.thbnt.cn
http://Jv7QtvNt.thbnt.cn
http://jps4Ihmg.thbnt.cn
http://mjnVtEId.thbnt.cn
http://fDU3jZYl.thbnt.cn
http://3xrkWTRf.thbnt.cn
http://G3aDndaM.thbnt.cn
http://Tm1trlML.thbnt.cn
http://b0UZ0jEa.thbnt.cn
http://Do2k9QSe.thbnt.cn
http://n40XXwIt.thbnt.cn
http://hgRHTySL.thbnt.cn
http://EarLJ4cR.thbnt.cn
http://www.dtcms.com/wzjs/605486.html

相关文章:

  • 重庆綦江网站制作公司哪家专业项目管理软件 开源
  • 网站权重传递网站建设客户沟通
  • 东莞公司网站广告联盟网站建设
  • 纯静态网站索引怎么做网站建设能解决哪些问题
  • 推荐几个做网页设计的网站大兴企业官网网站建设
  • 岳阳网站建设与设计中国品牌网站
  • dedecms 网站安装搜狗推广登陆
  • 做网站的竞品分析网站备案链接直接查看
  • 网站开发组合网站如何进行内外营销运营
  • 网站优化qq群优秀网站建设官网
  • 建设银行个人网站个人客户最常用的规划网站
  • 人力招聘网站建设的简要任务执行书电影网站怎么做推广
  • 利津网站建设wordpress 本机安装
  • 1网站免费建站免备案域名解析
  • 成都最专业做网站的关键词查网址
  • 移动端网站制作模板石家庄网站建设哪家专业
  • jsp网站开发面试题手机访问不了自己做的网站吗
  • 毛概课程网站建设seo网站推广策略
  • 可以做动感影集的网站寻找集团网站建设
  • 网站后台 生成所有页面网站开发要用到什么
  • 做网站还需要买空间吗wordpress下载的主题怎么用
  • 紫川网站建设企业网站功能对比分析
  • 如何分析网站的设计网站建设学什么语言
  • 毕业设计做app还是做网站大型网站系统解决方案
  • 商河县做网站公司怎么运营一个微信公众号
  • 小说网站的里面的搜索是怎么做的wordpress 增加浏览数
  • 用dw自己做网站做个什么样的网站比较好
  • 论坛网站开发语言个人网站如何在工信部备案
  • 汤姆叔叔官方网站建设不开会员免费ppt模板下载免费版
  • 安徽飞亚建设网站跨境电商平台入驻条件及费用