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

day16_接口加强练习

day16_接口加强练习

1 mybatis在web应用中 替代原生jdbc

1后端使用三层代码结构

开发过程中 要做(好自测) 容易定位错误出现的位置

dao 完成 本地junit测试

service 完成 本地junit测试

controller 完成 用接口测试工具 测试

2测试人员测什么

以各种奇怪的角度 测试应用程序的使用

2 接口练习

写出完整的服务接口 再通过postman做测试

1.练习sql使用 2 mybatis使用 3 三层代码结构的使用

1.展示所有用户信息 (练习查询的动态sql)

带查询条件(支持动态查询)

用户名 模糊查询

是否有效 精确查询

sql语句

-- 根据条件 查询用户信息
select * from admin_user
where username like CONCAT('%','i','%')
and   isvalid = 1

dao

    // 如果带条件 方法名尽量起 by XXXList<AdminUser> listUserByCondition(AdminUser inputUser);
​
    <select id="listUserByCondition" resultMap="AdminUserMap">
​select * from admin_user<where><if test="username !=null and username !=''">username like CONCAT('%',#{username},'%')</if><if test="isvalid !=null">and   isvalid = #{isvalid}</if></where>
​</select>

service

package com.javasm.service.impl;
​
import com.javasm.dao.AdminUserDao;
import com.javasm.dao.TbAreaDao;
import com.javasm.entity.AdminUser;
import com.javasm.entity.TbArea;
import com.javasm.service.AdminUserService;
import com.javasm.utils.MyBatisHealper;
import org.apache.ibatis.session.SqlSession;
​
import java.util.List;
​
/*** @className: AdminUserServiceImpl* @author: gfs* @date: 2025/10/22 16:37* @version: 0.1* @since: jdk17* @description:*/
public class AdminUserServiceImpl implements AdminUserService {
​@Overridepublic List<AdminUser> listUserByCondition(AdminUser inputUser) {SqlSession sqlSession = MyBatisHealper.getSqlSession();AdminUserDao mapper = sqlSession.getMapper(AdminUserDao.class);List<AdminUser> listUser = mapper.listUserByCondition(inputUser);MyBatisHealper.backSqlSession(sqlSession);return listUser;}
}
​

controller

package com.javasm.controller;
​
import com.alibaba.fastjson.JSON;
import com.javasm.entity.AdminUser;
import com.javasm.entity.ReturnCode;
import com.javasm.entity.ReturnResult;
import com.javasm.service.AdminUserService;
import com.javasm.service.impl.AdminUserServiceImpl;
​
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
​
/*** @className: listUserServlet* @author: gfs* @date: 2025/10/22 16:39* @version: 0.1* @since: jdk17* @description:*/
@WebServlet("/listUser")
public class ListUserServlet extends HttpServlet {
​@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1接收参数 转换格式 封装对象req.setCharacterEncoding("utf-8");String username = req.getParameter("username");String isvalidStr = req.getParameter("isvalid");Integer isvalid = null;if(isvalidStr!=null && !"".equals(isvalidStr)){isvalid = Integer.parseInt(isvalidStr);}AdminUser inputUser = new AdminUser(username,isvalid);
​//2调用service
​AdminUserService adminUserService = new AdminUserServiceImpl();List<AdminUser> listUsers = adminUserService.listUserByCondition(inputUser);
​//3根据执行结果 反馈数据ReturnResult returnResult = new ReturnResult();if(listUsers.size()>0){//查询成功returnResult.setCode(ReturnCode.QUERY_SUCCESS.getCode());returnResult.setMsg(ReturnCode.QUERY_SUCCESS.getMsg());returnResult.setReturnData(listUsers);}else{//查询无数据returnResult.setCode(ReturnCode.QUERY_NODATA.getCode());returnResult.setMsg(ReturnCode.QUERY_NODATA.getMsg());}
​//通过数据流返回jsonresp.setContentType("application/json;charset=utf-8");PrintWriter writer = resp.getWriter();writer.print(JSON.toJSONString(returnResult));writer.close();
​
​
​
​}
}
​

2.查询所有菜单信息(练习高级映射)

没有传入参数

需要有父子嵌套关系

sql语句

select am2.*,am1.mid as submid,am2.menuname as submenuname,am2.url as suburl 
​
from admin_menu am1  inner join admin_menu am2 on am1.pid = am2.mid
​

dao

 List<AdminMenu>  listMenuWithSubMenu();
