自写笔记
1,在dao层的sql语句的位置
关于xxMapper或者xxDao.xml文件
其实两种文件格式都行,写与类同名的dao.xml文件或直接写注解在接口上
1)写xxDao.xml文件
2)在方法名字上面注解方式
2,关于resultMap的使用
在查询所有信息返回的结果为集合类型,所以需要配置依次将每一个数据库的字段和实体类的属性名相对应
主键为id,result为单个属性,跟在方法上写注解是一样的
<resultMap id="department" type="Department">
<id property="sn" column="sn" javaType="String"/>
<result property="name" column="name" javaType="String"/>
<result property="address" column="address" javaType="String"/>
</resultMap>
<select id="select" parameterType="String" resultMap="department">
select * from department where sn=#{sn}
</select>
3,关于部署后启动在地址栏输入 地址url的问题
在idea 的Tomcat配置那个界面是可以设置的 ,因为一般你没有设置界面,
所以只显示localhost: 8081/user/find
所以你以为不要写项目的名字其实是在这里设置了
这样设置了后,才可以写相对应的项目名字或者你指定的url路径问题
4,关于在controller层参数是Map类型
里面讲解是这样的,to_add是为了去跳转打开添加的界面,add是添加的方法
在to_add加入map参数或者你加实体类Department department也行,是为了在jsp页面上使用
专门属于spring mvc的form 标签和专门的拦截器;
在to_add不使用spring mvc的form标签,参数就可以不用写了
两者只能其中一个,上面的那个就是使用了spring mvc的标签,modelAttribute对应的是map的key值,还要对于add方法的参数封装的对象名字(Department department)
跟原来的黑马视频相比,原来的是去添加的界面黑马是用jsp给替代了这个方法,两者都要掌握
5,关于查询关联其他表的信息
在实际操作中,一般不会只有单表的查询,比如在这个例子中,有个员工表和部门表,要查询员工的信息,还要关联到员工的部门编号和部门的姓名
在EmployeeDao.xml中
<resultMap id="employee" type="Employee">
<id property="sn" column="sn" javaType="String"/>
<result property="password" column="password" javaType="String"/>
<result property="name" column="name" javaType="String"/>
<result property="departmentSn" column="department_sn" javaType="String"/>
<result property="post" column="post" javaType="String"/>
<!--写下面这个是你 不止查你employee这张表的信息,还要查出关联外键的部门信息-->
<association property="department" column="department_sn" javaType="Department" >
<id property="sn" column="dsn" javaType="String"/>
<result property="name" column="dname" javaType="String"/>
</association>
</resultMap>
//在这里sql语句中,使用的左连接,因为直接连接会存在冗余数据,左连接的效率更高
//起别名的方法 d.sn dsn
<select id="select" parameterType="String" resultMap="employee">
select e.*,d.sn dsn,d.name dname from employee e left join department d on d.sn=e.department_sn
where e.sn=#{sn}
</select>
6,关于登录信息
判断有没有登录需要根据session来判断
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
String url = httpServletRequest.getRequestURI();
if(url.toLowerCase().indexOf("login")>=0){
return true;
}
<!--判断如果不为空->
HttpSession session = httpServletRequest.getSession();
if(session.getAttribute("employee")!=null){
return true;
}
/、如果为空,跳转到重新登录
httpServletResponse.sendRedirect("/to_login");
return false;
}