<hx>标签 字体自动加粗 自动换行

本文探讨了HTML中&lt;hx&gt;标签的使用,包括其自动加粗和自动换行的功能,为网页设计者提供了深入理解与应用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<hx>标签 字体自动加粗 自动换行

转载于:https://www.cnblogs.com/classmethond/p/10117208.html

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.hx.sscs.mapper.OfficeMapper"> <!-- 1. 定义联查结果映射VO(办公室+教师) --> <resultMap id="OfficeTeacherVO" type="com.hx.sscs.vo.OfficeTeacherVO"> <id column="course_id" property="courseId" /> <result column="task" property="task" /> <result column="classroom" property="classroom" /> <result column="class_time" property="classTime" /> <result column="teacher_id" property="teacherId" /> <result column="teacher_name" property="teacherName" /> <result column="department" property="department" /> </resultMap> <!-- 2. 双表联查:根据教师ID查询办公室任务及教师信息 --> <select id="selectOfficeByTeacherId" parameterType="java.lang.Integer" resultMap="OfficeTeacherVO"> SELECT o.course_id, o.task, o.classroom, o.class_time, t.teacher_id, t.teacher_name, t.department FROM office o INNER JOIN teachers t ON o.teacher_id = t.teacher_id WHERE o.logical_delete = 0 AND t.logical_delete = 0 AND o.teacher_id = #{teacherId} </select> <!-- 2. 双表联查:根据教师教室查询办公室任务及教师信息 --> <select id="selectOfficeByName" parameterType="java.lang.String" resultMap="OfficeTeacherVO"> SELECT o.course_id, o.task, o.classroom, o.class_time, t.teacher_id, t.teacher_name, t.department FROM office o INNER JOIN teachers t ON o.teacher_id = t.teacher_id WHERE o.logical_delete = 0 AND t.logical_delete = 0 AND t.teacher_name LIKE CONCAT('%', #{TeacherName}, '%') </select> <!-- 3. 扩展:查询所有办公室任务及对应教师信息(不带条件) --> <select id="selectAllOfficeWithTeacher" resultMap="OfficeTeacherVO"> SELECT o.course_id, o.task, o.classroom, o.class_time, t.teacher_id, t.teacher_name, t.department FROM office o INNER JOIN teachers t ON o.teacher_id = t.teacher_id WHERE o.logical_delete = 0 AND t.logical_delete = 0 </select> </mapper> package com.hx.sscs.mapper;package com.hx.sscs.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.hx.sscs.entity.Office; import com.hx.sscs.entity.TaskList; import com.hx.sscs.entity.Teachers; import com.hx.sscs.mapper.OfficeMapper; import com.hx.sscs.service.OfficeService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.hx.sscs.vo.OfficeTeacherVO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * <p> * 服务实现类 * </p> * * @author testjava * @since 2025-06-05 */ @Service public class OfficeServiceImpl extends ServiceImpl<OfficeMapper, Office> implements OfficeService { @Autowired private OfficeMapper officeMapper; @Override public List<Office> searchClass(String taskName) { QueryWrapper<Office> queryWrapper = new QueryWrapper<>(); queryWrapper.like("task", taskName);//模糊查询姓名 return baseMapper.selectList(queryWrapper); } @Override public Office taskroom(String classroom) { QueryWrapper<Office> queryWrapper=new QueryWrapper<>(); queryWrapper.eq("classroom",classroom); return baseMapper.selectOne(queryWrapper); } @Override public List<OfficeTeacherVO> searchTeacher(String teacherName) {//根据姓名查询老师的教职工号,根据教职工号查询教室 List<OfficeTeacherVO> list=officeMapper.selectOfficeByName(teacherName); return list; } } package com.hx.sscs.controller; import com.hx.sscs.commonutils.R; import com.hx.sscs.entity.Office; import com.hx.sscs.entity.TaskList; import com.hx.sscs.entity.Teachers; import com.hx.sscs.handler.EduException; import com.hx.sscs.service.OfficeService; import com.hx.sscs.service.TaskListService; import com.hx.sscs.service.TeachersService; import com.hx.sscs.vo.OfficeTeacherVO; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** * <p> * 前端控制器 * </p> * * @author testjava * @since 2025-06-05 */ @RestController @RequestMapping("/sscs/office") public class OfficeController { //根据任务查询教室//模糊查询 @Resource private OfficeService officeService; @Resource private TeachersService teachersService; @ApiOperation(value = "模糊查询") @PostMapping("searchClass") public R searchClass( @ApiParam(name = "taskName",value = "任务名",required = true) @RequestParam String taskName ){ try{ //调用模糊查询方法 List<Office> offices=new ArrayList<>();//建立集合装填返回数据 offices=officeService.searchClass(taskName); //找到taskList的子节点,若子节点有自己的子节点则继续找出子节点; if (offices == null) { return R.error().code(60001).message("未查询到任务: " + taskName); } System.out.println(offices); return R.ok().data("tasks", offices).message("查看成功"); }catch (EduException e) { return R.error().code(e.getCode()).message(e.getMsg()); } catch (Exception e){ System.out.println(e.getMessage()); return R.error().code(60002).message("查看失败:"+e.getMessage()); } } //根据教室查询信息 @ApiOperation(value = "教室查询") @PostMapping("Class") public R Class( @ApiParam(name = "classroom",value = "教室号",required = true) @RequestParam String classroom){ try{ Office office=officeService.taskroom(classroom); System.out.println(office); return R.ok().data("office",office).message("登录成功"); }catch (EduException e) { return R.error().code(e.getCode()).message(e.getMsg()); } catch (Exception e){ System.out.println(e.getMessage()); return R.error().code(200055).message("登录失败:"+e.getMessage()); } } //根据老师查询教室 @ApiOperation(value = "任课老师查询") @PostMapping("ClassTeacher") private R ClassTeacher( @ApiParam(name = "TeacherName",value = "教师名",required = true) @RequestParam String TeacherName ){ //根据老师姓名查询id,得到多表联查的关于该id的数据//改为直接多表联查姓名 try{ List<OfficeTeacherVO> teachers=officeService.searchTeacher(TeacherName); System.out.println(teachers); return R.ok().data("OfficeTeacherVO",teachers).message("多表查询老师姓名"); }catch (EduException e) { return R.error().code(e.getCode()).message(e.getMsg()); } catch (Exception e){ System.out.println(e.getMessage()); return R.error().code(200055).message("多表查询老师姓名失败:"+e.getMessage()); } //教师号查询id //id查询Off } //根据教室查询老师 } package com.hx.sscs; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; import springfox.documentation.swagger2.annotations.EnableSwagger2; @SpringBootApplication @EnableSwagger2 @ComponentScan(basePackages = {"com.hx"}) @MapperScan("com.hx.sscs.mapper") public class Boot3Application { public static void main(String[] args) { SpringApplication.run(Boot3Application.class,args); } } package com.hx.sscs.vo; import lombok.Data; import java.io.Serializable; /** * 办公室表与教师表联查结果VO */ @Data public class OfficeTeacherVO implements Serializable { // 办公室表字段 private Integer courseId; private String task; private String classroom; private String classTime; // 教师表字段 private Integer teacherId; private String teacherName; private String department; // getter 和 setter 方法 public Integer getCourseId() { return courseId; } public void setCourseId(Integer courseId) { this.courseId = courseId; } public String getTask() { return task; } public void setTask(String task) { this.task = task; } public String getClassroom() { return classroom; } public void setClassroom(String classroom) { this.classroom = classroom; } public String getClassTime() { return classTime; } public void setClassTime(String classTime) { this.classTime = classTime; } public Integer getTeacherId() { return teacherId; } public void setTeacherId(Integer teacherId) { this.teacherId = teacherId; } public String getTeacherName() { return teacherName; } public void setTeacherName(String teacherName) { this.teacherName = teacherName; } public String getDepartment() { return department; } public void setDepartment(String department) { this.department = department; } @Override public String toString() { return "OfficeTeacherVO{" + "courseId=" + courseId + ", task='" + task + '\'' + ", classroom='" + classroom + '\'' + ", classTime='" + classTime + '\'' + ", teacherId=" + teacherId + ", teacherName='" + teacherName + '\'' + ", department='" + department + '\'' + '}'; } } Invalid bound statement (not found): com.hx.sscs.mapper.OfficeMapper.selectOfficeByName import com.hx.sscs.entity.Office; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.hx.sscs.vo.OfficeTeacherVO; import org.apache.ibatis.annotations.Mapper; import java.util.List; /** * <p> * Mapper 接口 * </p> * * @author testjava * @since 2025-06-05 */ @Mapper public interface OfficeMapper extends BaseMapper<Office> { /** * 根据教师ID联查办公室任务及教师信息 */ List<OfficeTeacherVO> selectOfficeByTeacherId(Integer teacherId); List<OfficeTeacherVO> selectOfficeByName(String TeacherName); /** * 查询所有办公室任务及对应教师信息 */ List<OfficeTeacherVO> selectAllOfficeWithTeacher(); } package com.hx.sscs.service; import com.hx.sscs.entity.Office; import com.baomidou.mybatisplus.extension.service.IService; import com.hx.sscs.entity.TaskList; import com.hx.sscs.vo.OfficeTeacherVO; import java.io.Serializable; import java.util.List; /** * <p> * 服务类 * </p> * * @author testjava * @since 2025-06-05 */ public interface OfficeService extends IService<Office> { List<Office> searchClass(String taskName);//模糊查询 Office taskroom(String classroom); List<OfficeTeacherVO> searchTeacher(String teacherName);//教师名查询 }
最新发布
06-27
<think>我们正在处理MyBatis的绑定语句未找到错误,具体是`com.hx.sscs.mapper.OfficeMapper.selectOfficeByName`方法,且涉及多表联查。根据引用[1]和之前的知识,我们可以从以下几个方面解决:1.**确保XML文件被正确打包**:在Maven项目中,如果MapperXML文件放在`src/main/java`目录下,需要在`pom.xml`中配置资源包含,否则这些XML文件不会被打包到target/classes中。配置如下:```xml<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources></build>```然后执行`mvncleaninstall`重新构建项目。2.**检查MapperXML文件中的SQL语句定义**:-确保在对应的MapperXML文件中,有一个id为`selectOfficeByName`的SQL语句定义(如`<select>`标签)。-由于是多表联查,可能使用了`resultMap`进行结果映射,需要确保`resultMap`定义正确,并且`<select>`标签的`resultMap`属性指向该映射。3.**检查接口和XML的命名空间**:-MapperXML文件的`namespace`属性必须是对应Mapper接口的全限定名(如`com.hx.sscs.mapper.OfficeMapper`)。-例如:```xml<mappernamespace="com.hx.sscs.mapper.OfficeMapper"><selectid="selectOfficeByName"...>...</select></mapper>```4.**检查方法名和SQL语句id是否一致**:-接口中的方法名和XML中SQL语句的id必须完全相同(包括大小写)。5.**多表联查的SQL和结果映射**:-多表联查时,查询结果可能包含多个表的字段,因此不能直接使用`resultType`,而应该使用`resultMap`来映射结果。-定义一个`resultMap`,其中包含主表对象以及关联的集合或对象(使用`<collection>`或`<association>`)。-示例:```xml<resultMapid="OfficeResultMap"type="Office"><!--主键--><idproperty="id"column="id"/><!--其他属性--><resultproperty="name"column="name"/><!--关联的用户列表,假设Office中有一个List<User>users属性--><collectionproperty="users"ofType="User"><idproperty="id"column="user_id"/><resultproperty="name"column="user_name"/></collection></resultMap><selectid="selectOfficeByName"resultMap="OfficeResultMap">SELECTo.id,o.name,u.idasuser_id,u.nameasuser_nameFROMofficeoLEFTJOINuseruONo.id=u.office_idWHEREo.name=#{name}</select>```6.**检查Mapper接口的扫描**:-在SpringBoot启动类上使用`@MapperScan`注解指定Mapper接口所在的包,例如:```java@MapperScan("com.hx.sscs.mapper")@SpringBootApplicationpublicclassApplication{...}```7.**检查XML文件路径**:-通常,XML文件应该放在`src/main/resources`下与接口相同的包路径中(如`com/hx/sscs/mapper`),这样MyBatis会自动扫描。如果放在`src/main/java`中,则需要如上配置Maven。8.**IDE的构建问题**:-如果使用IntelliJIDEA,尝试重新加载项目(File->InvalidateCaches/Restart)或重新构建项目(Build->RebuildProject)。-确保在target/classes目录下能找到编译后的MapperXML文件(位于对应的包路径下)。9.**检查MyBatis配置**:-在`application.properties`或`application.yml`中,确认配置了MyBatis的mapper-locations(如果XML文件不在默认位置):```propertiesmybatis.mapper-locations=classpath*:com/hx/sscs/mapper/**/*.xml```按照以上步骤逐一检查,通常可以解决绑定语句未找到的问题。如果问题仍然存在,可以尝试在日志中开启MyBatis的调试信息(设置日志级别为DEBUG),查看MyBatis启动时加载了哪些Mapper文件和SQL语句。生成的相关问题:§§相关问题§§1.MyBatis中如何配置多表联查的结果映射?2.Maven项目如何正确打包MyBatis的MapperXML文件?3.如何在SpringBoot中配置MyBatis的Mapper扫描?4.MyBatis的`resultMap`和`resultType`有什么区别?5.如何调试MyBatis的SQL语句绑定问题?</think>### 解决 MyBatis 绑定语句未找到错误:`selectOfficeByName`(多表联查场景) 以下是针对多表联查场景的完整解决方案,请逐步排查: #### 1. **检查 XML 文件与接口的映射关系(关键)** ```xml <!-- OfficeMapper.xml --> <mapper namespace="com.hx.sscs.mapper.OfficeMapper"> <!-- 多表联查必须使用 resultMap --> <select id="selectOfficeByName" resultMap="officeResultMap"> SELECT o.*, d.department_name FROM office o JOIN department d ON o.dept_id = d.id WHERE o.name = #{name} </select> <!-- 自定义结果映射 --> <resultMap id="officeResultMap" type="com.hx.sscs.model.Office"> <id property="id" column="id"/> <result property="name" column="name"/> <!-- 处理关联对象 --> <association property="department" javaType="com.hx.sscs.model.Department"> <id property="id" column="dept_id"/> <result property="name" column="department_name"/> </association> </resultMap> </mapper> ``` **必须确认**: - `<mapper namespace>` 必须匹配 `OfficeMapper` 的全限定名 - `<select id>` 必须与方法名 `selectOfficeByName` **完全一致**(区分大小写) - 多表查询必须使用 `<resultMap>` 代替 `resultType` #### 2. **Maven 资源过滤配置(重要)** ```xml <!-- pom.xml 配置 --> <build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> <!-- 包含所有XML文件 --> </includes> <filtering>false</filtering> </resource> <!-- 同时包含资源目录 --> <resource> <directory>src/main/resources</directory> </resource> </resources> </build> ``` 执行命令: ```bash mvn clean install -U ``` #### 3. **MyBatis 配置扫描路径** ```yaml # application.yml 配置 mybatis: mapper-locations: - classpath*:com/hx/sscs/mapper/**/*.xml # XML文件路径 - classpath*:mapper/**/*.xml # 备用路径 type-aliases-package: com.hx.sscs.model # 实体类包路径 ``` #### 4. **Spring Boot 启动类配置** ```java @MapperScan("com.hx.sscs.mapper") // 确保扫描到Mapper接口 @SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` #### 5. **多表联查的特殊检查项 1. **结果集映射验证**: - 实体类 `Office` 必须包含关联对象属性(如 `private Department department;`) - 关联对象的 getter/setter 方法必须存在 2. **SQL 字段别名匹配**: ```sql SELECT o.id AS office_id, d.id AS department_id -- 别名必须与resultMap的column匹配 ``` 3. **日志调试**(在 `application.yml` 中启用): ```yaml logging: level: com.hx.sscs.mapper: TRACE ``` #### 6. **IDE 特定操作 - **IntelliJ IDEA**: `Build > Rebuild Project` `File > Invalidate Caches / Restart` - **Eclipse**: 项目右键 > Maven > Update Project 项目右键 > Refresh > **提示**:90% 的此类错误是由于 XML 文件未正确打包或命名空间配置错误导致的[^1]。 --- ### 相关问题 1. **MyBatis 多表联查时如何处理一对多关系?** 2. **如何优化 MyBatis 多表查询的 N+1 问题?** 3. **MyBatis 结果集映射中 `<association>` 和 `<collection>` 有何区别?** 4. **Spring Boot 中如何配置 MyBatis 二级缓存提升多表查询性能?** 5. **MyBatis 动态 SQL 在多表联查中如何应用?**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值