<select id="listMenuWithSubMenu" resultMap="AdminMenuWithSubMenuMap">select am2.*,am1.mid as submid,am2.menuname as submenuname,am2.url as suburl
​from admin_menu am1  inner join admin_menu am2 on am1.pid = am2.mid
​</select>
​
​<resultMap type="com.javasm.entity.AdminMenu" id="AdminMenuMap"><id property="mid" column="mid" jdbcType="INTEGER"/><result property="menuname" column="menuname" jdbcType="VARCHAR"/><result property="pid" column="pid" jdbcType="INTEGER"/><result property="url" column="url" jdbcType="VARCHAR"/><result property="show" column="show" jdbcType="INTEGER"/><result property="glyphicon" column="glyphicon" jdbcType="VARCHAR"/></resultMap>
​
​<resultMap type="com.javasm.entity.AdminMenu" id="AdminMenuWithSubMenuMap" extends="AdminMenuMap"><collection property="subMenu" ofType="com.javasm.entity.AdminMenu"><id property="mid" column="submid" jdbcType="INTEGER"/><result property="menuname" column="submenuname" jdbcType="INTEGER"/><result property="url" column="suburl" jdbcType="INTEGER"/></collection>
​</resultMap>

service

package com.javasm.service.impl;import com.alibaba.fastjson.JSON;
import com.javasm.dao.AdminMenuDao;
import com.javasm.entity.AdminMenu;
import com.javasm.service.AdminMenuService;
import com.javasm.utils.MyBatisHealper;
import org.apache.ibatis.session.SqlSession;import java.util.List;/*** @className: AdminMenuServiceImpl* @author: gfs* @date: 2025/10/22 17:06* @version: 0.1* @since: jdk17* @description:*/
public class AdminMenuServiceImpl implements AdminMenuService {@Overridepublic List<AdminMenu> listMenuWithSubMenu() {SqlSession sqlSession = MyBatisHealper.getSqlSession();AdminMenuDao mapper = sqlSession.getMapper(AdminMenuDao.class);List<AdminMenu> listMenus = mapper.listMenuWithSubMenu();MyBatisHealper.backSqlSession(sqlSession);return listMenus;}
}

controller

package com.javasm.controller;import com.alibaba.fastjson.JSON;
import com.javasm.entity.AdminMenu;
import com.javasm.entity.ReturnCode;
import com.javasm.entity.ReturnResult;
import com.javasm.service.AdminMenuService;
import com.javasm.service.impl.AdminMenuServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;/*** @className: LiserMenuServlet* @author: gfs* @date: 2025/10/22 17:07* @version: 0.1* @since: jdk17* @description:*/
@WebServlet("/listMenu")
public class ListMenuServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1接收参数 转格式 封装对象//2 调用serviceAdminMenuService adminMenuService = new AdminMenuServiceImpl();List<AdminMenu> listMenus = adminMenuService.listMenuWithSubMenu();//3反馈数据ReturnResult returnResult =new ReturnResult(ReturnCode.QUERY_SUCCESS.getCode(),ReturnCode.QUERY_SUCCESS.getMsg(),listMenus);//通过数据流返回jsonresp.setContentType("application/json;charset=utf-8");PrintWriter writer = resp.getWriter();writer.print(JSON.toJSONString(returnResult));writer.close();}
}

3.查询指定用户的菜单信息

用户编号

需要有父子嵌套关系

sql语句

select am2.*,am1.mid as submid,am1.menuname as submenuname,am1.url as suburl 
from rel_admin_user_menu rum inner join admin_menu am1 on rum.mid = am1.midinner join admin_menu am2  on am1.pid = am2.midwhere uid = 7

dao

   List<AdminMenu> listMenuByUser(Integer uid);
    <select id="listMenuByUser" resultMap="AdminMenuWithSubMenuMap">select am2.*,am1.mid as submid,am1.menuname as submenuname,am1.url as suburlfrom rel_admin_user_menu rum inner join admin_menu am1 on rum.mid = am1.midinner join admin_menu am2  on am1.pid = am2.midwhere uid = #{uid}</select><resultMap type="com.javasm.entity.AdminMenu" id="AdminMenuMap"><id property="mid" column="mid" jdbcType="INTEGER"/><result property="menuname" column="menuname" jdbcType="VARCHAR"/><result property="pid" column="pid" jdbcType="INTEGER"/><result property="url" column="url" jdbcType="VARCHAR"/><result property="show" column="show" jdbcType="INTEGER"/><result property="glyphicon" column="glyphicon" jdbcType="VARCHAR"/></resultMap><resultMap type="com.javasm.entity.AdminMenu" id="AdminMenuWithSubMenuMap" extends="AdminMenuMap"><collection property="subMenu" ofType="com.javasm.entity.AdminMenu"><id property="mid" column="submid" jdbcType="INTEGER"/><result property="menuname" column="submenuname" jdbcType="INTEGER"/><result property="url" column="suburl" jdbcType="INTEGER"/></collection></resultMap>

