发表于: 2018-03-17 22:37:58
2 710
本来今天计划是搞定昨天的任务16,然后做完任务17、18、19,结果突然有事情,在外面跑了一下午,没有完成今天的任务。
Q16:在src/main/java下随便创建一个java文件,clean,install.查看本地的.m2下是否成功看到有Jar包
A16:昨天遇到的问题是没法执行install,idea报错1.5版本过低,我尝试修改了maven中的settings.xml,加入了自己写的语句之后发现maven无法正常运行,而且我还忘记自己改了哪里,重新装一个maven,网上的修改settings.xml的方法被我pass了,下面从IDEA设置找问题,发现每次将项目JDK设置成9.0之后他都会自己改回1.5,百度这个问题,得到结果是需要更改项目的pom.xml文件,我在群里吐槽了一句每次都要在项目的pom.xml文件里面加入JDK环境设置好麻烦,然后被告知修改项目的pom文件是最安全的方式。乖乖去修改pom文件。
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>9.0</maven.compiler.source>
<maven.compiler.target>9.0</maven.compiler.target>
</properties>
改完之后运行,what?无效的版本:9...整个人都⑨了(bakabaka),然后按照网上的乖乖改成1.8
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
OK,可以运行,并且在C盘用户.m2文件夹下面找到了该项目的jar文件(昨天是修改到了D盘,然后今天重新装了maven程序之后就没改setting文件了,怕给改坏,另外从网上看到了镜像国内阿里云下载jar的代码,没敢试,感觉从国外直接下载也不慢)
本来到这里问题已经解决了,可是我又好事把JDK版本改成了1.9,也是可以运行的,这是为啥,百度也没答案,问群里原来是太高版本不支持,建议JRE用1.7或者1.8.
Q17:编写DAO,分别JdbcTemplate和Mybatis连接数据库,注意使用JDBCTemplate的时候分离Interface和Imple,使用Mybatis的时候注意理解为什么不需要Impl,注意遵守命名规范
A17:被这个问题难住了,首先把这个问题分开吧,我从JDBC入手(0基础,挺吃力的),去网上找到JDBC的资料,查阅得知JDBC是java语言环境下的一种接口(API),这些都是术语了,我自己总结来说就是用java语言操作数据库。
然后下面不得不说一个学习方法的问题,今天我一开始并没有去查相关的JDBC视频和代码(本着不看视频的原则),手头只有一个昨天创建好的maven项目,我就在思考maven的作用是什么?我该如何从什么地方入手编写JDBC代码,后来想了好久,我把maven项目删掉,重新建了一个java项目(多此一举,后来发现和maven没关系,只是你在src文件夹下面生成java class然后在里面编写代码就可以运行,这里是我对maven项目理解有偏差,感觉自己更应该去寻找一些视频看看,可能比较适合自己学习。
然后给大家推荐一个JDBC教程视频:http://study.163.com/course/courseLearn.htm?courseId=645004#/learn/video?lessonId=797046&courseId=645004,虽然讲的不详细,不过挺清晰的。这也是我在自己思考无果之后去找了视频开始完成JDBC的代码编写。
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class text2 {
public static void main(String[] args){
//createTable();
// insert();
query();
}
static void query(){
Connection conn=DBUTIL.open();
String sql="select id,name from texttable";
try {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
int id = rs.getInt(1);
String name = rs.getString(2);
System.out.println(id+","+name);
}
} catch (SQLException e) {
e.printStackTrace();
}
finally{
DBUTIL.close(conn);
}
}
static void createTable(){
Connection conn=DBUTIL.open();
String sql="create table texttable(id int primary key auto_increment,name varchar(20))";
try {
Statement stmt = conn.createStatement();
stmt.execute(sql);
} catch (SQLException e) {
e.printStackTrace();
}
finally{
DBUTIL.close(conn);
}
}
static void insert(){
Connection conn=DBUTIL.open();
String sql="insert into texttable(name) values('tom')";
try {
Statement stmt = conn.createStatement();
stmt.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
}
finally{
DBUTIL.close(conn);
}
}
}
这串代码实现了数据库的建表,表中数据的插入以及表中数据遍历查询的功能,需要注意的是查询的时候返回的re集合需要自己提取其中的数值,以及喂了方便,我将数据库的驱动、链接和关闭放到了另外一个java文件当中。
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.Reader;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
public class DBUTIL {
private static String driver;
private static String url;
private static String username;
private static String password;
static{
Properties prop = new Properties();
Reader in = null;
try {
in = new FileReader("src\\config");
prop.load(in);
} catch (Exception e) {
e.printStackTrace();
}
driver = prop.getProperty("driver");
url=prop.getProperty("url");
username=prop.getProperty("username");
password=prop.getProperty("password");
}
public static Connection open()
{
try {
Class.forName(driver);
return DriverManager.getConnection(url,username,password);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void close(Connection conn){
if(conn!=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
学习了视频中的配置,再新建一个config.properties存放驱动、数据库url、username、password,方便日后的更改。
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/EMP?useSSL=false
username=root
password=likefei1995
JDBC操作步骤也就是先驱动,然后建立与数据库的链接,创建Statement语句(就是mysql下的sql语句在java环境中的编译),执行Statement语句,返回结果,最后关闭链接。
我利用剩下的时间了解了一下JDBCtemplate的含义和编写方法,template,就是模板,是Spring框架为我们提供的.所以JDBCTemplate就是Spring对JDBC的封装,通俗点说就是Spring对jdbc的封装的模板。这句话理解的不是很透彻,自己也没有进行JDBCtemplate代码的编写,问题也引导了spring到底是什么的地方,看了一眼任务,卧槽...spring的学习在任务19,那可能是17、18、19需要在一起学习,因为Junit的话template好像也要用到....今天在JDBC代码处花的时间着实有点多,剩下的知识没来得及学习,明天的任务就是学习JDBCtemplate的编写(顺便DAO也和这个有关系,大致看了一下网上的资料),再有就是Mybatis连接数据库(又是一项艰巨的任务啊)。
收获:说起来今天还是第一次用java写代码,之前两天一直在cmd里面玩耍,感觉IDEA很好用,直接点前面那个小灯泡会自动帮你import,然后是异常的抛出和处理,也会自动帮你catch,不过有一点就是如果有两个异常同时抛出,用完自动catch之后还得自己手动调整一下代码,这里也花了不少时间,其实自动提示对于我这种初学者真的应该关掉,代码自动提示,里面键入什么数据都给你写好了,跟开挂一样,不过说回来如果没有自动提示今天进度会更慢,不知道怎么取舍了,任务一一共要求7天今天第三天是真的吃力,等于我一天时间连一个任务16的一半都没有做完,明天....还是继续开着自动提示?
评论