• java的数据库相关操作


    通过JDBC方式连接数据库
    
    1.准备工作
        在系统上安装mysql以及java开发环境,IDE等。
        检查:1.eclipse可以编译运行程序
              2.MySQL用户名密码正确
              3.查询表存在,查询语句可以执行
            
    2.下载MySQL的驱动包,mysql-connector-java-5.1.47-bin.jar,新建java项目之后需要把驱动包加入项目。
    3.编写代码
            
            try {  
            
                  Class.forName("com.mysql.jdbc.Driver");  //加载MYSQL JDBC驱动程序 
                  System.out.println("Success loading Mysql Driver!");  //ja
                 }catch (Exception e) {  
                  System.out.print("Error loading Mysql Driver!");  
                  e.printStackTrace();  
             }  
             try{  
                  Connection connect = DriverManager.getConnection(  
                   "jdbc:mysql://localhost:3306/test","root","root");  
                    //连接URL为 jdbc:mysql//服务器地址/数据库名 ,后面的2个参数分别是登陆用户名和密码  
                   
                  System.out.println("Success connect Mysql server!");  
                  Statement stmt = connect.createStatement();  
                  ResultSet rs = stmt.executeQuery("select * from info");  
                                //user 为你表的名称  
                  while (rs.next()) {  
                          System.out.println(rs.getString("id"));  
                          System.out.println(rs.getString("name"));  
                     }  
                 }catch(Exception e) {  
                  System.out.print("get data error!");  
                  e.printStackTrace();  
              }  
        //通过JDBC实现查询,需要把sql语句写在程序中。而且,处理查询的结果也要手工处理
        
    
    二、使用JDBC TEMPLATE的相关操作。
        
        spring提供的操作JDBC的工具类。
        依赖于,连接池DATASource,(数据源)。
        使用准备:在mysql中建立数据库,建立表,添加数据。
        创建项目、导入jar包:日志,spring核心4个包,jdbc包、事务的包以及他们的依赖c3p0连接池,dbcp连接池和依赖。mysql的包。
        建立一个和表对应的类,user对应info表。作为javabean
        
        
        具体使用方法。
        - 使用API(了解) 使用API和JDBC很相似。
            建立一个TestAPI,主函数
            1.创建数据源,连接池
            BasicDataSource dataSource = new ****;
            dataSource.setDriverClassName();
            dataSource.setUrl();
            dataSource.setUsername();
            dataSource.setPassword();
            
            2.创建模板
            JdbcTemplate jdbcTemplate = new **
            jdbcTemplate.setDataSource(dataSource);
            
            3.通过API来操作
            jdbcTemplate的成员函数来进行增删改查。
            jdbcTemplate.update("","","")//语句中可以使用?来代替,后面给出数据。
            //只要看到了NEW,SET,就可以交给Spring来实现DAO
            
        - 配置DBCP
            通过Spring去注入模板
            建立一个userDAO类,中间包含jdbcTemplate.通过set方法设置值
            建立一个mainA类,编写beans.xml文件。配置DAO<bean id = “” class = “” >,还需要在xml中创建模板。模板中还需要注入一个数据源。
            通过spring工厂来生成这个类。
            不熟悉使用从上向下写,熟悉从下向上写,先写xml,再写main函数。(需要前面的注入知识)
            
            UserDAO的内容:
            package com.test.b_dbcp;
            import org.springframework.jdbc.core.JdbcTemplate;
            import org.springframework.jdbc.core.metadata.OracleCallMetaDataProvider;
            public class UserDao {
                public JdbcTemplate jdbcTemplate;
    
                public JdbcTemplate getJdbcTemplate() {
                    return jdbcTemplate;
                }
    
                public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
                    this.jdbcTemplate = jdbcTemplate;
                }
    
                //获取了模板,使用模板的api进行操作。
                public void updateDate()
                {
                    this.jdbcTemplate.update("update info set name = 'cxc' where id = 12");
                }
            }
    
            BEANS.XML的内容:
            <?xml version="1.0" encoding="UTF-8"?>
            <beans xmlns="http://www.springframework.org/schema/beans"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                xmlns:p="http://www.springframework.org/schema/p"
                xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd">
               
               //配置数据源的工厂
               <bean id = "dataSourceid" class="org.apache.commons.dbcp2.BasicDataSource">
                <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
                <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
                <property name="username" value="root"></property>
                <property name="password" value="root"></property>
               </bean>
               
               //配置JDBCTemplate的工厂
               <bean id = "jdbcTemplateid" class="org.springframework.jdbc.core.JdbcTemplate">
                <property name="dataSource" ref="dataSourceid"></property>
               </bean> 
                
                //配置UserDao的工厂
                <bean id="userDaoid" class="com.test.b_dbcp.UserDao">
                <property name="jdbcTemplate" ref="jdbcTemplateid"></property>
                </bean>
            </beans>
            
        - 配置C3P0
            和DBCP十分相似。只是数据源是通过C3P0的方式来配置    
            ComboPooledDataSource,相关的设置(set方法)可能不一样。
            jdbcTemplate相关的配置是一样的。
            
            xml文件:
            <?xml version="1.0" encoding="UTF-8"?>
    
            <beans xmlns="http://www.springframework.org/schema/beans"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
                xmlns:p="http://www.springframework.org/schema/p"
                xsi:schemaLocation="http://www.springframework.org/schema/beans
                    http://www.springframework.org/schema/beans/spring-beans.xsd">
              
               <bean id = "dataSourceid" class="com.mchange.v2.c3p0.ComboPooledDataSource">
                <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
                <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
                <property name="user" value="root"></property>
                <property name="password" value="root"></property>
               </bean>
                    
               <bean id = "jdbcTemplateid" class="org.springframework.jdbc.core.JdbcTemplate">
                <property name="dataSource" ref="dataSourceid"></property>
               </bean> 
                
                <bean id="userDaoid" class="com.test.c_c3p0.UserDao">
                <property name="jdbcTemplate" ref="jdbcTemplateid"></property>
                </bean>
            </beans>
            
            了解一个jdbcTemplate的API,查询。
            query(),返回一个,全部。常用:查询语句,封装对象。ctrl+shift+t查看帮助文档。
            在使用query()函数时,需要了解一个接口RowMapper;
            JdbcTemplate用于在每个行的基础上,映射结果集ResultSet的行的接口。该接口的实现,将每行数据映射到实例对象。但不必担心异常处理。调用JdbcTemplate将捕获并处理SQLExceptions。 
            通常用于JdbcTemplate的查询方法或存储过程的输出参数。 RowMapper对象通常是无状态的,因此可重用;它们是在一个地方实现行映射逻辑的理想选择。或者,考虑从jdbc.object包子类化MappingSqlQuery:而不是使用单独的JdbcTemplate和RowMapper对象,您可以构建该样式的可执行查询对象(包含行映射逻辑)
            需要建立一个新的的类去继承RowMapper,设置对应的关系。
            UserMapping如下
            public class UserMapping implements RowMapper<User> {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                // TODO Auto-generated method stub
                
                //建立一个user
                User user = new User();
                
                //通过rs进行关系对应
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                
                //输出结果
                return user;
            }
        }
    
            
        - 配置JDBCDaoSupport(使用比较多),在C3P0的基础上
        在userDao中需要写一个javaTemplate.可以让子类继承JdbcDaoSupport。
        可以通过getJdbcTemplate来代替jabcTemplate.
        
        //可以在xml中简化装配,不需要在dao中设置jdbcTemplate,只要直接把dataSource引入数据库中就可以了。
        //Dao需要继承JdbcDaoSupport。
        UserDao的写法
        public class UserDao extends JdbcDaoSupport {
            
            //获取了模板,使用模板的api进行操作。
                public void updateDate()
                {
                    this.getJdbcTemplate().update("update info set name = 'qyq' where id = 12");
                }
                
                public void searchDate()
                {
                    String sql = "select * from info;";
                    List<User> ret_list = this.getJdbcTemplate().query(sql,new UserMapping());
                    
                    for(User user: ret_list)
                    {
                        System.out.println(user.toString());
                    }
                }
        }
        
        xml文件的写法
        <bean id = "dataSourceid" class="com.mchange.v2.c3p0.ComboPooledDataSource">
           <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
           <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
           <property name="user" value="root"></property>
           <property name="password" value="root"></property>
       </bean>
        
        <bean id="userDaoid" class="com.test.d_jdbcDaoSupport.UserDao">
        <property name="dataSource" ref="dataSourceid"></property>
        </bean>
        
        在xml文件中,可以删除jdbcTemplate。而不需要设置。直接对dao来引入数据源。
        如果继承了这个类,就可以直接引入数据源。
        
        - 配置properties。在之前的基础中。
        开发过程中,会把数据源的相关信息写到propertise的文件中jbdcInfo.propertise.
        在xml中加载配置文件
        使用context:property-placeholder location=""
        之后就可以通过key来获取文件中的内容。
        //因为电脑无法输入美元符号,这个就不进行测试了。
        
        
        所有需要的jar包
        mysql的驱动:mysql-connector-java-5.1.47-bin.jar 
        
        Spring的核心:
        spring-beans-4.1.8.RELEASE.jar
        spring-context-4.1.8.RELEASE.jar
        spring-core-4.1.8.RELEASE.jar
        spring-expression-4.1.8.RELEASE.jar
        org.apache.commons.logging_1.1.1.jar
        
        Spring JdbcTemplate相关:
        spring-jdbc-4.1.8.RELEASE.jar
        spring-tx-4.1.8.RELEASE.jar
        
        数据源相关:
        commons-dbcp2-2.5.0.jar
        commons-pool2-2.6.0.jar
        c3p0-0.9.5.2.jar
        
    
        
    三、使用MyBatis链接数据库
    1.在JDBC的基础上下载mybatis的jar包
    2.导入jar包
    3.查看帮助文档,编写文件xml 
  • 相关阅读:
    模拟退火求二维费马点
    二叉查找树
    Linux中让普通用户拥有超级用户的权限
    python 正则表达式应用——缩写词扩充
    解决单链表中的环问题
    python数学函数
    train,dev,test数据集作用
    朴素贝叶斯法(二)——基本方法
    生成模型与判别模型
    ImportError: cannot import name wordnet
  • 原文地址:https://www.cnblogs.com/qiny1012/p/9775181.html
Copyright © 2020-2023  润新知