SpringMVC,Mybati

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

 SpringMVC

  1工作流程:   

 1.1开发流程       

 1.2常用的注解      

2 Mybatis 是什么?  

  2.1   关联关系的配置   

  2.2 mapper.xml配置的常用标签有哪些?   

  2.3Mybatis中的二级缓存默认关闭的           

  2.4 #{...}与${...}传参的区别       

 2.5如何执行批量插入

2.6 Mybatis 的一级、二级缓存


SpringMVC
1.1工作流程:


    ①DispatcherServlet:接受到浏览器端发送的所有请求
    ②HandlerMapper处理器映射器:找到@requestMapping对应值
    ③HandlerAdapter处理器适配器:适配对应的方法调用执行
    ④modelAndView模型视图对象:方法的返回值
    ⑤viewResolver解析模型视图对象,得到view,返回给浏览器用户展示;

   1.1开发流程


    ①导入pom依赖
    ②web.xml中添加核心类配置,DispatcherServlet,指向框架Springmvc.xml的配置文件析
    ③配置Springmvc.xml
    

<!--3) ViewResolver -->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<!-- viewClass需要在pom中引入两个包:standard.jar and jstl.jar -->
			<property name="viewClass"
					  value="org.springframework.web.servlet.view.JstlView"></property>
			<property name="prefix" value="/"/>
			<property name="suffix" value=".jsp"/>
		</bean>

④controller层,正常开发即可
        要通过@controller标记当前类被spring所管理
        写方法:@requestMapping
        方法会有返回值:“bookList” --> /bookList.jsp

1.2常用的注解


    @controller @requestMapping @getMapping @putMapping @deleteMapping @postMapping 若依
    @responseBody-返回json数据    @requestBody-接受json数据    @pathvariable    @requestParam

controllerrequestMappingputMappingdelelteMapping
postMapping若依responseBody返回json数据requestBody接受json数据pathvariable
requesParam

2Mybatis


    是什么?ORM    Object reference Mapping,数据库层面的框架

2.1关联关系的配置


        一对一:association javatype
        一对多:Collection    oftype

2.2mapper.xml配置的常用标签有哪些?


        if/for
         <![CDATA[ ... ]]>    用于解决特殊字符转义的,没有CDATA的话,> < & 等会被当成HTML标签,而不是sql语句的组成部分;

2.3Mybatis中的二级缓存默认关闭的


        二级缓存:Mapper级别的缓存,默认关闭
        一级缓存:session级别的缓存,默认就是开启的;

2.4#{...}与${...}传参的区别


        #传递参数会自带引号
        S不带引号:存在SQL注入的问题,但是也有优点,可以用来做动态列/动态SQL
        上述的不同,也就决定了$存在SQL注入的风险
        UserMapper.xml    前提uid是varchar
    


		UserMapper.xml	前提uid是varchar
		select * from user where uid = #{uid} uid='abc' or uid is not null
		select * from user where uid = ''abc' or uid is not null'
		select * from user where uid = ${uid}	uid='abc' or uid is not null
		select * from user where uid = 'abc' or uid is not null
		
		<select>
		select * from user where uid = #{uid}
		</select>
		
		<select id="execute">
			${executeSQL}
		</select>
		
		<select id="execute">
			select ${fieldName} form ${tableName}
		</select>
	
	UserMapper.execute("select * from book")

 2.5如何执行批量插入

sqlsession sqlsession = sqlsessionfactory.opensession(executortype.batch);
try {
namemapper mapper = sqlsession.getmapper(namemapper.class);
for (string name : names) {
mapper.insertname(name);
}
sqlsession.commit();
}catch(Exception
e){ e.printStackTrace(
);
sqlSession.rollback();
throw e;
}
finally {
sqlsession.close();
}

2.6 Mybatis 的一级、二级缓存

一级缓存作用域是sqlsession级别的,同一个sqlsession中执行相同的sql查询(相同的sql和参数),第一次会去查询数据库并写到缓存中,第二次从一级缓存中取。

一级缓存是基于 PerpetualCache 的 HashMap 本地缓存,默认打开一级缓存。

二级缓存是 mapper 映射级别的缓存,多个 SqlSession 去操作同一个 Mapper 映射的 sql 语句,多个SqlSession 可以共用二级缓存,二级缓存是跨 SqlSession 的。

 


“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值