service

    @Overridepublic List<AdminMenu> listMenuByUser(Integer uid) {SqlSession sqlSession = MyBatisHealper.getSqlSession();AdminMenuDao mapper = sqlSession.getMapper(AdminMenuDao.class);List<AdminMenu> listMenus = mapper.listMenuByUser(uid);MyBatisHealper.backSqlSession(sqlSession);return listMenus;}

controller

package com.javasm.controller;import com.alibaba.fastjson.JSON;
import com.javasm.entity.AdminMenu;
import com.javasm.entity.ReturnCode;
import com.javasm.entity.ReturnResult;
import com.javasm.service.AdminMenuService;
import com.javasm.service.impl.AdminMenuServiceImpl;import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;/*** @className: ListMenuByUser* @author: gfs* @date: 2025/10/22 17:27* @version: 0.1* @since: jdk17* @description:*/
@WebServlet("/listMenuByUser")
public class ListMenuByUser extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1接参数 转格式 封装对象String uidStr = req.getParameter("uid");Integer uid = null;if(uidStr!=null && !"".equals(uidStr)){uid = Integer.parseInt(uidStr);}//2调用serviceAdminMenuService adminMenuService = new AdminMenuServiceImpl();List<AdminMenu> listMenus = adminMenuService.listMenuByUser(uid);//3.根据执行结果反馈ReturnResult returnResult = new ReturnResult();if(listMenus.size()>0){//查询成功returnResult.setCode(ReturnCode.QUERY_SUCCESS.getCode());returnResult.setMsg(ReturnCode.QUERY_SUCCESS.getMsg());returnResult.setReturnData(listMenus);}else{//查询无数据returnResult.setCode(ReturnCode.QUERY_NODATA.getCode());returnResult.setMsg(ReturnCode.QUERY_NODATA.getMsg());}//通过数据流返回jsonresp.setContentType("application/json;charset=utf-8");PrintWriter writer = resp.getWriter();writer.print(JSON.toJSONString(returnResult));writer.close();}
}

http://www.dtcms.com/a/517112.html

相关文章:

  • 潍坊中脉网站建设公司做个网站多少钱一个月
  • PHP+Ajax网站开发典型实例3d建模自学
  • 雪崩阵列中的多域物理串扰模型
  • 注册公司网站模版怎么自己做网页
  • 四网合一的网站个人网站可以做推广吗
  • 做网站是用wordpress还是DW谷歌海外推广怎么做
  • 蛋白表达系统的技术布局与应用
  • C++11 核心新特性:从语法重构到工程化实践
  • C# 上传票据文件 调用Dify的API完成OCR识别
  • 交换机Super密码配置方法(V7
  • 做网站的实施过程足球梦网站建设的基本思路
  • 安阳市住房和城乡建设厅网站华为做网站
  • 欧普建站网页设计与网站建设全攻略
  • 怎么优化自己网站wordpress文章不显示图片
  • 网站公司建立网页设计素材哪里找
  • 网站友情链接交易平台wordpress首页模块排序权限修改
  • 下列哪一项不属于电子商务网站建设网站标题作弊详解
  • 网络故障排查三板斧:路由追踪、端口检查,快速定位网络问题
  • 一站式服务平台官网wordpress后台字体修改
  • Flink状态编程之算子状态(OperatorState)
  • 哔哩哔哩修改版 8.64.0| 去除多项冗余内容和广告,精简流畅好用
  • 如何写网站建设报告3d动画制作流程
  • 网站建设合同表(书)注册万维网网站
  • 数据结构——顺序查找
  • 辽宁网站建设哪里好找深圳网站建设 湖南岚鸿
  • 厦门最早做网站的公司阿里云服务器一年多少钱
  • 电子商城网站开发软件网站维护兼职
  • 秦皇岛做网站的公司怎样有效的做网上宣传
  • 中企动力合作网站佰牛深圳网站建设
  • 义乌购商品详情接口的产业级实现:从批发属性解析到供应链协同的全链路技术方案