一、Java小知识点
1、Aop相关术语中,用于表示切面与程序流程的交叉点的是:pointcut
2、spring的Aop的意思是面向切面编程
3、Mybatis的主配文件:
Mybatis-config.xml
spring:applicationContext.xml
spring mvc : spring mvc-config.xml
4、中间JAR:mybatis-spring-1.3.1.jar
5、为了防止前端传入的中文乱码,只需要在web.xml文件中添加代码:
<init-param> <param-name>encoding</param-name> <param-value>UTF-8<param-value> </init-param>
6、RESTful风格就是把请求参数变成请求路径的一种风格。
7、Spring MVC中的拦截器类似于Servlet中的过滤器,主要用于拦截用户请求并作相应处理。
8、编程式事务管理:是通过编写代码实现的事务管理,包括定义事务的开始,正常执行后的事务提交和异常时的事务回滚。
9、mybatis:mybatis(前身是iBatis),是一个支持普通SQL查询,存储过程以及高级映射的持久层框架,它消除了几乎所有的JDBC代码和参数的手动设置以及对结果集的检索,并使用简单的xml或注解进行配置和原始映射,用以将接口和Java的POJO(普遍Java对象)映射成数据库中的纪录,使得Java开发人员可以使用面向对象的编程思想来操作数据库。
10、准备所需JAR包,整合环境搭建
1)Spring框架所需的JAR包
2)MyBatis框架所需的JAR包
3)MyBatis与Spring整合的中间JAR
4)数据库驱动JAR包
5)数据源所需JAR包
11、配置spring mvc步骤
1)创建项目,引入JAR包
2)配置前端控制器
3)创建Controller类
4)配置spring mvc的配置文件,配置控制器映射信息
5)创建视图(view)页面
6)启动项目,测试应用
12、绑定默认参数类型
HttpServlet Request //通过Request对象获取请求信息 HttpServlet Response //通过response处理相应信息 HttpSession //通过Session对象得到Session中存储的对象 Model/ModelMap //Model是一个接口,ModelMap是一个接口实现,作用是将Model数据填充到request域
二、相关代码
1、更新客户(MyBatis)
MyBatis的更新操作在映射文件中是通过配置<update>元素实现的。如果需要更新用户数据,可以通过如下代码配置来实现。
1 <!--更新客户信息--> 2 <update id="updateCustomer" parameterType="com.itheima.po.Customer"> 3 update t_customer set 4 username=#{username},jobs=#{jobs},phone=#{phone} 5 where id=#{id} 6 </update>
2、ViewResolver(视图解析器)
Spring MVC中的视图解析器负责解析视图,可以通过在配置文件中定义一个ViewResolver来配置视图解析器,其配置示例如下:
1 <!--定义视图解析器--> 2 <bean id="viewResolver" class= 3 "org.springframework.web.servlet.view.InternalResourceViewResolver"> 4 <!--设置前缀--> 5 <property name="prefix" value="/WEB-INF/jsp/" /> 6 <!--设置后缀--> 7 <property name="suffix" value=".jsp" /> 8 </bean>
3、JSON结构
例如:一个person对象包含name、hobby和address对象,其代码表现形式如下:
1 { 2 "name": "zhangsan" 3 "hobby": ["篮球","羽毛球","游泳"] //数组 4 "address":{ 5 "city":"Beijing" 6 "street":"Xisanqi" //对象 7 "postcode":"100096" 8 } 9 }
4、拦截器的定义
public boolearn preHandle
public void postHandle
public void afterCompletion
5、<if元素>
在文件中使用<if>元素编写根据客户姓名和职业组和条件查询客户信息列表的动态SQL语句:
在文件中使用<if>元素的test属性分别对username和jobs进行了非空判断,如果传入的查询条件非空就进行动态SQL组装。
1 <if test="username !=null and username !='' "> 2 and username like concat('%',#{username}, '&') 3 </if> 4 <if test="jobs !=null and jobs !='' "> 5 and jobs= #{jobs} 6 </if>
6、在OrdersMapper.xml文件中使用嵌套查询方式(用inner join改写)
1 <select id="findOrdersWithPorduct2" parameterType="Integer" 2 resultMap="OrdersWithPorduct2"> 3 select o.*,p.id as pid,p.name,p.price 4 from (tb_orders o inner join tb_ordersitem oi on p.id=oi.orders_id) 5 inner join tb_product p on oi.product_id=p.id 6 WHERE oi.orders_id=o.id 7 and oi.product_id=p.id 8 and o.id=#{id} 9 </select>