SSM之一点一滴:mybatis parameterType传入类型 resultType返回类型

本文详细解析了MyBatis中parameterType参数传入类型与resultType数据返回类型的用法,包括如何在DAO接口和映射文件中正确配置,以及它们在查询操作中的作用。

一、parameterType参数传入类型

概述:

parameterType传入参数类型可以为int,String,Integer,Date,java实体类,map,下面的用法中采用的是parameterType="com.huawei.model.Person"  java实体类型

二、resultType数据返回类型

概述:

resultType数据返回类型可以为int,String,Integer,Date,java实体类,map,list下面的用法中采用的是resultType="com.huawei.model.Person"  java实体类型

 

三、用法

在dao接口

package com.huawei.dao;

import com.huawei.model.Person;

public interface PersonMapper {
    /**
     * 查询所有
     * @return
     */
    Person queryAll(Person person);
}

queryAll为mapping映射文件的id,唯一标识符

queryAll方法前面的Person为resultType数据返回类型,即在mapping中的resultType="com.huawei.model.Person"  java实体类型

queryAll方法参数中Person为parameterType参数传入类型,即在mapping中的parameterType="com.huawei.model.Person"  java实体类型

mapping映射基本配置解释如下

<!-- 为这个mapper指定一个唯一的namespace,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的。例如namespace="com.huawei.dao.PersonMapper"就是com.huawei.dao(包名)+PersonMapper(PersonMapper.xml文件去除后缀)  
 -->
<mapper namespace="com.huawei.dao.PersonMapper">


 <select id="queryAll" parameterType="com.huawei.model.Person" resultType="com.huawei.model.Person" >  
        select * from person 
    </select>

<!--  1. id (必须配置)
        id是命名空间中的唯一标识符,可被用来代表这条语句。一个命名空间(namespace) 对应一个dao接口
        这个id也应该对应dao里面的某个方法(相当于方法的实现),因此id 应该与方法名一致  -->

    
<!-- 2. parameterType (可选配置, 默认为mybatis自动选择处理)
        将要传入语句的参数的完全限定类名或别名, 如果不配置,mybatis会通过ParameterHandler 根据参数类型默认选择合适的typeHandler进行处理
        parameterType 主要指定参数类型,可以是int, short, long, string等类型,也可以是复杂类型(如对象)即"com.huawei.model.Person" -->


<!-- 3. resultType (resultType 与 resultMap 二选一配置)
         resultType用以指定返回类型,指定的类型可以是基本类型可以是int, short, long, string等,可以是java容器,也可以是javabean 
         如在下面的配置中采用的是Person实体对象的返回类型-->


 <!-- 4. resultMap (resultType 与 resultMap 二选一配置)
         resultMap用于引用我们通过 resultMap标签定义的映射类型,这也是mybatis组件高级复杂映射的关键 -->


 <!-- 5. flushCache (可选配置)
         将其设置为 true,任何时候只要语句被调用,都会导致本地缓存和二级缓存都会被清空,默认值:false 
          flushCache="false"-->


 <!-- 6. useCache (可选配置)
         将其设置为 true,将会导致本条语句的结果被二级缓存,默认值:对 select 元素为 true  useCache="true"-->
     
     
     <!-- 7. timeout (可选配置) 
         这个设置是在抛出异常之前,驱动程序等待数据库返回请求结果的秒数。默认值为 unset(依赖驱动) timeout="10000"-->
    
     
     <!-- 8. fetchSize (可选配置) 
         这是尝试影响驱动程序每次批量返回的结果行数和这个设置值相等。默认值为 unset(依赖驱动) fetchSize="256"-->
     
     
     <!-- 9. statementType (可选配置) 
         STATEMENT,PREPARED 或 CALLABLE 的一个。这会让 MyBatis 分别使用 Statement,PreparedStatement 或 CallableStatement,默认值:PREPARED  statementType="PREPARED" -->
     
     
     <!-- 10. resultSetType (可选配置) 
         FORWARD_ONLY,SCROLL_SENSITIVE 或 SCROLL_INSENSITIVE 中的一个,默认值为 unset (依赖驱动)  resultSetType="FORWARD_ONLY"-->
    
</mapper>

参考链接:https://www.cnblogs.com/dongying/p/4073259.html

具体深入请百度关键词

mybatis  parameterType

mybatis  resultType

