这篇文章主要介绍mysql数据库快速入门的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
如何启动MySQL服务?
对于如何启动MySQL服务?除了可以在安装的时候勾选随着开机自启动,还可以在运行
窗口(windows)为例子,输入以下内容:
net start 命令名字:开启一个服务,如:net start MySQL
net stop 命令名字:关闭一个服务器,如:net stop MySQL
mysql数据库快速入门的示例分析
连接MySQL数据库有两种方式:
方式1:进入MySQL命令行, 在命令行中输入密码;
方式2:在运行窗口中:
格式:mysql -u账户 -p密码 -h数据库服务器安装的主机的ip(如果是本机可以使用localhost) -P数据库端口
mysql -uroot -padmin -h227.0.0.1 -P3306
上面假设我的账号是root 密码是admin
若连接的数据库服务器在本机上,并且端口是3306。
则可以简写: mysql -uroot -padmin
Navicat for MySQL
Navicat for MySQL[1] 其实就是MySQL 的可视化工具,是一款强大的 MySQL 数据库管理和开发工具,它为专业开发者提供了一套强大的足够尖端的工具,但对于新用户仍然易于学习。Navicat for MySQL 基于Windows平台,为 MySQL 量身订作,提供类似于 MySQL 的用管理界面工具。此解决方案的出现,将解放 PHP、J2EE 等程序员以及数据库设计者、管理者的大脑,降低开发成本,为用户带来更高的开发效率。
数据库操作和存储引擎
数据库对象:存储,管理和使用数据的不同结构形式,如:表、视图、存储过程、函数、触发器、事件、索引等。
数据库:存储数据库对象的容器。
数据库分两种:
1):系统数据库(系统自带的数据库):不能修改
information_schema:存储数据库对象信息,如:用户表信息,列信息,权限,字符,分区等信息。
performance_schema:存储数据库服务器性能参数信息。
mysql:存储数据库用户权限信息。
test:任何用户都可以使用的测试数据库。
2):用户数据库(用户自定义的数据库):一般的,一个项目一个用户数据库。
常用的操作命令:
查看数据库服务器存在哪些数据库:
SHOW DATABASES;
使用指定的数据库:
USE database_name;
查看指定的数据库中有哪些数据表:
SHOW TABLES;
创建指定名称的数据库:
CREATE DATABASE database_name;
删除数据库:
DROP DATABASE database_name;
注意:;是必须的,不然不会正确显示
MySQL的存储引擎
MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供不同的功能和能力。
通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。
MyISAM:拥有较高的插入,查询速度,但不支持事务,不支持外键。
InnoDB:支持事务,支持外键,支持行级锁定,性能较低。
InnoDB 存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。但对比MyISAM,处理效率差,且会占用更多的磁盘空间以保留数据和索引。
MySQL常用列类型
最常用的整数类型:
MySQL列类型 Java数据类型
INT/INTEGER: int/Integer
BIGINT: long/Long
MySQL 以一个可选的显示宽度指示器的形式对 SQL 标准进行扩展,这样当从数据库检索一个值时,可以把这个值加长到指定的长度。
例如,指定一个字段的类型为 INT(6),就可以保证所包含数字少于 6 个的值从数据库中检索出来时能够自动地用空格填充。
需要注意的是,使用一个宽度指示器不会影响字段的大小和它可以存储的值的范围。一般不用指定位宽。
age int(2),并不是代表age最多存储99,而是指查询age值得时候使用两个0来占位.这篇文章主要介绍“什么是MyBatis缓存”,在日常操作中,相信很多人在什么是MyBatis缓存问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是MyBatis缓存”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
什么是Mybatis缓存?
使用缓存可以减少Java Application与数据库的交互次数,从而提升程序的运行效率。比如,查询id=1的user对象,第一次查询出来之后,会自动将该对象保存到缓存中。下一次查询该对象时,就可以直接从缓存中获取,不需要发送SQL查询数据库了。
Mybatis缓存分类
一级缓存:SqlSession级别,默认开启,且不能关闭。
mybatis的一级缓存是SqlSession级别的缓存,在操作数据库时需要构造SqlSession对象,在对象中有一个HashMap用于存储缓存数据,不同的SqlSession之间缓存数据区域(HashMap)是互相不影响的。
一级缓存的作用域是SqlSession范围的,当在同一个SqlSession中执行两次相同的sql语句时,第一次执行完毕会将数据库中查询的数据写到缓存(内存)中,第二次查询时会从缓存中获取数据,不再去底层进行数据库查询,从而提高了查询效率。需要注意的是:如果SqlSession执行了DML操作(insert、update、delete),并执行commit()操作,mybatis则会清空SqlSession中的一级缓存,这样做的目的是为了保证缓存数据中存储的是最新的信息,避免出现脏读现象。
当一个SqlSession结束后该SqlSession中的一级缓存也就不存在了,Mybatis默认开启一级缓存,不需要进行任何配置。
二级缓存:Mapper级别,默认关闭,可以开启。
二级缓存是Mapper级别的缓存,使用二级缓存时,多个SqlSession使用同一个Mapper的sql语句去操作数据库,得到的数据会存在二级缓存区域,它同样是使用HashMap进行数据存储,相比一级缓存SqlSession,二级缓存的范围更大,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。
二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的SqlSession两次执行相同的namespace下的sql语句,且向sql中传递的参数也相同,即最终执行相同的sql语句,则第一次执行完毕会将数据库中查询的数据写到缓存(内存),第二次查询时会从缓存中获取数据,不再去底层数据库查询,从而提高查询效率。
Mybatis默认关闭二级缓存,可以在setting全局参数中配置开启二级缓存。
下面我们通过代码来学习如何使用MyBatis缓存。
首先来演示一级缓存,以查询Student对象为例。
/**
* @ClassName Student
* @Description
* @Author lzq
* @Date 2019/7/26 13:53
* @Version 1.0
**/
public class Student {
private int SID;
private String Sname;
private String Ssex;
private int Age;
public int getSID() {
return SID;
}
public void setSID(int SID) {
this.SID = SID;
}
public String getSname() {
return Sname;
}
public void setSname(String sname) {
Sname = sname;
}
public String getSsex() {
return Ssex;
}
public void setSsex(String ssex) {
Ssex = ssex;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
@Override
public String toString() {
return "[id"+SID+" 名字"+Sname+" 性别"+Ssex+" 年龄"+Age+"]";
}
}
StudentMapper接口:
import org.apache.ibatis.annotations.*;
public interface StudentMapper {
public Student getStudentById(int id);
}
mybatis-config.xml:
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
StudentMapper.xml:
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select * from student where SID = #{id}
测试代码:
**
* @ClassName Test
* @Description
* @Author lzq
* @Date 2019/7/26 13:53
* @Version 1.0
**/
public class Test {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
//读取配置文件
InputStream asStream = Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(asStream);
//创建sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过动态代理产生StudentMapper对象
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
//查询id为1的元组
Student student = mapper.getStudentById(1);
System.out.println(student);
Student student1 = mapper.getStudentById(1);
System.out.println(student1);
}
}
可以看到结果,执行了一次SQL语句,查询出两个对象,第一个对象是通过SQL查询的,并保存到缓存中,第二个对象是直接从缓存中获取的。
我们说过一级缓存是SqlSession级别的,所以SqlSession一旦关闭,缓存也就不复存在了,修改代码,再次测试。
测试代码:无锡妇科医院 http://www.bhnnk120.com/
**
* @ClassName Test
* @Description
* @Author lzq
* @Date 2019/7/26 13:53
* @Version 1.0
**/
public class Test {
public static void main(String[] args) throws IOException {
String resource = "mybatis-config.xml";
//读取配置文件
InputStream asStream = Resources.getResourceAsStream(resource);
//创建sqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(asStream);
//创建sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过动态代理产生StudentMapper对象
StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
//查询id为2的元组
Student student = mapper.getStudentById(1);
System.out.println(student);
sqlSession.close(); //关闭原有的sqlSession
sqlSession = sqlSessionFactory.openSession(); //创建一个新的
mapper = sqlSession.getMapper(StudentMapper.class);
Student student1 = mapper.getStudentById(1);
System.out.println(student1);
}
}
可以看到,执行了两次SQL。
在关闭SqlSession,一级缓存失效的情况下,可以启用二级缓存,实现提升效率的要求。
MyBatis可以使用自带的二级缓存,也可以使用第三方的ehcache二级缓存。
自带二级缓存
mybatis-config.xml配置开启二级缓存
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
在StudentMapper.xml配置中开启二级缓存:
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
select * from student where SID = #{id}
Student类实现Serializable接口:
import java.io.Serializable;
/**
* @ClassName Student
* @Description
* @Author lzq
* @Date 2019/7/26 13:53
* @Version 1.0
**/
public class Student implements Serializable{
private int SID;
private String Sname;
private String Ssex;
private int Age;
public int getSID() {
return SID;
}
public void setSID(int SID) {
this.SID = SID;
}
public String getSname() {
return Sname;
}
public void setSname(String sname) {
Sname = sname;
}
public String getSsex() {
return Ssex;
}
public void setSsex(String ssex) {
Ssex = ssex;
}
public int getAge() {
return Age;
}
public void setAge(int age) {
Age = age;
}
@Override
public String toString() {
return "[id"+SID+" 名字"+Sname+" 性别"+Ssex+" 年龄"+Age+"]";
}
}
测试代码依旧是上一次用的那个:
可以看到,执行了一次SQL,查询出两个对象,cache命中率为0.5;
到此,关于“什么是MyBatis缓存”的学习就结束了,希望能够解决大家的疑惑。
大型站长资讯类网站! https://www.0817zz.com