idea 使用笔记

自动导包

![image-20191031121142761](/Users/yangtao/Library/Application Support/typora-user-images/image-20191031121142761.png)

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;
posted @   牵我狗  阅读(89)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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工具
点击右上角即可分享
微信分享提示