发表于: 2021-11-08 12:07:12
1 970
任务一总结:
一.开发环境的安装与使用,
我是用了1天半的时间装好IDEA JAVA MAVEN Mysql 写出自己的第一个Helloword,在这个过程中配置和熟悉设置中最重要的一点是设置每个服务的PATH 路径,与配置文件,因为我使用的是MacOs 和服务器系统CentOs类似,大部分是使用命令行来使用的
1. 安装下载好MySql 服务后
配置mysql 文件,因为都是包安装,没有有配置文件,系统默认的文件,直接启动服务就可以了
macOs启动 在系统偏好设置中的 Mysql 应用中直接启动,停止 与重置数据库就可以了
Centos 因为是yum包安装的 安装好以后 setemctl systemctl start mysqld.service
mysql使用中最容易遇到的问题是安装好以后系统默认的是没有密码的 ,用mysql直接可以进入数据中的,但是要用navicat 之类的工具访问数据库,也是为了安全性考虑,要设置密码。
使用 mysql -u -root -p 会提示你输入新密码
2 .安装MAVEN的问题与总结这个问题:
从网上下载好maven 后解压到自己需要的目录,因为我使用的是macos 以为自己就是管理员权限,在更改maven中settings.xml的时候总是提示只能读不能写,这个时候我以为我是有权限的,一直在更改,然后各种给权限,还是改不了文件属性,后面想到使用root 账号登陆,这才更改过来
设置setting中的localRepository的配置 改为<localRepository> /Users/kiven/App/repository<localRepository>
在<mirrors></mirrors>添加
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
来配置maven 阿里云远程中央仓库
3.下载并安装JDK
在终端输入 java -varsion
java version "17.0.1" 2021-10-19 LTS
Java(TM) SE Runtime Environment (build 17.0.1+12-LTS-39)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)
表示安装成功
4.安装下载Intellj IDEA 下载安装以后设置Preferences >Build,Execution,Deployment > Build Tools >Maven 中
Maven home path:/Users/kiven/App/apache-maven-3.8.3
User settings files:/Users/kiven/App/apache-maven-3.8.3/conf/settings.xml
Local repository: /Users/kiven/App/repository
5.下载安装navicat并连接mysql数据库
二.在完成任务过程中的收获
在完成任务的过程中重新回顾,并学习SQL语句,并设计了报名表,并明白了任务中的create_at,update_at要求的意义。并设置为MyISAM 引擎,为了
测试插入数据更加快。
这个是表的字段设置
Idea中创建项目首先就是要学会编辑pom.xml,然后就去学习了xml的简史与各个字段的用法
学会JDBC的用法
需要在pom.xml加载mysql-connector-java-8.0.11.jar
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
创建Conn类
import java.sql.Connection; //导入Java.sql包
import java.sql.DriverManager;
import java.sql.SQLException;
//创建类Conn
public class Conn {
//声明Connection 对象
static Connection con;
//建立返回值为Connection的方法
public Connection getConnection(){
try{
//加载数据库驱动类
Class.forName("com.mysql.jdbc.Driver");
System.out.println("数据库驱动加载成功");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
//通过访问数据库的URL获取数据库连接对象
con= DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/application","root","deng796443");
System.out.println("数据库连接成功");
}catch(SQLException e){
e.printStackTrace();
}
return con;//按方法要求返回一个Connection对象
}
//主方法
public static void main(String[] args){
//创建本类对象
Conn c=new Conn();
//调用数据库连接的方法
c.getConnection()
}
运行结果如下
数据库驱动加载成功
数据库连接成功
之后便学会了mybatis连接数据库的方法,了解了项目的结构组成,在这个过程中学会了Debug 调试的方法,与单元测试
并能设计数据库的表格
这是在在数据库服务中大批量插入数据项目中的项目结构
这个是插入数据的主要方法,详细的数据代码在上一篇日报中。
package com.jnshu.task.app
import com.jnshu.task.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInstance;
import org.mybatis.spring.SqlSessionTemplate
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
public class MybatisTest {
private SqlSession sqlSession;
private UserMapper dao;
private InputStream is;
@BeforeAll
public void init() throws IOException{
//1)读取配置文件
is = Resources.getResourceAsStream("SqlMapConfig.xml");
//2)创建SqlSessionFactory
SqlSessionFactoryBuilder sqlBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory sqlFactory = sqlBuilder.build(is);
//3)使用工厂创建SqlSession对象 openSession(falshe) 为手动提交事务
sqlSession = sqlFactory.openSession(false);
//4)使用SqlSession创建Dao接口的代理对象
dao = sqlSession.getMapper(UserMapper.class);
}
@Test
public void testBatchInsert() {
List<User> users = new ArrayList<User>();
int userCount = 10000;
User user = new User();
for (int i = 0; i != userCount; i++) {
user.setUsername("聂小倩");
user.setBirthday(new Date());
user.setSex("女");
user.setAddress("长沙");
user.setCourse("UI");
user.setEducation("本科");
user.setPhone("1889220708");
user.setSchool("深圳大学");
user.setTerget("不工作就没有放吃");
Date date = new Date();
date.setTime(108L);
user.setBirthday(date);
users.add(user);
}
//按批次插入
for (int j=0;j<200;j++) {
dao.insertBatch(users);
//清理缓存
sqlSession.clearCache();
//这里需要提交事务
sqlSession.commit();
}
}
@AfterAll
public void close() throws IOException{
//6)释放资源
sqlSession.close();
is.close();
}
}
这个是插入数据库是是否按批次插入的测试表
不按批次所用时间 按批次所用时间
- 1w 3.56s 3.56s
- 2w 7.779s 5.393s
- 5w 13.426s 9.594s
- 10w 39s 15.559s
- 20w 1m37s 26.868s
- 30w 4m32s 40.323s
50w 内存不够 58s
- 100w 1m44s
- 1000w 22m
在这个测试过程中,先是使用的数据库引擎为Innodb;后面改为MyISAM引擎,插入速度有明显提升
最最主要的是在这个过程中都是积累经验的过程,各种软件安装与配置,软件的报错,程序的报错,然后根据软件的报错程序的报错一步步的去找答案,思考为什么会出这样的问题。有没有更好的方法来避免以后再出这样的问题。收获了解决问题的能力与如何设计数据库,如何配置服务器,如何使用命令行,学会了如何通过jdbc 来对数据库的增删改查,深度的去测试数据库的性能,测试索引对数据库的影响
经验就是多去写代码多跑程序,去慢慢了解各种类的用法,多去实践各种想法,看能不能行的通,思考还有没有其他的解决办法,会不会更好
评论