发表于: 2017-09-11 22:29:15

2 803


今天完成任务

【1】

鉴于上一次日报对JDBC的粗略了解,导致后来mybatis困难重重,所以今天起来第一件事重新又写了一遍JDBC

貌似JDBC对数据库的操作就是多态的一种啊。

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class hello {
    @Test
   public void  F1(){
        System.out.print ("hello,此程序用来测试JDBC");
    }
   @Test
   public void  F2() throws Exception{
       //注册驱动
        Class.forName("com.mysql.jdbc.Driver");
       //获取链接
       Connection c= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/mysql","root","123");
       //编写sql
       String sql="select * from student3";
       //创建语句执行者
       PreparedStatement st= c.prepareStatement(sql);
       //设置参数

       //执行sql
       ResultSet rs=st.executeQuery();
       while(rs.next()){
           System.out.print(rs.getString("id")+"::"+rs.getString("user_name"));
       }
       rs.close();
       st.close();
       c.close();
   }

}

这一次边理解边编写这个JDBC,感觉这次比上次直接誊写代码懂了更多。


2】又开始尝试创建mybatis链接

百度了一下了mybatis框架

     1、  mybatis配置

           SqlMapConfig.xml,此文件作为mybatis的全局配置文件,配置了mybatis的运行环境等信息。 

           mapper.xml文件即sql映射文件,文件中配置了操作数据库的sql语句。此文件需要在SqlMapConfig.xml              中加载。

     2、  通过mybatis环境等配置信息构造SqlSessionFactory即会话工厂

3、  由会话工厂创建sqlSession即会话,操作数据库需要通过sqlSession进行。

4、  mybatis底层自定义了Executor执行器接口操作数据库,Executor接口有两个实现,一个是基本执行器、一个是缓存执行器。

5、  Mapped Statement也是mybatis一个底层封装对象,它包装了mybatis配置信息及sql映射信息等。mapper.xml文件中一个sql对应一个Mapped Statement对象,sqlid即是Mapped statementid

6、  Mapped Statementsql执行输入参数进行定义,包括HashMap、基本类型、pojoExecutor通过Mapped Statement在执行sql前将输入的java对象映射至sql中,输入参数映射就是jdbc编程中对preparedStatement设置参数。

7、  Mapped Statementsql执行输出结果进行定义,包括HashMap、基本类型、pojoExecutor通过Mapped Statement在执行sql后将输出结果映射至java对象中,输出结果映射过程相当于jdbc编程中对结果的解析处理过程。

 

按着别人的博客学着开始配置文件。

SqlMapConfig.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
       PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <!-- 和spring整合后 environments配置将废除-->
   <environments default="development">
       <environment id="development">
           <!-- 使用jdbc事务管理-->
           <transactionManager type="JDBC" />
           <!-- 数据库连接池-->
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.jdbc.Driver" />
               <property name="url" value="jdbc:mysql://127.0.0.1:3306/mysql" />
               <property name="username" value="root" />
               <property name="password" value="123" />
           </dataSource>
       </environment>
   </environments>

</configuration>

log4j.properties文件

# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=
%5p [%t] - %m%n

目前的进度就到这里,很慢,还是告诉自己放松心态,每一部走的扎实一点。

遇到的问题

【1】编写JDBC的时候背诵那些语句太痛苦了,就去试着理解加百度了一下。

每一步的作用大概是下面这样如下。

PreparedStatement的用处就是所有sql语句运行前,必然有个解析过程,就好象java代码的编译一样。如果同样的语句运行多次,当然希望它是一次编译多次运行的。这样可以减少编译的过程。 PrepareStatement就是干这事的。 它其实返回一个编译后的标识。用这个标识系统就可以直接找到编译过的sql来运行。不必要把每次的sql都编译一遍。

此外有些sql只是部分值不同,其他都一样。那么就把不变成 参数,sql编译后,每次使用不同的参数来实行。

executeQuery的作用是执行数据库查询语句 这个方法的参数是一个sql语句。

class.name则是加载一个类的程序。

executeQuery(String sql)

     执行select语句,它返回的是查询后得到记录集(resultset)。

executeUpdate(String sql)

     执行update,insert,delete语句,它返回的是语句执行后说影响到的记录条数(int)。对于 CREATE TABLE 或 DROP TABLE 等不操作行的DDL语句,executeUpdate 的返回值总为零。

execute(String sql)

     执行任何sql语句,也就是前两者之一。返回值是第一个结果的表现形式。当第一个执行结果是查询语句时,返回true,可以通过getResultSet方法获取结果;当第一个执行结果是更新语句或DDL语句时,返回false,可以通过getUpdateCount方法获取更新的记录数量。

 

JDBC的大部分语句就这样从新理解了一下。。

【2】想知道log4j.properties文件和SqlMapConfig.xml文件这种配置文件是要自己写的么?还是说从官方文档里面都能找到,往师兄指条明路,因为真的背不下了,也理解不太好,只会改一些配置开始适应自己的本地数据库,这样就达到要求了么?师兄帮忙回答一下!高亮!


明天要做的事

【1】继续死磕mybatis,争取数据库配置成功。

【2】在看一点JAVA语法,多态那里重温一下,感觉最近要经常用到。





返回列表 返回列表
评论

    分享到