idea 使用笔记
自动导包

archetypeCatalog
internal
idea常用的快捷键
Alt+回车 导入包,自动修正
Ctrl+N 查找类
Ctrl+Shift+N 查找文件
Ctrl+Alt+L 格式化代码
Ctrl+Alt+O 优化导入的类和包
Alt+Insert 生成代码(如get,set方法,构造函数等)
Ctrl+E或者Alt+Shift+C 最近更改的代码
Ctrl+R 替换文本
Ctrl+F 查找文本
Ctrl+Shift+Space 自动补全代码
Ctrl+空格 代码提示
Ctrl+Alt+Space 类名或接口名提示
Ctrl+P 方法参数提示
Ctrl+Shift+Alt+N 查找类中的方法或变量
Alt+Shift+C 对比最近修改的代码
Shift+F6 重构-重命名
Ctrl+Shift+先上键
Ctrl+X 删除行
Ctrl+D 复制行
Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/.../ )
Ctrl+J 自动代码
Ctrl+E 最近打开的文件
Ctrl+H 显示类结构图
Ctrl+Q 显示注释文档
Alt+F1 查找代码所在位置
Alt+1 快速打开或隐藏工程面板
Ctrl+Alt+ left/right 返回至上次浏览的位置
Alt+ left/right 切换代码视图
Alt+ Up/Down 在方法间快速移动定位
Ctrl+Shift+Up/Down 代码向上/下移动。
F2 或Shift+F2 高亮错误或警告快速定位
代码标签输入完成后,按Tab,生成代码。
选中文本,按Ctrl+Shift+F7 ,高亮显示所有该文本,按Esc高亮消失。
Ctrl+W 选中代码,连续按会有其他效果
选中文本,按Alt+F3 ,逐个往下查找相同文本,并高亮显示。
Ctrl+Up/Down 光标跳转到第一行或最后一行下
Ctrl+B 快速打开光标处的类或方法
Intellij IDEA最常用快捷键
1.Ctrl+E,可以显示最近编辑的文件列表
2.Shift+Click可以关闭文件
3.Ctrl+[或]可以跳到大括号的开头结尾
4.Ctrl+Shift+Backspace可以跳转到上次编辑的地方
5.Ctrl+F12,可以显示当前文件的结构
6.Ctrl+F7可以查询当前元素在当前文件中的引用,然后按F3可以选择
7.Ctrl+N,可以快速打开类
8.Ctrl+Shift+N,可以快速打开文件
9.Alt+Q可以看到当前方法的声明
10.Ctrl+W可以选择单词继而语句继而行继而函数
11.Alt+F1可以将正在编辑的元素在各个面板中定位
12.Ctrl+P,可以显示参数信息
13.Ctrl+Shift+Insert可以选择剪贴板内容并插入
14.Alt+Insert可以生成构造器/Getter/Setter等
15.Ctrl+Alt+V 可以引入变量。例如把括号内的SQL赋成一个变量
16.Ctrl+Alt+T可以把代码包在一块内,例如try/catch
17.Alt+Up and Alt+Down可在方法间快速移动
pom 文件
<dependencies> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.2</version> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>RELEASE</version> <scope>compile</scope> </dependency> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> </dependencies>
c3p0-config.xml
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <default-config> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/yangtao</property> <property name="user">root</property> <property name="password">12345678</property> <property name="initialPoolSize">5</property> <property name="maxPoolSize">20</property> </default-config> <named-config name="itheima"> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/yangtao</property> <property name="user">root</property> <property name="password">12345678</property> </named-config> </c3p0-config>
JDBCUtils
package com.s3potest; import java.beans.PropertyVetoException; import java.sql.*; import com.mchange.v2.c3p0.ComboPooledDataSource; public class jdbctool { //从数据源中获取数据库的连接 public static Connection getConnection() throws SQLException { ComboPooledDataSource dataSource = new ComboPooledDataSource(); try { dataSource.setDriverClass("com.mysql.cj.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/yangtao"); dataSource.setUser("root"); dataSource.setPassword("12345678"); } catch (PropertyVetoException e) { e.printStackTrace(); } return dataSource.getConnection(); } //释放资源,将数据库连接还给数据库连接池 public static void closeDB( Connection conn, Statement ps, ResultSet rs) { try { if (rs!=null) { rs.close(); } } catch (Exception e) { e.printStackTrace(); } finally{ try { if (ps!=null) { ps.close(); } } catch (Exception e) { e.printStackTrace(); } finally{ try { if (conn!=null) { conn.close(); } } catch (Exception e) { e.printStackTrace(); } } } } //释放资源,将数据库连接还给数据库连接池 public static void closeDB(Statement ps,Connection conn) { try { if (ps!=null) { ps.close(); } } catch (SQLException e) { e.printStackTrace(); } finally{ try { if (conn!=null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } }
测试
package com.s3potest; import com.mchange.v2.c3p0.ComboPooledDataSource; import org.apache.log4j.BasicConfigurator; import org.junit.jupiter.api.Test; import java.beans.PropertyVetoException; import java.sql.*; import java.util.logging.Level; import java.util.logging.Logger; /** * * @description: TODO * * @param ${tags} * * @return ${return_type} * * @throws * * @author yangtao * * @date $date$ $time$ * */ public class c3p0Test { @Test public void test(){ Logger logger = Logger.getLogger(c3p0Test.class.getName()); // Logger logger1 = Logger.getLogger(c3p0Test.class ); //使用默认的配置信息,不需要写log4j.properties BasicConfigurator.configure(); //设置日志输出级别为info,这将覆盖配置文件中设置的级别 logger.setLevel(Level.INFO); //下面的消息将被输出 logger.info("this is an info"); int a =123; logger.info(a+""); } // @Test public void test2() { Logger logger = Logger.getLogger(c3p0Test.class.getName()); logger.setLevel(Level.INFO); Connection conn=null; Statement ptsmt=null; ResultSet rs=null; try { conn= jdbctool.getConnection(); String sql="insert t_user values (3,\"xianjinqiu\",\"001\");"; ptsmt=conn.createStatement(); ptsmt.execute(sql); logger.info(""+conn); } catch (SQLException e) { e.printStackTrace(); }finally { jdbctool.closeDB(ptsmt,conn); } } @Test public void test3(){ // Connection conn=null; Statement ptsmt=null; ResultSet rs=null; ComboPooledDataSource dataSource = new ComboPooledDataSource(); try { dataSource.setDriverClass("com.mysql.cj.jdbc.Driver"); } catch (PropertyVetoException e) { e.printStackTrace(); } dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/yangtao"); dataSource.setUser("root"); dataSource.setPassword("12345678"); String sql="select * from t_user ;"; // conn=dataSource.getConnection(); try { conn=dataSource.getConnection(); // ptsmt.executeQuery("seclect * from t_user ;"); ptsmt = conn.createStatement(); rs=ptsmt.executeQuery(sql); rs.next(); System.out.println(rs.getString("user_name")); } catch (SQLException e) { e.printStackTrace(); } finally { jdbctool.closeDB(conn,ptsmt,rs); } } @Test public void test4(){ Connection conn=null; Statement ptsmt=null; ResultSet rs=null; try { conn=jdbctool.getConnection(); } catch (SQLException e) { e.printStackTrace(); } String sql="select * from t_user ;"; try { ptsmt = conn.createStatement(); rs=ptsmt.executeQuery(sql); rs.next(); System.out.println(rs.getString("user_name")); } catch (SQLException e) { e.printStackTrace(); } finally { jdbctool.closeDB(conn,ptsmt,rs); } } }
docker start mymysql
CREATE TABLE `t_article` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `title` VARCHAR(80) NOT NULL, `author` VARCHAR(30) NOT NULL, `sort` VARCHAR(30) NOT NULL, `time` DATETIME DEFAULT '2017-09-18 00:00:00', `star` INT(11) DEFAULT '0', `comment` INT(11) DEFAULT '0', `visit` INT(11) DEFAULT '0', `content` TEXT, PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8; CREATE TABLE `t_article_delet` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `title` VARCHAR(50) NOT NULL, `author` VARCHAR(30) NOT NULL, `sort` VARCHAR(30) NOT NULL, `time` DATETIME DEFAULT '2017-09-18 00:00:00', `star` INT(11) DEFAULT '0', `comment` INT(11) DEFAULT '0', `visit` INT(11) DEFAULT '0', `content` TEXT, PRIMARY KEY (`id`) ) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE `t_comment` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `article_id` INT(11) DEFAULT NULL, `nickname` VARCHAR(30) DEFAULT NULL, `content` TEXT, `time` DATETIME DEFAULT '2017-09-18 00:00:00', `star` INT(11) DEFAULT '0', `diss` INT(11) DEFAULT '0', PRIMARY KEY (`id`), KEY `article_id` (`article_id`), CONSTRAINT `article_id` FOREIGN KEY (`article_id`) REFERENCES `t_article` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION ) ENGINE=INNODB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8; CREATE TABLE `t_tag` ( `id` INT(11) DEFAULT NULL, `tag` VARCHAR(30) DEFAULT NULL, KEY `id` (`id`), CONSTRAINT `t_tag_ibfk_1` FOREIGN KEY (`id`) REFERENCES `t_article` (`id`) ON DELETE CASCADE ON UPDATE NO ACTION ) ENGINE=INNODB DEFAULT CHARSET=utf8; CREATE TABLE `t_user` ( `user_id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'primary_key', `user_name` VARCHAR(20) NOT NULL COMMENT 'username', `user_password` VARCHAR(20) NOT NULL COMMENT 'password', PRIMARY KEY (`user_id`) ) ENGINE=INNODB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; CREATE TABLE `t_visitor` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `ip` VARCHAR(50) DEFAULT NULL, `time` VARCHAR(50) DEFAULT NULL, `web_ip` VARCHAR(50) DEFAULT NULL, `host` VARCHAR(50) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=INNODB AUTO_INCREMENT=52 DEFAULT CHARSET=utf8; show tables ; select * from t_article;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具