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();} }