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目录下)
这里采用的是c3p0-config.xml,配置的内容中圈起来的四个参数为必须,其他不写即默认。
ComboPooledDataSource cpds = new ComboPooledDataSource(); Connection conn = cpds.getConnection();
因为配置文件位置固定,所以新建对象无需传参数。
再进一步,可以添加工具类。
这里采用单例模式,只在静态加载时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 ?"; Listlist = 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,要求是表的字段和类的属性名一致。