SpringBoot -- 学习记录Day7

张开发
2026/4/6 5:45:48 15 分钟阅读

分享文章

SpringBoot -- 学习记录Day7
SSMP整合案例实体类开发Dao 开发Service 开发Controller 开发页面开发项目异常处理按条件查询创建模块导入对应的依赖Druid 负责连接数据库MyBatis 负责写 SQL 操作数据MyBatis-Plus 让 MyBatis 更好用、少写代码dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.5.11/version/dependencydependencygroupIdcom.alibaba/groupIdartifactIddruid-spring-boot-starter/artifactIdversion1.2.28/versionscopetest/scope/dependency创建实体类Lombok!--lombok--dependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencyctrl f12getter setterdata 没有生成构造方法数据层开发MybatisPlusDruid配置文件druid使用 data然后加上 druidspring:datasource:druid:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/test?serverTimezoneUTCusername:root password:123456# 这里可以加上表前缀 mybatis-plus:global-config:db-config:table-prefix:server:port:8081spring:datasource:# 这四个必须写在这里和 druid 平级 driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/test?serverTimezoneUTCusername:root password:123456# druid 只是连接池配置不能放连接信息 druid:initial-size:5max-active:20mybatis-plus:global-config:db-config:table-prefix:spring └── datasource ├── url--连接信息写这里 ├── username--这里 ├── password--这里 ├── driver-class-name--这里 └── druid--连接池设置不能放连接信息增删改查增TestvoidtestInsert(){DragonPersondragonPersonnewDragonPerson();dragonPerson.setName(源稚生);dragonPerson.setAge(25);dragonPerson.setGrade(S);dragonPerson.setDragonLanguage(王权);dragonPersonDao.insert(dragonPerson);}改TestvoidtestUpdateName(){//这里说明不修改主键是可行的// 1. 构造要更新成的新数据这里只改 idDragonPersonpersonnewDragonPerson();person.setDragonLanguage(言灵.王权);// 你想改成的新 id// 2. 构造条件name 源稚生LambdaUpdateWrapperDragonPersonwrappernewLambdaUpdateWrapper();wrapper.eq(DragonPerson::getName,源稚生);// 3. 执行更新dragonPersonDao.update(person,wrapper);}TestvoidtestUpdateNameToId(){// 1. 构造条件LambdaUpdateWrapperDragonPersonwrappernewLambdaUpdateWrapper();wrapper.eq(DragonPerson::getName,源稚生).set(DragonPerson::getId,40385L)// 修改 id.set(DragonPerson::getDragonLanguage,王权);// 同时修改 dragonLanguage// 2. 执行更新entity 传 null全部用 wrapper 完成 SETdragonPersonDao.update(null,wrapper);}错误报告项目启动失败Spring 环境没加载起来java.lang.IllegalStateException:FailedtoloadApplicationContextforErrorcreating beanwithnamedataSourceFailedtodeterminea suitable driverclass项目启动失败Spring 环境没加载起来创建数据库连接失败找不到 MySQL 驱动类 → 无法连接数据库Spring 没把你的 Dao 当成一个 Bean 管理起来 → Autowired 注入失败Noqualifying bean of type com.hyh.dao.DragonPersonDao available因为你用了 MyBatis / MyBatis-PlusMapper 接口必须被 Spring 扫描到。即使不跑主启动类SpringBootTest 也会去找 SpringBootApplication 那个类所以你依然需要方案一SpringBootApplicationMapperScan(com.hyh.dao)// --- 加这个publicclassDragonApplication{publicstaticvoidmain(String[]args){SpringApplication.run(DragonApplication.class,args);}}方案二SpringBootTestMapperScan(com.hyh.dao)// --- 加这里publicclassDragonPersonDaoTest{AutowiredprivateDragonPersonDaodragonPersonDao;TestvoidcontextLoads(){System.out.println(dragonPersonDao.getId(40400));}}Spring Boot 4 MyBatis-Plus 不兼容的问题必须使用专属 Startermybatis-plus-spring-boot4-starter解决方法直接查看 MyBatis-Plus 官网的安装指南这是最准确的第一手信息。官网地址https://baomidou.com/getting-started/install/升级 Mybatis 为 Mybatis Plus 时出现一系列问题在接口文件中使用 MP提供的函数替换原本 Mybatis 的写法MapperpublicinterfaceDragonPersonDaoextendsBaseMapperDragonPerson{// Select(select id, name, age, grade, dragons language as dragonLanguage from user where id #{id})// DragonPerson getId(Integer id);}这会带来两个问题原来的查询语句中指定了查哪张表查询语句中对 SQL 中字段的特殊写法进行了在 java 中的映射于是报错Tabletest.dragon_person doesnt exist解决方式在实体类中加上注解DataTableName(dragon_person)// ← 这一行就是指定表名publicclassDragonPerson{privateLongid;privateStringname;privateIntegerage;privateIntegergrade;privateStringdragonLanguage;// 对应数据库 dragon_language}Unknowncolumn dragon_language in field listuser 表里没有 dragon_language 这个字段解决方法在实体类中加入映射DataTableName(user)publicclassDragonPerson{privateIntegerid;privateStringname;privateIntegerage;privateStringgrade;TableField(dragons language)privateStringdragonLanguage;}

更多文章