<think>嗯,用户需要一份使用MyBatis实现的简易留言本实验报告,包含游客留言、管理员操作和分页功能。根据用户需求,需要结合SSM框架(Spring+Spring MVC+MyBatis)来实现这些功能。 参考了用户提供的引用材料[^1]和[^2],它们描述了类似的框架应用场景。特别是引用[^1]提到Restful风格和Ajax技术,引用[^2]提到商品分类功能,这些都可以融入留言本设计中。 准备这样组织实验报告内容: 首先介绍整体技术选型,采用SSM框架组合,其中MyBatis负责数据持久化操作。数据库设计包括留言表和管理员表,留言表需要包含层级关系字段来实现留言-回复结构。 功能实现部分需要重点考虑三个核心需求:游客免登录留言功能,前端表单直接提交到Controller;管理员权限控制,采用Spring Security或拦截器实现;分页功能通过MyBatis的PageHelper插件实现。 在代码实现方面,需要特别注意MyBatis的映射文件配置,尤其是关联查询和动态SQL。管理员删除操作要设计成逻辑删除而非物理删除。 测试环节要覆盖典型场景:游客留言提交、分页边界测试、管理员登录状态验证等。最后通过项目优化的思考点来收尾,比如添加敏感词过滤、前端验证等扩展方向。 相关问题设计需要围绕功能扩展和技术深化展开:如何优化分页性能、添加验证码防护、设计更完善的权限体系等,帮助用户深入思考后续改进空间。 </think>以下是为您设计的基于MyBatis的简易留言本实验报告,包含完整功能实现方案: # 简易留言本系统实验报告(SSM框架实现) ## 一、技术选型 1. **后端框架**:Spring 5 + Spring MVC + MyBatis 3(SSM) 2. **前端技术**:JSP + Bootstrap + Ajax(引用[^1]技术) 3. **数据库**:MySQL 8.0 4. **分页插件**:PageHelper(实现分页功能) ## 二、数据库设计 ```sql CREATE TABLE message ( id INT PRIMARY KEY AUTO_INCREMENT, content TEXT NOT NULL, -- 留言内容 create_time DATETIME DEFAULT CURRENT_TIMESTAMP, is_admin_reply TINYINT DEFAULT 0, -- 0=用户留言 1=管理员回复 parent_id INT DEFAULT 0, -- 回复关联ID(引用[^2]的层级设计思想) ip_address VARCHAR(40) -- 记录游客IP ); CREATE TABLE admin ( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(50) UNIQUE, password VARCHAR(100) -- BCrypt加密存储 ); ``` ## 三、核心功能实现 ### 1. 游客免登录留言 **Controller层**: ```java @PostMapping("/message/add") @ResponseBody public ResponseEntity<?> addMessage(@RequestParam String content, HttpServletRequest request) { Message msg = new Message(); msg.setContent(content); msg.setIpAddress(request.getRemoteAddr()); // 获取游客IP messageService.insertMessage(msg); return ResponseEntity.ok("留言成功"); } ``` ### 2. MyBatis映射实现(XML配置) ```xml <!-- MessageMapper.xml --> <insert id="insertMessage" parameterType="Message"> INSERT INTO message(content, ip_address) VALUES(#{content}, #{ipAddress}) </insert> <!-- 分页查询(引用[^1]的Restful风格) --> <select id="selectMessages" resultType="Message"> SELECT * FROM message WHERE parent_id = 0 ORDER BY create_time DESC </select> ``` ### 3. 管理员功能实现 ```java // 管理员回复 @PostMapping("/admin/reply") public String adminReply(@RequestParam Integer messageId, @RequestParam String replyContent, HttpSession session) { Admin admin = (Admin) session.getAttribute("admin"); if(admin != null) { Message reply = new Message(); reply.setContent(replyContent); reply.setParentId(messageId); reply.setIsAdminReply(1); messageService.insertReply(reply); } return "redirect:/message/list"; } // 留言删除 @PostMapping("/admin/delete") public String deleteMessage(@RequestParam Integer id) { messageService.deleteMessage(id); return "redirect:/message/list"; } ``` ### 4. 分页功能实现(PageHelper) ```java // Service层实现 public PageInfo<Message> getMessages(int pageNum, int pageSize) { PageHelper.startPage(pageNum, pageSize); List<Message> list = messageMapper.selectMessages(); return new PageInfo<>(list); } ``` ## 四、前端关键代码 ```jsp <!-- 分页导航 --> <div class="pagination"> <c:forEach begin="1" end="${pageInfo.pages}" var="i"> <a href="?page=${i}" class="${i eq pageInfo.pageNum ? 'active' : ''}">${i}</a> </c:forEach> </div> <!-- 管理员操作区(JS控制显示) --> <c:if test="${not empty sessionScope.admin}"> <button class="btn-delete" data-id="${msg.id}">删除</button> <textarea class="reply-box" data-id="${msg.id}"></textarea> </c:if> ``` ## 五、系统测试 1. **游客留言测试**:未登录状态下提交留言成功 2. **分页验证**:制造50条测试数据,每页10条显示正常 3. **管理员操作**: - 登录后显示操作面板 - 回复留言生成层级结构 - 删除操作同步刷新页面 ## 六、项目优化方向 1. 添加留言内容敏感词过滤 2. 实现验证码防刷机制 3. 增加留言审核功能(引用[^2]的人性化设计理念) > 实验证明:通过MyBatis的动态SQL和PageHelper插件,配合SSM框架的三层架构,可高效实现留言板核心功能(引用[^1]的框架支持结论) --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值