查找:ctrl+F
快速显示文档和信息:ctrl+Q
抽取方法:ctrl+alt+M
修改:shift+F6
导入:ctrl+shift+alt+S
快捷键英文说明中文说明Ctrl + SpaceBasic code completion (the name of any class, method or variable)补全代码,由于经常与操作系统的输入法的切换冲突,所以实际很少用。一般直接在 idea 中开启输入自动补全机制。Ctrl + Shift + SpaceSmart code completion (filters the list of methods and variables by expected type在列出的可选项中只显示出你所输入的关键字最相关的信息。(常用)Ctrl + Shift + EnterComplete statement代码补全后,自动在代码末尾添加分号结束符Ctrl + PParameter info (within method call arguments)在某个方法中,调用该按键后,会展示出这个方法的调用参数列表信息。Ctrl + QQuick documentation lookup展示某个类或者方法的 API 说明文档Ctrl + mouseover code Brief Info跳进到某个类或者方法源代码中进行查看。(常用)Alt + InsertGenerate code… (Getters, Setters, Constructors, hashCode/equals, toString)自动生成某个类的 Getters, Setters, Constructors, hashCode/equals, toString 等代码。(常用)Ctrl + OOverride methods展示该类中所有覆盖或者实现的方法列表,注意这里是字母小写的 O!Ctrl + Alt + TSurround with… (if..else,try..catch, for, synchronized, etc.)自动生成具有环绕性质的代码,比如:if..else,try..catch, for, synchronized 等等,使用前要先选择好需要环绕的代码块。(常用)Ctrl + /Comment/uncomment with line comment对单行代码,添加或删除注释。分为两种情况:如果只是光标停留在某行,那么连续使用该快捷键,会不断注释掉下一行的代码;如果选定了某行代码(选定了某行代码一部分也算这种情况),那么连续使用该快捷键,会在添加或删除该行注释之间来回切换。(常用)Ctrl + Shift + /Comment/uncomment with block comment对代码块,添加或删除注释。它与 Ctrl + / 的区别是,它只会在代码块的开头与结尾添加注释符号!(常用)Ctrl + WSelect successively increasing code blocks选中当前光标所在的代码块,多次触发,代码块会逐级变大。(常用)Ctrl + Shift + WDecrease current selection to previous state是 Ctrl + W 的反向操作,多次触发,代码块会逐级变小,最小变为光标。Alt + QContext info展示包含当前光标所在代码的父节点信息,比如在 java 方法中调用,就会展示方法签名信息。Alt + EnterShow intention actions and quick-fixes展示当前当前光标所在代码,可以变化的扩展操作Ctrl + Alt + LReformat code格式化代码 (常用)Ctrl + Alt + OOptimize imports去除没有实际用到的包,这在 java 类中特别有用。(常用)Ctrl + Alt + IAuto-indent line(s)按照缩进的设定,自动缩进所选择的代码段。Tab / Shift + TabIndent/unindent selected lines缩进或者不缩进一次所选择的代码段。(常用)Ctrl + X 或 Shift DeleteCut current line or selected block to clipboard剪切当前代码。 (常用)Ctrl + C 或 Ctrl + InsertCopy current line or selected block to clipboard拷贝当前代码。 (常用)Ctrl + V 或 Shift + InsertPaste from clipboard粘贴之前剪切或拷贝的代码。(常用)Ctrl + Shift + VPaste from recent buffers…从之前的剪切或拷贝的代码历史记录中,选择现在需要粘贴的内容。(常用)Ctrl + DDuplicate current line or selected block复制当前选中的代码。(常用)Ctrl + YDelete line at caret删除当前光标所在的代码行。(常用)Ctrl + Shift + JSmart line join把下一行的代码接续到当前的代码行。Ctrl + EnterSmart line split当前代码行与下一行代码之间插入一个空行,原来所在的光标不变。(常用)Shift + EnterStart new line当前代码行与下一行代码之间插入一个空行,原来光标现在处于新加的空行上。(常用)Ctrl + Shift + UToggle case for word at caret or selected block所选择的内容进行大小写转换。。(常用)Ctrl + Shift + ]/[Select till code block end/start从当前光标所在位置开始,一直选择到当前光标所在代码段起始或者结束位置。Ctrl + DeleteDelete to word end删除从当前光标所在位置开始,直到这个单词的结尾的内容。Ctrl + NumPad(+/-)Expand/collapse code block展开或收缩代码段。 (常用)Ctrl + Shift + NumPad(+)Expand all展开所有代码段。Ctrl + Shift + NumPad(-)Collapse all收缩所有代码段。Ctrl + F4Close active editor tab关闭当前标签页。Shift + F6 修改名字。(常用)Servlet的ResultInfo的固定步骤:
ResultInfo info=null; try{ info=new ResultInfo(true,路径,""); }catch(Exception e){ e.printStackTrace(); info = new ResultInfo(false, "系统忙,请稍候"); } //把集合转换成json ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(info); response.getWriter().print(json);首先搞明白观念:你action返回的值 ajax是得不到的。ajax能得到的是你action里往前台输出的内容,也就是action往输出流里输出的内容,而不是返回值。如果lz想要得到action返回给ajax的内容,那么在action里要得到输出流,然后把要给ajax的东西给输出流。这样ajax端才能得到你输出的内容。
启动服务:net start mysql
关闭服务:net stop mysql
登录MySql:mysql -u用户名 -p密码
在学习使用sqlyog的时候,想要多行注释SQL语句,就去网上找了相关的快捷键,与大家分享,网上有很多!
Ctrl+M 创建一个新的连接 Ctrl+N 使用当前设置新建连接 Ctrl+F4 断开当前连接
对象浏览器 F5 刷新对象浏览器(默认) Ctrl+B 设置焦点于对象浏览器
SQL 窗口 Ctrl+T 新建查询编辑器 Ctrl+E 设置焦点于 SQL 窗口 Ctrl+Y 重做 Ctrl+Z 撤销 Ctrl+X 剪切 Ctrl+V 粘贴 Ctrl+H 替换 Ctrl+G 转到 Ctrl+O 在 SQL 窗口打开一个 SQL 文档 Ctrl+Shift+U 使选择内容大写 Ctrl+Shift+L 使选择内容小写 Ctrl+Shift+C 注释 SQL 窗口选择内容 Ctrl+Shift+R 从选择内容删除注释 Ctrl+Shift+T 插入模板 Ctrl+Enter 列出所有的标签 Ctrl+Space 列出匹配的标签
执行查询 F8 执行当前查询并编辑结果集 F9 执行当前查询(默认) Ctrl+F9 执行选定查询(默认) Shift+F9 执行全部查询(默认)
粘贴 SQL 语句 Alt+Shift+I 插入语句 Alt+Shift+U 更新语句 Alt+Shift+D 删除语句 Alt+Shift+S 选择语句
结果 F11 插入更新对话框 Ctrl+R 设置焦点于结果面板中的活动标签 Ctrl+L 切换结果窗口/表数据以表格/文本方式显示 Ctrl+Alt+C 以 CSV, SQL, Excel 等导出表数据 Ctrl+Alt+E 以 SQL 转储文件备份数据 Ctrl+Shift+M 从 CSV 导入数据 Ctrl+Shift+E 导出结果集 Alt+1…n 在结果窗口中选择第n个标签
显示/隐藏 Ctrl+1 显示/隐藏 对象浏览器 Ctrl+2 显示/隐藏 结果面板 Ctrl+3 显示/隐藏 查询窗口
数据库/数据表 Ctrl+D 创建数据库 F6 更改 数据库/数据表的结构/索引/视图/存储过程/函数/触发器/事件 F2 重命名 数据表/视图/触发器/事件 Shift+Del 截断 数据库/数据表 F7 管理索引窗口 F10 关联/外键 Ctrl+Alt+R 重新排序字段 Ctrl+Alt+T 数据表诊断 Ctrl+Alt+F 刷新对话框 Ctrl+Shift+Alt+S 以 HTML 格式创建数据库架构 Ctrl+Shift+Q 从 SQL 转储文件恢复数据库
增强工具 Ctrl+W 数据库同步向导 Ctrl+Q 架构同步工具 Ctrl+Alt+O 数据迁移工具包 Ctrl+Alt+N 通知服务向导 Ctrl+Alt+S 计划备份 Ctrl+K 查询创建器 Ctrl+Alt+D 架构设计器
用户管理 Ctrl+U 添加用户 Ctrl+Alt+U 编辑用户 Ctrl+Shift+W 管理用户权限
个人文件夹 Ctrl+Shift+F 添加当前 SQL 语句到个人文件夹
其它 F1 帮助 F12 快捷键窗口 Ctrl+C 复制 Ctrl+A 全选 Ctrl+F/F3 查找 (SQL 窗口/以文本方式显示的结果窗口和表数据) Ctrl+S 保存 Ctrl+PgUp 切换到上一标签 Ctrl+PgDown 切换到下一标签 DEL 删除选定 Alt+L 关闭标签 Alt+F4 退出程序
-- 1.创建database create database 数据库名; -- 2.查看database show databases; show create database 数据库名; -- 3.修改database alter database 数据库名 character set 字符集 -- 4. 删除database drop database 数据库名; -- 5. 使用database use 数据库名; select database();
-- 1. 创建table create table 表名称( 字段名 类型 [约束], ... 字段名 类型 [约束] ); -- 2. 查看table show tables; show create table 表名称; desc 表名称; -- 查看表结构 -- 3. 删除table drop table 表名称; -- 4. 修改table -- 4.1 重命名表 rename table 表名称 to 新名称; -- 4.2 添加字段 alter table 表名称 add 字段名 类型 [约束]; -- 4.3 修改字段类型 alter table 表名称 modify 字段名 新类型 [约束]; -- 4.4 修改字段名称 alter table 表名称 change 字段名 新字段名 类型 [约束]; -- 4.5 删除字符 alter table 表名称 drop 字段名;
-- 1. 插入数据 insert into 表名称 (字段1, 字段2,...) values (值1,值2,...); -- 2. 修改数据 update 表名称 set 字段1=值1, 字段2=值2,... where 条件; -- 3. 删除数据 delete from 表名称 where 条件;
-- 1.简单查询 select * from 表名称; select 字段1,字段2,... from 表名称; select ifnull(字段,默认值) from 表名称; select 字段1+字段2, 字段3+100,... from 表名称; select 字段1 as 别名1, 字段2 别名2 from 表名称; -- 2.条件查询:>,<,>=,<=,=,<>,like, between...and..., in(), and, or, not select * from emp where salary > 5000; select * from emp where ename like '张%'; -- %表示任意个任意字符; _表示一个任意字符 select * from emp where salary between 2000 and 10000; select * from emp where dept_id in (10, 30); -- 3.排序查询:order by 排序字段 排序规则 desc降序,asc升序 select * from emp order by age desc; -- 4.聚合函数:聚合函数会忽略null值 select count(*) from emp; select sum(salary) from emp; select avg(salary) from emp; select max(salary) from emp; select min(salary) from emp; -- 5.分组查询:group by 分组字段 having 分组后过滤条件 select dept_id, count(*) from emp group by dept_id having count(*) > 10; -- 6.分页查询:limit 起始索引, 查询数量 select * from emp limit 0, 5;
-- 1.内连接查询:查询表之间必定有关联的数据 select * from emp e, dept d where e.dept_id = d.id; select * from emp e inner join dept d on e.dept_id = d.id; -- 2.外连接查询:查询一张表的全部数据,及另外一张表的关联数据 select * from emp e left join dept d on e.dept_id = d.id; select * from emp e right join dept d on e.dept_id = d.id; -- 3.子查询:是查询技巧没有固定语法,是查询嵌套 select * from emp where salary = (select max(salary) from emp); select * from dept where id in (select dept_id from emp where salary > 10000); select * from dept d, (select * from emp where salary > 10000) t where d.id = t.dept_id;
-- 1. 创建用户 create user 'tom'@'%' identified by 'tom'; -- 2. 用户授权 grant all on *.* to 'tom'@'%'; -- 3. 查看权限 show grants for 'tom'@'%'; -- 4. 取消授权 revoke delete on *.* from 'tom'@'%'; -- 5. 删除用户 drop user 'tom'@'%'; -- 6. 修改密码 set password for 'tom'@'%' = password('1234');
-- 1. 开启事务 start transaction; -- 或者 set autocommit = 0; -- 2. 执行多条DML语句 -- ...... -- 3. 关闭事务:提交事务 commit; -- 3. 关闭事务:回滚事务 rollback;
//1.注册驱动 Class.forName("com.mysql.jdbc.Driver"); //2.获取连接 Connection conn = DriverManager.getConnection("url","username","password"); //3.创建SQL执行平台 PreparedStatement pstmt = conn.prepareStatement("使用?处理过的sql语句"); pstmt.setXXX(参数序号, 参数值); //4.执行SQL语句 executeUpdate(), execute() ResultSet rs = pstmt.executeQuery(); //5.处理结果 while(rs.next()){ XXX value = rs.getXXX("字段名称"); } //6.释放资源 rs.close(); pstmt.close(); conn.close();
ComboPooledDataSource dataSource = new ComboPooledDataSource(); Connection conn = dataSource.getConnectoin(); //使用conn操作数据库 conn.close();
DataSource dataSource = DruidDataSourceFactory.createDataSource(Properties对象); Connection conn = dataSource.getConnection(); //使用conn操作数据库 conn.close();
JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtils.getDataSource()); //使用JdbcTemplate的不同方法,执行不同SQL语句
public <T> List<T> query(String sql, RowMapper<T> rowMapper) 执行查询语句,返回一个List集合,List中存放的是RowMapper指定类型的数据
案例实现
// query使用BeanPropertyRowMapper做映射返回对象 public static void test07() throws Exception { JdbcTemplate jdbcTemplate = new JdbcTemplate(JdbcUtils.getDataSource()); // 查询数据的SQL语句 String sql = "SELECT * FROM product;"; List<Product> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<> (Product.class)); for (Product product : list) { System.out.println(product); } }
//1. 查询一个值,比如:查询表里的数量Integer value = jdbcTemplate.queryForObject("sql", Integer.class, params); //2. 查询多条数据,得到JavaBean的集合List<JavaBean> list = jdbcTemplate.query("sql",new BeanPropertyRowMapper<>(JavaBean类名.class), params);//3. 查询一条数据,得到一个JavaBean对象 JavaBean obj = jdbcTemplate.queryForObject("sql",new BeanPropertyRowMapper<>(JavaBean类名.class),params);
eval(string):把字符串作为js代码执行一次,把json格式的字符串转换成json对象
var str = "{....}"; var jsonObj = eval("(" + str + ")")
location.href = "网址"
location.reload()刷新当前页
@WebServlet(urlPatterns="/demo") public class DemoServlet extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response){ System.out.println("功能代码"); } public void doPost(HttpServletRequest request, HttpServletResponse response){ this.doGet(request, response); } }
response.setContentType("text/html;charset=utf-8"); response.getWriter().print("会显示到浏览器页面上的内容");
ServletOutputStream os = response.getOutputStream();
response.sendRedirect("/项目路径/资源路径");
request.setCharacterEncoding("utf-8");
request.getRequestDispatcher("/资源路径").forward(request, response);
for(var i=0;i<10;i++){ alert(i); } for(var item of items){ }
$.each(被循环遍历对象, function(index, element){ index:索引 element:当前元素,可以使用this代替 }); jQuery对象.each(function(index,element){//循环jQuery对象自己 index:索引 element:当前元素,可以使用this代替 });
表单jQuery对象.validate({ submitHandler:function(form){ //表单校验通过之后,执行的函数。form:校验的那个表单 }, rules:{ 表单项name:{ 规则:参数值, ..., 规则:参数值 } }, messages:{ 表单项name:{ 规则:提示信息, ..., 规则:提示信息 } } });
$.validator.addMethod("规则名称",function(value, element, params){ value:用户输入的值,要校验的值 element:用户输入的那个表单项 params:使用规则时,配置的规则参数 如果校验通过,就返回true;否则返回false },"默认提示信息");
public void search(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ResultInfo info = null; try { //1.接收参数 String cid = request.getParameter("cid"); String rname = request.getParameter("rname"); int pageNumber = 1; int pageSize = 8; String pageNumberStr = request.getParameter("pageNumber"); if (pageNumberStr != null && !"".equals(pageNumberStr)) { pageNumber = Integer.parseInt(pageNumberStr); }
//2.封装实体:略 //3.完成功能 PageBean<Route> pageBean = routeService.search(cid,rname, pageNumber,pageSize);
//4.处理结果 info = new ResultInfo(true, pageBean); } catch (Exception e) { e.printStackTrace(); info = new ResultInfo(false, "系统忙,请稍候"); }
ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(info); response.getWriter().print(json); }
JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(50); config.setMaxIdle(5); JedisPool pool= new JedisPool(config, "ip", 端口); Jedis jedis = pool.getResource(); 使用jedis操作数据库 jedis.close()
在开发中有时需要将数据库中的数据显示到页面中,数据中的数据又比较多,使用一页是显示不了的。此时需要在数据库中分页查询,然后分页显示在页面中。如果使用一个通用的分页工具类,会比较方便。只需在创建该类时传入每页显示的行数,总行数(数据库中的数据总行数),以及当前页码。就可以求出总页数,并且对传入的页码数进行判断。
在上图只需要关注步骤和其中一些方法的作用即可。至于方法以及参数,不需要太过深究。结果都是通过用户层传过来的数据,调用dao层的方法来实现数据访的,最后将数据返还给用户。根据自己的需求而定。