南宁Java培训
达内南宁JAVA中心

13471155827
qq:269520999

热门课程

JAVA常见数据库操作API

  • 时间:2017-12-21 15:27
  • 发布: hello_world
  • 来源:先知安全技术社区

JDBC常用API

DriverManager:用于管理JDBC驱动的服务类。主要功能是获取Connection对象

public static Connection getConnection(String url, String user, String password) throws SQLException    //该方法获得url对应数据库的连接

Connection :代表数据库连接对象。每一个Connection代表一个物理连接会话

Statement createStatement() throws SQLException;        //该方法返回一个Statement对象    PreparedStatement prepareStatement(String sql)throws SQLException;        //该方法返回预编译的Statement对象,即将SQL语句提交到数据库进行预编译    CallableStatement prepareCall(String sql) throws SQLException;        //该方法返回CallableStatement对象,该对象用于调用存储过程    // 控制事务的相关方法    Savepoint setSavepoint() throws SQLException        //创建一个保存点    Savepoint setSavepoint(String name) throws SQLException;        //以指定名字来创建一个保存点;    void setTransactionIsolation(int level) throws SQLException;        //设置事务的隔离级别;    void rollback() throws SQLException;        //回滚事务;    void rollback(Savepoint savepoint) throws SQLException;        //将事务回滚到指定的保存点;    void setAutoCommit(boolean autoCommit) throws SQLException;        //关闭自动提交,打开事务;    void commit() throws SQLException;        //提交事务;

Statement :用于执行SQL语句的工具接口。该对象既可以执行DDL,DCL语句,也可以执行DML语句 ,还可以用于执行SQL查询

ResultSet executeQuery(String sql) throws SQLException;        //该方法用于执行查询语句,并返回查询结果对应ResultSet对象。该方法只能用于执行查询语句    int executeUpdate(String sql) throws SQLException;        //该方法用于执行DML语句,并返回受影响的行数;该方法也可用于执行DDL语句,执行DDL语句将返回0    boolean execute(String sql) throws SQLException;        //改方法可以执行任何sql语句。如果执行后第一个结果为ResultSet对象,则返回true;如果执行后第一个结果为受影响的行数或没有任何结果,则返回false

PreparedStatement :预编译的Statement对象,它允许数据库预编译sql语句,以后每次只改变sql命令的参数,避免数据库每次都需要编译sql语句,无需再传入sql语句,
它比Statement多了以下方法

void setXxx(int parameterIndex, Xxx value):        //该方法根据传入参数值的类型不同,需要使用不同的方法。传入的值根据索引传给sql语句中指定位置的参数

Hibernate框架常用API

Configuration :负责Hibernate的配置信息。包括运行的底层信息:数据库的URL、用户名、密码、JDBC驱动类,数据库Dialect,数据库连接池等 和持久化类与数据表的映射关系(*.hbm.xml文件)

//属性文件(hibernate.properties):    Configuration cfg = new Configuration();    //Xml文件(hibernate.cfg.xml)    Configuration cfg = new Configuration().configure();

SessionFactory :Configuration对象根据当前的配置信息生成SessionFactory对象,SessionFactory对象中保存了当前数据库的配置信息和所有映射关系以及预定义的SQL语句,同时还负责维护Hibernate的二级缓存

SessionFactory configuration.buildSessionFactory()        获取SessionFactory对象    Session sessionFactory.openSession()        获取Session对象

Session :是应用程序与数据库之间交互操作的单线程对象。session对象有一个一级缓存,显式执行flush之前,所有的持久层操作的数据都缓存在session对象处。相当于JDBC的Connection

//获取持久化对象方法分为get()和load()    public Object get(Class clazz, Serializable id);        //通过持久化类和主键获取对象    public Object get(Class clazz, Serializable id, LockOptions lockOptions);        //通过持久化类和主键、锁选项获取对象    public Object get(String entityName, Serializable id);        //通过全类名+主键获取对象    public Object get(String entityName, Serializable id, LockOptions lockOptions);        //通过全类名+主键+锁选项获取对象        //load()方法与get()相同,但多了下列方法    public void load(Object object, Serializable id);        //通过一个空的持久化类的实例+主键获取对象        //get方法会在调用之后立即向数据库发出sql语句(不考虑缓存的情况下),返回持久化对象;        //而load方法会在调用后返回一个代理对象,该代理对象只保存了实体对象的id,直到使用对象的非主键属性时才会发出sql语句.        //查询数据库中不存在的数据时,get方法返回null,load方法抛出异常:org.hibernate.ObjectNotFoundException    Serializable save(Object object)        //保存持久化对象     void update(Object object)        //更新持久化对象     void delete(Object object)        //删除持久化对象    void saveOrUpdate(Object object)        //根据ID判断是save还是update,如果id存在,则为update,若id不存在,即为save    Query createQuery(String hql)        //执行HQL查询    SQLQuery createSQLQuery(String sql)        //执行SQL查询    Transaction beginTransaction()        //开启事务

