java快捷笔记

本文汇总了多种开发技巧,包括IDEA快捷键、SQL优化、Linux命令、HTTP响应操作、Cookie管理、下载业务逻辑、MyBatis动态代理实现规范、Spring核心概念及注解使用等关键内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

–>CTRL+I:重写接口的方法
–>CTRL+E:选择IDEA页面

–>submit提交表单 阻止同步提交–>return false;

–>内联表单 需要将table包含在内部

–>ajax中遍历集合两种方法:
jq对象.each(function(index,element){
index:表示遍历元素的索引,默认从0开始;
element:遍历元素的对象;
});
for (var i=1;i<数组.length ;i++ ) {
}

–>全局查询快捷键?
CTRL+shift+f;

–>数据库当前时间函数:
NOW()

–>sql中的数据出现隐式转换时会出现–索引失效–全表扫描?
当int–>String时会出现索引失效,造成全表扫描
当string–>int时不会处出现.
建议:查询数据时,转换为相应格式数据后再查询sql;

–>Linux grep和find的区别?
grep是查找匹配条件的行,find是搜索匹配条件的文件。

–>response应用
操作响应行:协议/版本状态码
状态码: 200 404 500 302 304
APl: response.setStatus(302)
操作响应头: key:value
常用: refresh, location, content-type,content-disposition
定时刷新: response,setHeader(refresh,“4;url”);
重定向: location
设置响应数据类型和编码: content-type
文件下载: content-dispositione
操作响应体:
1、字符数据: getwriteroO.ritn(“aa”);
2、字节数据: getOutputStream();

–>:Cookie 分类:
1、会话级Sll:浏览器关闭后销毁(默认):
2、持久化Cookie:设罝最大存活时间 cookie.setMaxAge( 60S ):

–>下载业务逻辑:两个头+两个流(流拷贝)
【两个头】
1. 设置响应头:Content-Disposition 告诉浏览器以附件的形式来处理文件;
2. 设置响应头: response.setContentType(mimeType) 告诉浏览器下载的文件的类型;
【两个流】
1. 将文件读取到流里边: FileInputStream fin = new FileInputStream(file);
2. 将流写给浏览器:response.getOutputStream().write(arr,0,len);

–>ctrl+shift+t:在接口中使用后,会快速生成单元测试
需要切换为junit4,提前导入依赖

–>Mapper接口的动态代理实现,需要遵循以下规范:
1. 映射文件中的命名空间(名称空间)与Mapper接口的全路径一致
2. 映射文件中的statement的Id与Mapper接口的方法名保持一致
3. 映射文件中的statement的ResultType必须和mapper接口方法的返回类型一致(即使不采用动态代理,也要一致)
4. 映射文件中的statement的parameterType必须和mapper接口方法的参数类型一致(不一定,该参数可省略)

–>sqlSession.getMapper(UserMapper.class)方法会通过动态代理生成一个代理的实现类

–>思考:接口中是否可以有重载的方法?

注意:由于使用的是接口方式进行查询(动态代理),而其它要求映射文件中的statement的Id与Mapper接口的方法名保持一致。
而statement的id由于是唯一的不能重复,因此也就意味着接口中的方法也不能重名,那也就是说不能有重载的方法了。

–>通过properties引入外部资源文件之后,就可以通过${xxx}的方式使用资源文件里的参数了,不可使用#{xxx}。

–>mybatis中 insert:编写插入语句
id:插入语句的唯一标识
parameterType:插入语句的参数类型,可以省略。
useGeneratedKeys:开启主键自增回显,将自增长的主键值回显到形参中(即封装到User对象中)
keyColumn:数据库中主键的字段名称
keyProperty:pojo中主键对应的属性

–>※面试题(#、KaTeX parse error: Expected 'EOF', got '#' at position 35: …中,参数传递有2种方式,一种是#̲{}另一种是{},两者有着很大的区别:
#{}实现的是sql语句的预处理参数,之后执行sql中用?号代替,使用时不需要关注数据类型, mybatis自动实现数据类型的转换。并且可以防止SQL注入。
$0实现是sql语句的直接拼接,不做数据类型转换,需要自行判断数据类型。不能防止SQL注入
是不是$0就没用了呢?不是的,有些情況下就必须使用$0,举个例子:
在分表存储的情況下,我们从哪张表查询是不确定的,也就是说sql语句不能写死,表名是动态的,查询条件是固定的,这样:SELECT* FROM ${tableName} WHERE id = #{id}
总结:
#{}占位符,用于参数传递。
${}用于sql拼接。

–>Spring的核心
IoC(Inversion of Control 控制反转): 将对象创建权利交给Spring工厂进行管理。
AOP(Aspect Oriented Programming 面向切面编程),基于动态代理的功能增强方式。

–>自定义的类可以使用注解,否则,只能在容器中注册

–>spring的注解@
@Component:相当于在xml中配置了一个bean,除了表现层,业务层,持久层之外的都是用这个配置bean
@Controller:用于表现层的衍生注解
@Service:用于业务层的衍生注解
@Repository:用于持久层的衍生注解
注:前四个作用一样

相当于xml中set注入或p标签注入或构造器注入
@AutoWired:自动按照类型注入.当使用注解注入属性时,set方法可以省略只能注入其他bean类型;
@Qualifired(value=“xxx”):value可以不写在自动按照类型注入基础之上,再按照bean的id注入;
给字段注入时不能独自使用,必须和@Qualifired一起使用;
单独使用时:在方法的参数位置,其ioc容器中找有没有bean符合参数要求,找到就赋值
@Resource(name=“xxx”):和上述两个结合效果一样,但是不支持jdk1.9版本,故舍弃
@Value(value=“xxx”):注入基本类型和String类型的数据;value用于指定值;

@Configuration:声明一个配置类
@ComponentScan:配置注解扫描的包
@Import(value={jdbcConfig.class}):引入其他类到配置类中
@PropertySource:加载外部资源文件
@Bean:将方法返回的对象装配到容器中
new AnnotationConfigApplicationContext(配置类.class):获取容器

@RunWith(value = SpringJUnit4ClassRunner.class):整合spring和junit,替换新的运行器使其可以初始化spring容器
@ContextConfiguration:value属性:配置xml文件路径;class属性:配置配置类;
@PostContruct:初始化
@PreDestory:销毁
@Scope:单双例

–>注解使用:2步
开启注解扫描–>在类上使用注解

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值