Maven+Spring+MySql 登陆实例
近来无事,复习复习Spring相关知识,从《Spring企业应用开发实战》这本书开始。
本文为学习《Spring企业应用开发实战》总结,著作权归原作者。
一、用Maven建立web项目
此处参考 张果 博客,在此表示感谢。原文地址:http://www.cnblogs.com/best/p/5638827.html
1.点击“File”->“New”->"Other"->输入“Maven”,新建一个“Maven Project”,如下图所示:
2.请勾选“Create a simple project”,创建一个简单的项目,不使用模板。也可以使用模板,选择WebApp,不过这里就不应该勾选。如下图所示:
3.填写好包名、项目名,选择打包类型为:war,如下图所示:
4.项目创建好后可能会发现有错误,选择项目,右键“属性properties”->"层面Project Facets"->"Java"修改版本号为1.8,默认为1.5;点击“Ok”保存后关闭。如下图所示:
5.重复上一个步骤,反勾Dynamic Web Module,将项目暂时变成非Web项目。点击“Ok”保存后关闭。
6.重复上一步骤,再进层面属性,勾选“Dynamic Web Module”选择Version为3.0。点击左下角的超链接“Further Configuration available...“。
7.勾选“Generate web.xml deployment descriptor”生成web.xml部署描述文件。点击“Ok”保存后关闭。
8.将生成的WebContent目录下的两个文件夹“META-INF”与“WEB-INF”复制到src/main/webapp目录下。
9.删除WebContent目录。
10.删除后会发现项目的pom.xml文件报错,是因为找不到指定位置的web.xml文件引起的。再进入项目的属性,选择“Deployment Assembly”项目部署项,删除“src/test/java”、“src/test/resources”与“WebContent”目录,因为这三项不需要部署出去。
11.点击“Add添加”后选择“Folder文件夹”为项目的最终部署结果指定Web内容根文件夹。
12.选择src\main\webapp目录为目标目录,点击“Finish完成”保存并关闭。
13.如果此时项目还报错,随便修改pom.xml文件后保存后应该错误会消失。
14.此后项目运行需要添加tomcat运行环境就不赘述了。
二、类包规划,添加依赖,数据库准备
1.类包规划
2.pom.xml中添加lib依赖
- <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.adam</groupId>
- <artifactId>Chapter2</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>war</packaging>
- <properties>
- <!-- springframe 版本控制 -->
- <spring.version>4.1.1.RELEASE</spring.version>
- </properties>
- <dependencies>
- <!-- springframe start -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-core</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-web</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-oxm</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-tx</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-jdbc</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-webmvc</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aop</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context-support</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <!-- springframe end -->
- <!--mysql数据库驱动 -->
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <version>5.1.38</version>
- </dependency>
- <!--log4j日志包 -->
- <dependency>
- <groupId>org.apache.logging.log4j</groupId>
- <artifactId>log4j-core</artifactId>
- <version>2.6.1</version>
- </dependency>
- <!-- JUnit单元测试工具 -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.10</version>
- </dependency>
- <!-- aspectJ AOP 织入器 -->
- <dependency>
- <groupId>org.aspectj</groupId>
- <artifactId>aspectjweaver</artifactId>
- <version>1.8.9</version>
- </dependency>
- <!-- jstl -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jstl</artifactId>
- <version>1.2</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <!-- define the project compile level -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>2.3.2</version>
- <configuration>
- <source>1.8</source>
- <target>1.8</target>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
如果eclise没有自动下载jar包,右键“属性properties”->"Maven"->"Update Project..",强制更新。
3.数据库准备
建立数据库sampledb,添加两张表,结构如下:
t_user为用户信息表,t_login_log为用户登录日志表。表的引擎要指定InnoDB,因为该引擎支持事务。
初始化一条数据,用户名和密码用于测试登录。
三、持久层
1.建立领域对象(实体类)
User.java
- package com.adam.domain;
- import java.io.Serializable;
- import java.util.Date;
- public class User implements Serializable {
- private int userId;
- private String userName;
- private String password;
- private int credits;
- private String lastIp;
- private Date lastVisit;
- public int getUserId() {
- return userId;
- }
- public void setUserId(int userId) {
- this.userId = userId;
- }
- public String getUserName() {
- return userName;
- }
- public void setUserName(String userName) {
- this.userName = userName;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public int getCredits() {
- return credits;
- }
- public void setCredits(int credits) {
- this.credits = credits;
- }
- public String getLastIp() {
- return lastIp;
- }
- public void setLastIp(String lastIp) {
- this.lastIp = lastIp;
- }
- public Date getLastVisit() {
- return lastVisit;
- }
- public void setLastVisit(Date lastVisit) {
- this.lastVisit = lastVisit;
- }
- }
LoginLog.java
- package com.adam.domain;
- import java.io.Serializable;
- import java.util.Date;
- public class LoginLog implements Serializable {
- private int loginLogId;
- private int userId;
- private String ip;
- private Date loginDate;
- public int getLoginLogId() {
- return loginLogId;
- }
- public void setLoginLogId(int loginLogId) {
- this.loginLogId = loginLogId;
- }
- public int getUserId() {
- return userId;
- }
- public void setUserId(int userId) {
- this.userId = userId;
- }
- public String getIp() {
- return ip;
- }
- public void setIp(String ip) {
- this.ip = ip;
- }
- public Date getLoginDate() {
- return loginDate;
- }
- public void setLoginDate(Date loginDate) {
- this.loginDate = loginDate;
- }
- }
2.数据处理对象
UserDao.java
- package com.adam.dao;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.core.RowCallbackHandler;
- import org.springframework.stereotype.Repository;
- import com.adam.domain.User;
- @Repository
- public class UserDao {
- @Autowired
- private JdbcTemplate jdbcTemplate;
- public int getMatchCount(String name, String password) {
- String sql = "SELECT count(*) FROM t_user WHERE user_name = ? and password = ?";
- return jdbcTemplate.queryForInt(sql, new Object[] { name, password });
- }
- public User findUserByName(final String name) {
- String sql = "select user_id,user_name,credits from t_user where user_name = ?";
- final User user = new User();
- jdbcTemplate.query(sql, new Object[] { name }, new RowCallbackHandler() {
- public void processRow(ResultSet rs) throws SQLException {
- user.setUserId(rs.getInt("user_id"));
- user.setUserName(name);
- user.setCredits(rs.getInt("credits"));
- }
- });
- return user;
- }
- public void updateLoginInfo(User user) {
- String sql = "update t_user set last_visit = ?,last_ip = ?, credits = ? where user_id = ?";
- jdbcTemplate.update(sql,
- new Object[] { user.getLastVisit(), user.getLastIp(), user.getCredits(), user.getUserId() });
- }
- }
LoginLogDao.java
- package com.adam.dao;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.stereotype.Repository;
- import com.adam.domain.LoginLog;
- @Repository
- public class LoginLogDao {
- @Autowired
- private JdbcTemplate jdbcTemplate;
- public void insertLoginLog(LoginLog loginLog) {
- String sql = "insert into t_login_log(user_id, ip,login_datatime) values(?,?,?)";
- Object[] pra = { loginLog.getUserId(), loginLog.getIp(), loginLog.getLoginDate() };
- jdbcTemplate.update(sql, pra);
- }
- }
3.在spring中装配Dao
在Dao中并没有打开或释放数据库连接,那么Dao是如何访问数据库的?而且在Dao中使用的JdbcTemplate是从哪来的?这都是spring帮我们实现的,所以需要在spring中装配Dao。
创建spring配置文件applicationContext.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"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-4.3.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx.xsd">
- ...
- </beans>
在其中加入配置信息
- <!-- 扫描包,应用注解 -->
- <context:component-scan base-package="com.adam.dao" />
- <!--定义一个jdbc数据源,创建一个驱动管理数据源的bean -->
- <bean id="jdbcDataSource"
- class="org.springframework.jdbc.datasource.DriverManagerDataSource">
- <property name="driverClassName" value="com.mysql.jdbc.Driver" />
- <property name="url" value="jdbc:mysql://localhost:3306/sampledb" />
- <property name="username" value="root" />
- <property name="password" value="AdamJin" />
- </bean>
- <!-- 定义jdbc模板Bean -->
- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
- p:dataSource-ref="jdbcDataSource" />
四、业务层
1.建立业务处理类
UserService.java
- package com.adam.service;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.adam.dao.LoginLogDao;
- import com.adam.dao.UserDao;
- import com.adam.domain.LoginLog;
- import com.adam.domain.User;
- @Service
- public class UserService {
- @Autowired
- private UserDao userdao;
- @Autowired
- private LoginLogDao loginLogDao;
- public boolean hasMatchUser(String name, String password) {
- int matchCount = userdao.getMatchCount(name, password);
- return matchCount > 0;
- }
- public User findUserByUsername(String username) {
- return userdao.findUserByName(username);
- }
- public void loginSuccess(User user) {
- user.setCredits(user.getCredits() + 5);
- LoginLog loginLog = new LoginLog();
- loginLog.setUserId(user.getUserId());
- loginLog.setIp(user.getLastIp());
- loginLog.setLoginDate(user.getLastVisit());
- userdao.updateLoginInfo(user);
- loginLogDao.insertLoginLog(loginLog);
- }
- }
2.在spring中装配Service
打开刚建立的applicationContext.xml,在其中添加
- <!-- 扫描包,应用注解 -->
- <context:component-scan base-package="com.adam.service" />
- <!-- 配置事务管理器 -->
- <bean id="transactionManager"
- class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
- p:dataSource-ref="jdbcDataSource" />
- <!-- 通过AOP配置事务增强,让service包下所有Bean的所有方法拥有事务 -->
- <aop:config proxy-target-class="true">
- <aop:pointcut expression="execution(* com.adam.service..*(..))"
- id="serviceMethod" />
- <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethod" />
- </aop:config>
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="*"></tx:method>
- </tx:attributes>
- </tx:advice>
至此后端就算完成了,可以进行单元测试了。
五、单元测试
右击New->Other选择如图,创建单元测试类
TestUserService.java
- package com.adam.test;
- import static org.junit.Assert.*;
- import java.util.Date;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.test.context.ContextConfiguration;
- import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
- import com.adam.domain.User;
- import com.adam.service.UserService;
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations = { "/applicationContext.xml" })
- public class TestUserService {
- @Autowired
- private UserService userService;
- @Test
- public void hasMatchedUser() {
- boolean b1 = userService.hasMatchUser("admin", "123456");
- boolean b2 = userService.hasMatchUser("admin", "1236");
- assertTrue(b1);
- assertTrue(!b2);
- }
- @Test
- public void findUserByUsername(){
- User user = userService.findUserByUsername("admin");
- assertEquals(user.getUserName(), "admin");
- user.setLastIp("192.168.11.188");
- user.setLastVisit(new Date());
- userService.loginSuccess(user);
- }
- }
Run As -> JUnit Test得到以下结果,便测试成功,数据库也会多出登陆日志数据。
六、展示层
业务层和持久层开发任务结束,需要界面提供展示。
1.配置Spring MVC框架
修改web.xml文件
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://java.sun.com/xml/ns/javaee"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
- id="WebApp_ID" version="3.0">
- <!-- 从类路径下载spring配置文件 -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath:applicationContext.xml
- </param-value>
- </context-param>
- <!-- 负责启动spring容器监听器,将引用上面的上下文参数获取spring配置文件地址 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- springMVC主控制servlet -->
- <servlet>
- <servlet-name>adam</servlet-name>
- <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:adam-servlet.xml</param-value>
- </init-param>
- <load-on-startup>2</load-on-startup>
- </servlet>
- <!-- springMVC处理的url -->
- <servlet-mapping>
- <servlet-name>adam</servlet-name>
- <url-pattern>*.html</url-pattern>
- </servlet-mapping>
- </web-app>
注意:上面代码23行若不配置,spring会到WEB-INF下找*-servle.xml,*是servlet配置的name。
adam-servlet.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"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd">
- <!-- 扫描包,应用注解 -->
- <context:component-scan base-package="com.adam.web" />
- <!-- 配置视图解析器 -->
- <bean
- class="org.springframework.web.servlet.view.InternalResourceViewResolver"
- p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/jsp/"
- p:suffix=".jsp" />
- </beans>
2.控制器类
LoginController.java
- package com.adam.web;
- import java.util.Date;
- import javax.servlet.http.HttpServletRequest;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.servlet.ModelAndView;
- import com.adam.domain.User;
- import com.adam.service.UserService;
- @Controller
- public class LoginController {
- @Autowired
- private UserService userService;
- @RequestMapping(value = "/index.html")
- public String loginPage() {
- return "login";
- }
- @RequestMapping(value = "/loginCheck.html")
- public ModelAndView loginCheck(HttpServletRequest request, LoginCommand loginCommand){
- boolean isVaildUser = userService.hasMatchUser(loginCommand.getUsername(), loginCommand.getPassword());
- if(!isVaildUser){
- return new ModelAndView("login", "error", "用户名或密码错误");
- }else{
- User user = userService.findUserByUsername(loginCommand.getUsername());
- user.setLastIp(request.getLocalAddr());
- user.setLastVisit(new Date());
- userService.loginSuccess(user);
- request.getSession().setAttribute("user", user);
- return new ModelAndView("main");
- }
- }
- }
其中需要一个表单pojo
LoginCommand.java
- package com.adam.web;
- public class LoginCommand {
- private String username;
- private String password;
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- }
3.jsp视图页面
在WEB-INF下建立文件夹jsp,并新建以下文件。
login.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <html>
- <head>
- <title>登陆</title>
- </head>
- <body>
- <c:if test="${!empty error}">
- <font color="red"><c:out value="${error}" /></font>
- </c:if>
- <form action="<c:url value="/loginCheck.html"/>" method="post">
- 用户名: <input type="text" name="username"> <br /> 密 码: <input
- type="password" name="password"> <br /> <input type="submit"
- value="提交"> <input type="reset" value="重置">
- </form>
- </body>
- </html>
main.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
- <html>
- <head>
- <title>首页</title>
- </head>
- <body>${user.userName},欢迎您,您的积分是${user.credits}。
- </body>
- </html>
到此,整个实例就完成了。
七、运行
Run As -> Run on Server,输入地址 http://localhost:8080/Chapter2/index.html 便会看到
输入正确的信息即可登录成功
八、源码下载
Maven+Spring+MySql 登陆实例的更多相关文章
- Spring MVC(二)--Spring MVC登陆实例
本文通过一个简单的登陆实例实现Spring MVC的流程,同时整合 MyBatis使用,流程是这样的: 1.访问一个URL进入登陆界面 2.输入正确的用户名和密码,成功则进入index页面,否则留在登 ...
- Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例
Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例 转自:通过注解的方式集成Spring 4 MVC+Hibernate 4+MySQL+Maven,开发项目样例 ...
- Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(二)
然后是项目下的文件:完整的项目请看 上一篇 Maven+Spring+Hibernate+Shiro+Mysql简单的demo框架(一) 项目下的springmvc-servlet.xml配置文件: ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(下)
在上一篇(详解intellij idea 搭建SSM框架(spring+maven+mybatis+mysql+junit)(上))博文中已经介绍了关于SSM框架的各种基础配置,(对于SSM配置不熟悉 ...
- 详解intellij idea搭建SSM框架(spring+maven+mybatis+mysql+junit)(上)
SSM(Spring+SpringMVC+MyBatis)框架集由Spring.SpringMVC.MyBatis三个开源框架整合而成,常作为数据源较简单的web项目的框架. 其中spring是一个轻 ...
- Spring Rabbitmq HelloWorld实例
之前的博客和大家分享了Rabbitmq的基本框架,及其工作原理,网址为 < http://www.cnblogs.com/jun-ma/p/4840869.html >.今天呢,想和大家一 ...
- MyBatis详解 与配置MyBatis+Spring+MySql
MyBatis 是一个可以自定义SQL.存储过程和高级映射的持久层框架.MyBatis 摒除了大部分的JDBC代码.手工设置参数和结果集重获.MyBatis 只使用简单的XML 和注解来配置和映射基本 ...
- Maven入门(含实例教程)
原文地址:http://blog.csdn.net/u013142781/article/details/50316383 Maven这个个项目管理和构建自动化工具,越来越多的开发人员使用它来管理项目 ...
- Java Spring+Mysql+Mybatis 实现用户登录注册功能
前言: 最近在学习Java的编程,前辈让我写一个包含数据库和前端的用户登录功能,通过看博客等我先是写了一个最基础的servlet+jsp,再到后来开始用maven进行编程,最终的完成版是一个 Spri ...
随机推荐
- JMeter—断言
断言用来对服务器的响应数据做验证,常用的断言是响应断言,支持正则表达式. 一.BeanShell Assertion 用来访问JMeter的属性: log对象,可以利用此对象写日志 SampleRes ...
- 使用 webpack 搭建 React 项目
简评:相信很多开发者在入门 react 的时候都是使用 create-react-app 或 react-slingshot 这些脚手架来快速创建应用,当有特殊需求,需要修改 eject 出来的 we ...
- ExclusiveTouch
Setting this property to true causes the receiver to block the delivery of touch events to other vie ...
- JavaScript DOM编程艺术 笔记(二)语句操作
操作 var total = (1+4)*5; year = year +1; year++; var message = "i am" + "girl"; 是 ...
- [原创]Redis 持久化说明及配置
目录 参考链接 介绍 RDB 持久化 优点 缺点 相关配置参数 AOF 持久化 优点 缺点 相关配置参数 参考链接 持久化 Redis命令参考 介绍 Redis 运行时数据保存在内存中, 一旦重启则数 ...
- HTML attribute 与 DOM property 的对比
HTML attribute vs. DOM property 要想理解 Angular 绑定如何工作,重点是搞清 HTML attribute 和 DOM property 之间的区别. attri ...
- 数组合并去重Array.from
function uniqArr(){ if(arguments.length == 0) return []; var arr = arguments[0]; for(var i=1;i<ar ...
- Android表格布局之设置边框
Android表格布局本身没有边框,不过可以通过背景色的设置可以实现表格边框的显示. 首先可以设置TableRow的背景色,然后设置内容的背景色.根据它们的颜色差就出现了边框.只要微调Content与 ...
- git 学习之什么是版本库
什么是版本库? 我们一般把版本库也叫仓库(repository),其实我们可以简单的把它看成一个目录,只不过目录里面的文件都会由 Git 进行管理,当我们对文件进行修改.删除.Git 都可以对其进行跟 ...
- MySql的数据查询
SELECT语句是最常用的查询语句,它的使用方式有些复杂,但功能却相当强大.SELECT语句的基本语法如下: select selection_list//要查询的内容,选择哪些列 from数据表名/ ...