Transaction :具有数据库事务的概念,所有持久层都应该在事务管理下进行,即使是只读操作

void commit()        //提交相关联的session实例    void rollback()        //撤销事务操作    boolean wasCommitted()        //检查事务是否提交

Query : 用于从数据存储源查询对象及控制执行查询的过程,Query对象包装了一个HQL查询语句。Query对象在session对象关闭之前有效,否则会抛出Sessionexception异常

Query setxxx()        //用于设置HQL语句中问号或者变量的值    List list()        //返回查询结果,并把查询结果转换成list对象    Obect uniqueResult()        //得到一个单个的对象(查询结果仅一条)    int executeUpdate()        //执行更新或删除语句

Criteria :

SpringJdbc常用API

JdbcTemplate : Spring对JDBC最低级别的封装,其他的工作模式 事实上在底层使用了JdbcTemplate作为其底层的实现基础

void execute(String sql)        //用于执行任何SQL语句,一般执行DDL语句    int update(String sql)        //用于执行新增,修改,删除等语句。    int[] batchUpdate(String sql)    int[] batchUpdate(String sql,BatchPreparedStatementSetter pss)        //批量执行SQL语句    queryForxxxxx(String sql)        //执行查询相关的语句    Map<String,Object> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters) throws DataAccessException        //执行存储过程、函数相关的语句

NamedParameterJdbcTemplate :对JdbcTemplate做了封装,提供了更加便捷的基于命名参数的使用方式

String sql = "INSERT INTO student(id,student_name,email,Dept_No) VALUES(:id,:name,:email,:deptid)";          Map<String , Object> paramMap = new HashMap<>();          paramMap.put("id",9);          paramMap.put("name","Limbo");          paramMap.put("email","1610770854@qq.com");          paramMap.put("deptid",1);          namedParameterJdbcTemplate.update(sql,paramMap);

Mybatis常用API

SqlSessionFactory :是单个数据库映射关系经过编译后的内存镜像,其主要作用是创建SqlSession对象

InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    SqlSession openSession()    SqlSession openSession(Connection connection)        获取SqlSessioon对象

SqlSession : 应用程序与持久层之间执行交互操作的一个单线程对象,其主要作用是执行持久化操作

void commit()        //提交事务    int delete(String statement)    int delete(String statement, Object parameter)        //执行一条删除操作    int insert(String statement)    int insert(String statement, Object parameter)        //执行一条插入操作    <T> T selectOne(String statement)    <T> T selectOne(String statement, Object parameter)        //执行一条查询,并返回一条记录    <E> List<E> selectList(String statement)    <E> List<E> selectList(String statement, Object parameter)        //执行一条查询,返回List对象    <T> T getMapper(Class<T> type)        //获取一个Mapper对象

Spring data JPA

Spring Data JPA 简化持久层开发大致需要如下三个步骤

public interface UserRepository extends Repository<User, Long> { }

在持久层的接口中声明需要的业务方法,Spring Data JPA将会根据指定的策略为该方法生成实现代码。用户不需要实现该接口

List<User> findByLastname(String lastname);

在Spring的配置文件中添加配置,为声明的接口设定代理对象

<jpa:repositories base-package="com.zhutougg.jpa" entity-manager-factory-ref="entityManagerFactory" transaction-manager-ref="transactionManager"/>

获得并使用repository的实例

//在Spring Container中使用 public class TestJPA {    @Autowired    private UserRepository repository;    public void doSomething() {        User u = new User();        User user = repository. save (u);    } }//在Spring Container外使用 RepositoryFactorySupport factory = … // Instantiate factory here UserRepository repository = factory.getRepository(UserRepository.class)

Respository : 是SpringData的核心接口,并不提供任何方法,用户需要自己定义需要的方法

1. public interface UserDao extends Repository<User, Long> { …… } 2. @RepositoryDefinition(domainClass = User.class, idClass = Long.class) public interface UserDao { …… }

上一篇:学Java到底能不能赚到钱?
下一篇:热点面试题目—Java异常

java练习题【含答案】

java面试题(1)

JavaWeb项目为什么我们要放弃jsp?为什么要前后端解耦?为什么要前后端分离?

Java内存管理

选择城市和中心
贵州省

广西省

海南省