本文共 10951 字,大约阅读时间需要 36 分钟。
package com.pudding.jdbc;import org.junit.Test;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class JdbcTemplateDemo1 { //1. 添加操作 @Test public void add() { //创建对象,设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象,设置数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //调用jdbcTemplate对象里面的方法实现操作 //创建sql语句 String sql = "insert into user values(?,?)"; int rows = jdbcTemplate.update(sql, "张三","123"); System.out.println(rows); }}
同增加
package com.pudding.jdbc;import org.junit.Test;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class JdbcTemplateDemo1 { //2. 修改操作 @Test public void update() { //创建对象,设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象,设置数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //调用jdbcTemplate对象里面的方法实现操作 String sql = "update user set password=? where username=?"; int rows = jdbcTemplate.update(sql, "1314","张三"); System.out.println(rows); }}
同增加
package com.pudding.jdbc;import org.junit.Test;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class JdbcTemplateDemo1 { //3. 删除操作 @Test public void delete() { //创建对象,设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象,设置数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //调用jdbcTemplate对象里面的方法实现操作 String sql = "delete from user where username=?"; int rows = jdbcTemplate.update(sql, "张三"); System.out.println(rows); }}
同增加
调用查询的方法
jdbc底层实现代码
package com.pudding.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import org.junit.Test;public class JdbcTemplateDemo2 { //2 jdbc底层实现代码 @Test public void testJDBC() { Connection conn = null; PreparedStatement psmt = null; ResultSet rs = null; //加载驱动 try { Class.forName("com.mysql.cj.jdbc.Driver"); //创建连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/hibernate?serverTimezone=GMT%2B8", "root", "root"); //编写sql语句 String sql = "select * from user where username=?"; //预编译sql psmt = conn.prepareStatement(sql); //设置参数值 psmt.setString(1, "张三"); //执行sql rs = psmt.executeQuery(); //遍历结果集 while(rs.next()) { //得到的返回结果值 String username = rs.getString("username"); String password = rs.getString("password"); //放到user对象里面去 User user = new User(); user.setUsername(username); user.setPassword(password); System.out.println(user); } } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { rs.close(); psmt.close(); conn.close(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } }
package com.pudding.jdbc;public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User [username=" + username + ", password=" + password + "]"; } }
package com.pudding.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import org.junit.Test;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.RowMapper;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class JdbcTemplateDemo2 { //3. 查询返回某个对象 @Test public void testObject() { //创建对象,设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象,设置数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //写sql语句,根据username查询 String sql = "select * from user where username=?"; //调用jdbcTemlate的方法实现 //第二个参数是接口RowMapper,需要自己写类实现接口,自己做数据库封装 User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "Tom"); System.out.println(user); }class MyRowMapper implements RowMapper{ @Override public User mapRow(ResultSet rs, int num) throws SQLException { //1. 从结果集把数据得到 String username = rs.getString("username"); String password = rs.getString("password"); //2.把得到数据封装到对象里面 User user = new User(); user.setUsername(username); user.setPassword(password); return user; } }
package com.pudding.jdbc;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.List;import org.junit.Test;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.jdbc.core.RowMapper;import org.springframework.jdbc.datasource.DriverManagerDataSource;public class JdbcTemplateDemo2 { //4. 查询返回list集合 @Test public void testList() { //创建对象,设置数据库信息 DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver"); dataSource.setUrl("jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true"); dataSource.setUsername("root"); dataSource.setPassword("root"); //创建jdbcTemplate对象,设置数据源 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); //写sql语句 String sql = "select * from user"; //调用jdbcTemplate的方法实现 Listlist = jdbcTemplate.query(sql, new MyRowMapper()); System.out.println(list); }class MyRowMapper implements RowMapper { @Override public User mapRow(ResultSet rs, int num) throws SQLException { //1. 从结果集把数据得到 String username = rs.getString("username"); String password = rs.getString("password"); //2.把得到数据封装到对象里面 User user = new User(); user.setUsername(username); user.setPassword(password); return user; } }
Serializable save(Object entity) :添加操作
void update(Object entity) :修改操作
void delete(Object entity) :删除操作
T get(Class entityClass, Serializable id) :根据id查询
T load(Class entityClass, Serializable id): 根据id查询
List find(String queryString, Object… values) :查询操作的方法
(1)第一个参数是 hql语句 (2)语句参数值
最原始的c3p0连接池
ComboPooledDataSource dataSouse = new ComboPooledDataSource();dataSouse.setDriverClass("com.mysql.cj.jdbc.Driver");dataSouse.setJdbcUrl("jdbc:mysql://localhost:3306/hibernate?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true");dataSouse.setUser("root");dataSouse.setPassword("root");
把代码的实现在配置文件中进行配置出来
需要注意的是url的值在8.0以上必须有useSSL、serverTimezone、allowPublicKeyRetrieval三个属性的设置,否则在某时刻必会出错。
***** 真正管理事务的对象org.springframework.jdbc.datasource.DataSourceTransactionManager 使用 SpringJDBC 或 iBatis 进行持久化数据时使用org.springframework.orm.hibernate3.HibernateTransactionManager 使用Hibernate 版本进行持久化数据时使用
保证同一个事务中
PROPAGATION_REQUIRED 支持当前事务,如果不存在 就新建一个(默认) PROPAGATION_SUPPORTS 支持当前事务,如果不存在,就不使用事务 PROPAGATION_MANDATORY 支持当前事务,如果不存在,抛出异常
保证没有在同一个事务中
PROPAGATION_REQUIRES_NEW 如果有事务存在,挂起当前事务,创建一个新的事务 PROPAGATION_NOT_SUPPORTED 以非事务方式运行,如果有事务存在,挂起当前事务 PROPAGATION_NEVER 以非事务方式运行,如果有事务存在,抛出异常 PROPAGATION_NESTED 如果当前事务存在,则嵌套事务执行
转载地址:http://thxzi.baihongyu.com/