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

怎样开发手机网站建设广州seo服务

怎样开发手机网站建设,广州seo服务,网站活动推广方案,江门网站建设推广平台SpringBootMyBatis集成进阶配置 - XML与注解的灵活运用 前言 在Spring Boot与MyBatis的集成开发中,开发者常面临XML映射文件与注解两种SQL定义方式的选择,以及复杂场景下的动态SQL、多数据源等进阶需求。本文将从核心配置的灵活性出发,对比X…

SpringBoot+MyBatis集成进阶配置 - XML与注解的灵活运用


前言

在Spring Boot与MyBatis的集成开发中,开发者常面临XML映射文件注解两种SQL定义方式的选择,以及复杂场景下的动态SQL、多数据源等进阶需求。本文将从核心配置的灵活性出发,对比XML与注解的适用场景,详解动态SQL的实现技巧,并结合ResultMaptypeAliases等高级特性,最终通过多数据源配置实战演示企业级解决方案。无论你是希望优化现有项目,还是应对复杂业务逻辑,本文均能提供清晰的实践路径。


一、XML与注解:如何选择?
1. 注解的简洁与局限

通过@Select@Insert等注解直接在Mapper接口中编写SQL,适合简单、静态的SQL场景,例如:

@Select("SELECT * FROM user WHERE id = #{id}")
User findById(Long id);

优点

  • 代码简洁,无需维护XML文件。
  • 适合快速开发小型项目。

缺点**:

  • 复杂SQL可读性差(如动态条件、关联查询)。
  • 无法直接使用MyBatis的动态SQL标签。

2. XML的动态与强大

XML映射文件通过<if><foreach>等标签支持动态SQL,适合复杂查询和批量操作:

<select id="findUsers" resultType="User">SELECT * FROM user<where><if test="name != null">AND name = #{name}</if><if test="status != null">AND status = #{status}</if></where>
</select>

优点

  • 动态SQL灵活,易于维护复杂逻辑。
  • 支持结果集映射(ResultMap)和关联查询。

缺点

  • 需额外维护XML文件,项目结构稍显复杂。

结论简单查询用注解,复杂逻辑用XML,二者可混合使用!


二、动态SQL实战:提升代码灵活性
1. 条件分支与循环
  • <if>标签:根据参数动态拼接条件。
  • <foreach>标签:实现批量插入或IN查询:
<insert id="batchInsert">INSERT INTO user (name, email) VALUES<foreach item="user" collection="list" separator=",">(#{user.name}, #{user.email})</foreach>
</insert>
2. 多表关联查询与ResultMap

通过ResultMap定义嵌套结果集,解决一对多关联查询:

<resultMap id="OrderWithItems" type="Order"><id property="id" column="order_id"/><collection property="items" ofType="OrderItem"><id property="id" column="item_id"/><result property="product" column="product_name"/></collection>
</resultMap>

三、核心配置优化:typeAliases与mapperLocations
1. 简化实体类引用

application.yml中配置type-aliases-package,避免XML中写全类名:

mybatis:type-aliases-package: com.example.entitymapper-locations: classpath:mapper/*.xml
2. 自动扫描Mapper接口

通过@MapperScan注解指定Mapper接口路径,避免逐个添加@Mapper

@SpringBootApplication
@MapperScan("com.example.mapper")
public class Application { ... }

四、多数据源配置实战
场景需求

同时连接主库(写操作)从库(读操作),需独立配置数据源与MyBatis会话。

1. 主数据源配置
@Configuration
@MapperScan(basePackages = "com.example.mapper.primary", sqlSessionFactoryRef = "primarySqlSessionFactory")
public class PrimaryDataSourceConfig {@Bean(name = "primaryDataSource")@ConfigurationProperties(prefix = "spring.datasource.primary")public DataSource primaryDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "primarySqlSessionFactory")public SqlSessionFactory sqlSessionFactory(@Qualifier("primaryDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/primary/*.xml"));return bean.getObject();}
}
2. 从数据源配置
@Configuration
@MapperScan(basePackages = "com.example.mapper.secondary", sqlSessionFactoryRef = "secondarySqlSessionFactory")
public class SecondaryDataSourceConfig {@Bean(name = "secondaryDataSource")@ConfigurationProperties(prefix = "spring.datasource.secondary")public DataSource secondaryDataSource() {return DataSourceBuilder.create().build();}@Bean(name = "secondarySqlSessionFactory")public SqlSessionFactory sqlSessionFactory(@Qualifier("secondaryDataSource") DataSource dataSource) throws Exception {SqlSessionFactoryBean bean = new SqlSessionFactoryBean();bean.setDataSource(dataSource);bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath:mapper/secondary/*.xml"));return bean.getObject();}
}
3. 配置文件(application.yml)
spring:datasource:primary:url: jdbc:mysql://localhost:3306/primary_dbusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driversecondary:url: jdbc:mysql://localhost:3306/secondary_dbusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driver

五、总结与最佳实践
  1. XML与注解混合使用:简单CRUD用注解,动态SQL和关联查询用XML。
  2. 动态SQL提升灵活性:善用<if><foreach>处理复杂业务逻辑。
  3. 配置优化技巧type-aliases-package简化代码,mapperLocations规范路径。
  4. 多数据源方案:通过独立配置DataSourceSqlSessionFactory实现读写分离。

避坑指南

  • 多数据源场景下,需明确指定@MapperScansqlSessionFactoryRef属性。
  • 避免在多数据源中重复扫描同一Mapper接口路径。

欢迎在评论区留言讨论你在MyBatis配置中遇到的难题!

http://www.cadmedia.cn/news/9281.html

相关文章:

  • 网站建站的流程东莞网站设计公司
  • 百度pc权重seo关键词排名优化推荐
  • 美国今天刚刚发生的新闻seo网站技术培训
  • 手机付费咨询网站建设互动营销案例100
  • 网站制作公司排名前十西安seo关键词查询
  • 2o17甘孜建设网站网上在哪里打广告最有效
  • 网站收录查询情况seo做什么网站赚钱
  • 网站制作公司如何运作网站建设黄页在线免费
  • 福州企业建站软件百度指数怎么看地域数据
  • 智慧团建登陆网站宁德市委书记
  • 做任务什么网站郑州seo网站管理
  • 7a125v能插国内插座吗北京seo结算
  • 苏州网站seo公司代写平台在哪找
  • 合肥网站网站建设百度seo关键词优化排名
  • 无锡建设机械网站制作网站平台都有哪些
  • 做网站编程语言西安网站制作
  • 软文营销的写作技巧有哪些郑州网站优化外包
  • 网络培训ppt标题优化方法
  • 鞍山ui界面惠州seo计费管理
  • 门户网站如何建设企业内训课程
  • 网站建设考题潍坊网站排名提升
  • 彩票交易网站开发三台网站seo
  • 网站哪个公司好关键词采集网站
  • 做哪种网站比较简单微信广告投放推广平台多少费用
  • 泉州最专业手机网站建设定制网店推广平台有哪些
  • 做网站需要什么软件如何找友情链接
  • 中纪委网站作风建设永远在路上网站自然排名怎么优化
  • 怎么做网站埋点如何做seo
  • 长沙建站费用百度秒收录蜘蛛池
  • 哈尔滨网页设计培训橘子seo