-
@JDBC---替代品之myBatis
MyBatis:支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
特点:
1:易于上手和掌握。
2:SQL卸载XML里,便于统一管理和优化。
3:解除SQL与程序代码的耦合。
4:提供映射标签,支持对象与数据库的orm字段关系映射。
5:提供对象关系映射标签,支持对象关系组建维护。
6:提供XML标签,支持编写动态SQL。查看全部 -
@JDBC---替代品之DBUtils
核心接口:
1.DbUtils:提供如关闭连接,装载JDBC驱动程序等常规工作的工具类;
2.QueryRunner:该类简化了SQL查询,它常与ResultSetHandler组合在一起使用
3.ResultSetHandler:执行处理一个java.sql.ResultSet,将数据转变并处理为任何一种形式,这样有益于其应用而且使用起来更容易。实例1:
final String SQL = "INSERT INTO test_1 VALUES(?,?)"; int result = new QuertRunner().update(conn,SQL,new Object[]{"John","123"});
实例2:
final String SQL = "SELECT * FROM test_1"; Test_1Bean testBean = new QuertRunner().quert(conn,SQL,new HeanHandler(Test_lBean.class));
查看全部 -
@JDBC---连接池dbcp与c3p0总结
jar包、配置文件、获取连接。
dbcp是Spring推荐,c3p0是Hibernate推荐。
查看全部 -
@JDBC---数据库连接池之C3P0
1.导入相关C3P0的jar包
c3p0-0.9.2-pre4.jar
mchange-commons-java-0.2.2.jar
2.在项目根目录下添加配置文件c3p0.propertiesc3p0.driverClassName="com.mysql.jdnc.Driver" c3p0.url="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8" c3p0.username="root" c3p0.password="root"
3.编写类文件,创建连接池
public class C3P0Util{ private static ComboPooledDataSource ds = new ComboPooledDataSource(); public static Connection getConnection(){ try{ return ds.getConnection(); }catch(SQLException e){ throw new RuntimeException(e); } } }
查看全部 -
@JDBC---数据库连接池之dbcp
1.导入相关dbcp的jar包
commons-dpcp2-2.1.1.jar
commons-pool2-2.4.2.jar
commons-logging-1.2.jar2.在项目根目录下添加配置文件dbcp.properties
主要配置信息driverClassName="com.mysql.jdnc.Driver" url="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8" username="root" password="root"
3.实现dbcp连接池
public class DBCPUtil{ //数据源,static private static DataSource DS; //配置文件位置 private static final String configFile = "/dbcp.properties"; //默认构造函数 public DBCPUtil(){ initDbcp(); } //初始化DS private static void initDbcp(){ Properties pops = new Properties(); try{ //以流形式读取配置文件 props.load(Object.class.getResourceAsStream(configFile)); //创建数据源 DS = BasicDataSourceFactory.createDataSource(pops); }catch(Exception e){ e.printStackTrace(); } } //连接数据库 public Connection getConn(){ Connection con=null; if(DS!=null){ try{ //获取连接 con=DS.getConnection(); }catch(Exception e){ e.printStackTrace(System.err); } try{ //设置成手动提交事务 con.setAutoCommit(false); }catch(SQLException e){ e.printStackTrace(System.err); } } return con; } }
查看全部 -
@JDBC---实现事务管理
事务特点:
1.原子性:事务是一个完整的操作。
2.一致性:当事务完成时,数据必须处于一致的状态。
3.隔离性:对数据进行修改的所有并发事务必须是隔离的。【不可以同时操作一条数据】
4.永久性:事务完成后吗,数据库的修改必须是永久保持的。事务管理:
1.我们通过提交commit()或是回退rollback()来管理事务的操作。
2.事务操作默认是自动提交。
3.可以通过setAutoCommit(false)来禁止自动提交。调用过程:
1.conn.setAutoCommit(false);//jdbc默认自动提交;
2.try...catch语句包含执行业务逻辑,完成后conn.commit();
3.在catch中,加上回滚语句:conn.rollback();查看全部 -
@JDBC---带输出参数的存储过程
存储过程的代码:
CREATE PROCEDURE `sp_select_count`(OUT count INT(10)) BEGIN SELECT COUNT(*) INTO count FROM user1; END
调用过程:
//1.获取连接 Connection c = DBHelper.getConnection(); //2.获得CallableStatement CallableStatement cs = c.PrepareCall("call sp_select_count(?)"); cs.registerOutParameter(1,Types.INTEGER); //3.执行存储过程 cs.execute(); //4.处理结果集 cs.getInt(1);
查看全部 -
@JDBC---带输入参数的存储过程
存储过程的代码:
CREATE PROCEDURE `sp_select_nofilter`(IN sp_name VARCHAR(20)) BEGIN IF sp_name IS NULL OR sp_name = '' THEN SELECT * FROM user1; ELSE IF LENGTH(sp_name)=11 AND SUBSTRING(sp_name,1,1)=1 THEN SELECT * FROM user1 WHERE user_naem=sp_name; ELSE SELECT *FROM user1 WHERE user_name LIKE CONCAT('%',sp_name,'%'); END IF; END IF; END
调用过程:
//1.获取连接 Connection c = DBHelper.getConnection(); //2.获得CallableStatement CallableStatement cs = c.PrepareCall("call sp_select_filter(?)"); cs.setString(1,sp_name); //3.执行存储过程 cs.execute(); //4.处理结果集 ResultSet rs = cs.getResultSet(); //5.遍历结果集 while(rs.next()){ rs.getString(...); ... }
查看全部 -
@JDBC---调用无参存储过程
存储过程的代码:
CREATE PROCEDURE db_name.sp_name() BEGIN select * FROM table_name; END;
调用过程:
//1.获取连接 Connection c = DBHelper.getConnection(); //2.获得CallableStatement CallableStatement cs = c.PrepareCall("call sp_select()"); //3.执行存储过程 cs.execute(); //4.处理结果集 ResultSet rs = cs.getResultSet(); //5.遍历结果集 while(rs.next()){ rs.getString(...); ... }
查看全部 -
dbcp c3p0
查看全部 -
String a = null;的意思是让代码出错,导致数据写入不完整。如果没有进行事务处理,则会导致数据丢失或异常,如果进行了事务处理,则会对执行的操作进行回滚(还原撤销读写操作)。
事务处理的步骤:
一、关闭自动提交:conn.setAutoCommit(false);
二、手动提交事务:conn.commit();
三、进行事务回滚:conn.rollback;//放置在try-catch语句中查看全部 -
JDBC对事物管理的支持
查看全部 -
事物的特点!
查看全部 -
学习记录:dbcp和c3p0的区别
查看全部 -
dpcp 相关jar 包
commons-dpcp2-2.1.1.jar
commons-pool2-2.4.2.jar
commons-logging
查看全部
举报