Migrate to MyBatis with proper Controller→Service→Mapper layering
- Add MyBatis Spring Boot Starter with XML mappers and domain classes
- Create 9 mapper interfaces + XML: Restaurant, Video, Channel, Review,
User, Stats, DaemonConfig, Search, Vector
- Create 10 domain classes with Lombok: Restaurant, VideoSummary,
VideoDetail, VideoRestaurantLink, Channel, Review, UserInfo,
DaemonConfig, SiteVisitStats, VectorSearchResult
- Create 7 new service classes: RestaurantService, VideoService,
ChannelService, ReviewService, UserService, StatsService,
DaemonConfigService
- Refactor all controllers to be thin (HTTP + auth only), delegating
business logic to services
- Refactor SearchService, PipelineService, DaemonScheduler, AuthService,
YouTubeService to use mappers/services instead of JDBC/repositories
- Add Jackson SNAKE_CASE property naming for consistent API responses
- Add ClobTypeHandler for Oracle CLOB→String in MyBatis
- Add IdGenerator utility for centralized UUID generation
- Delete old repository/ package (6 files), JdbcConfig, LowerCaseKeyAdvice
- VectorService retains JDBC for Oracle VECTOR type support
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>