控制层 调用 服务层 调 dao层
框架搭建后 在 controller(控制层) 调用service 接口中的service实现类,在service实现类中调用dao接口 在到接口调用 mapper里的方法 id为方法名
@Controller //标记当前类为控制层的类 @Service 声明服务层的类 @RequestMapping("/UserController") //映射地址(这个类的名,可以自己设置)在前端表单提交时调用 @Autowired //创建一个对象 @Resource 自动注入
@Param 给参数命名 @ResponseBody // 返回的是一个字符串而不是跳转业面
@RestController //Controller+ResponseBody(控制层+返回数据而不是跳转页面)
调用方式:1. 直接通过传入的name
public String checkUser(String username,String password){}
2.通过HttpServletRequest对象 在对HttpServletRequest对象调用getParameter方法 获得
public String checkUser(HttpServletRequest request){
String username=request.getParameter("username"); String password=request.getParameter("password");
}
3.使用类来接收
public ModelAndView checkUser(User user ){
String username=user.getUsername(); String password=user.getPassword();
}
跳转方式:1.return "html_name"
2.
// 返回值为 ModelAndView
public ModelAndView checkUser(User user, ModelAndView mv ){
/html 和 .html 为前后缀
// 请求转发 // mv.setViewName("forward:/html/html_name.html"); 请求转发只有一次请求所以可以实现request域对象中的数据共享 请求转发url地址栏不变 // 重定向 mv.setViewName("redirect:/html/html_name.html");
而重定向是多次请求、多次响应response对象调用方法
请求转发url地址栏不变
}
xml:
引用
<!-- ${username} 不会自带引号 根据实际情况增加 且在接口中的@Param一定要被定义 变量--> <!-- username= #{username,jdbcType=VARCHAR} 自带引号 变量-->
封装:
<!-- 返回的字段 封装--> <!-- 实体类的名字 返回结果--> <!-- 由一个id和多个result 组成 一般id对应主键--> <resultMap id="BaseResultMap" type="com.hzh.entity.User"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="username" jdbcType="VARCHAR" property="username" /> <result column="password" jdbcType="VARCHAR" property="password" /> </resultMap>
<!-- 把要查询的字段进行封装--> <sql id="Base_Column_List"> id, username, password </sql>
<!-- 链接的mapper--> <mapper namespace="com.hzh.mapper.UserMapper">
-- 前面部分 后面部分 ,分割 <trim prefix="(" suffix=")" suffixOverrides=","> -- 动态拼接 <if test="id != null"> id, </if>
</trim>
include 有执行 没有不执行