java连接mysql数据库JDBC

JDBC是客户端操作数据库的方式,首先展示的是java访问mysql数据库的初步实现方法。

1.导入驱动jar包

2.加载和注册驱动

Class.forName(数据驱动实现类);这里用的是com.mysql.cj.jdbc.Driver ​​​​​

Class.forName("com.mysql.cj.jdbc.Driver");

3.连接数据库

String url = "jdbc:mysql://127.0.0.1:3307/java2207?serverTimezone=UTC";
Connection conn =  DriverManager.getConnection(url,"root","password");

 jdbc是协议,mysql是子协议,默认本地是127.0.0.1:3306,java2207指定的是数据库名,最后的是因为版本需要,指定的数据库时间

 这里的DriverManager是用来管理和注册驱动,参数数据库的URL,用户名和密码。获得连接的对象

 4.执行sql语句

通过Statement对象和PreparedStatement对象。后者实现预编译防止sql注入。

以上是初步实现方法。进一步的是引入数据库连接池

 数据库连接池就像是一种容器,用于存放数据库连接就是上面3的Connection。

它的作用主要就是可以反复运用现有的数据库连接。当用户访问完连接对象后会将其归还给数据库连接池,可以有效的减少资源浪费。

数据库连接池常用的有 c3p0、druid、dbcp等,这里采用的是c3p0.

1.需要导入相应的jar包

2.定义配置文件c3p0-config.xml 或 c3p0.properties(名称固定,配置在src目录下)

java连接mysql数据库JDBC_第1张图片

这里采用的是c3p0-config.xml,配置的内容中圈起来的四个参数为必须,其他不写即默认。

ComboPooledDataSource cpds = new ComboPooledDataSource();
Connection conn = cpds.getConnection();

因为配置文件位置固定,所以新建对象无需传参数。

再进一步,可以添加工具类。

java连接mysql数据库JDBC_第2张图片

 这里采用单例模式,只在静态加载时new对象,DataSource服务于后面的内容。

Connection conn = C3P0Utils.getConnection();

使用时仅需一行即可获取连接对象。

再进一步,引用了Spring框架中提供的JdbcTemplate对象,这里的参数就是上面的dataSource。

JdbcTemplate template = new JdbcTemplate(C3P0Utils.getDataSource());

然后通过JdbcTemplate中的query和update方法来实现数据库的操作。

//增
String sql = "insert into account values(null,?,?)";
template.update(sql,"王五",522);

//删
String del = "delete from emp where id = ?";
int count = template.update(del, 1015);
System.out.println(count);

//改
String update = "update emp set salary = 10000 where id = 1001";
int count2 = template.update(update);
System.out.println(count2);

//查
sql = "select * from emp where empno like ?";
List list = template.query(sql,new BeanPropertyRowMapper<>(Emp.class),"%7");
list.forEach(System.out::println);

sql = "select * from emp where empno = ?";
Emp emp = template.queryForObject(sql,new BeanPropertyRowMapper<>(Emp.class),7369);
System.out.println(emp);

上面template中的update中的参数,第一个参数后面的属于可变参数,可自动根据String sql语句中的问号占位符填入。query和queryForObject都可用于查询,参数中的BeanPropertyRowMapper是RowMapper的实现类,对象属性映射,参数class,要求是表的字段和类的属性名一致。

你可能感兴趣的:(java,数据库,mysql)