-
-
数据库增删改查
2018-07-02 21:14:35查询:select * from 表名;增加:insert into 表名(列名,列名) values(?,?);增加:alter table 表名 add 列名 number(6) default 0;删除:delect from 表名 where 行名 = ?;删除:alter table 表名 drop column ...查询:select * from 表名;
增加:insert into 表名(列名,列名) values(?,?);
增加:alter table 表名 add 列名 number(6) default 0;
删除:delect from 表名 where 行名 = ?;
删除:alter table 表名 drop column 列名;
更新: update 表名 set 列名=? where 列名=?;
-
PHP+MySQL 实现数据库增删改查,学生信息管理系统
2019-10-28 16:46:20PHP+MySQL 实现数据库增删改查 通过学生信息管理系统,熟悉PHP+MySQL增删改查,本文介绍了学生信息管理系统。 此项目运行环境:Apache2.4.41 PHP7.3.8 查看演示 ...PHP+MySQL 实现数据库增删改查
通过学生信息管理系统,熟悉PHP+MySQL增删改查,本文介绍了学生信息管理系统。
此项目运行环境:Apache2.4.41 PHP7.3.8
查看演示
备用地址:http://39.105.0.128/PHP/php_mysql_student/
项目地址
https://pan.baidu.com/s/1OQDBoRqOBMH7gBdUF_lcBQ
MySQL数据库创建
建库语句
# 创建数据库
CREATE DATABASE `studb`;
# 使用数据库
USE `studb`;
#创建数据表
CREATE TABLE `student` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL COMMENT '姓名',
`sex` char(2) DEFAULT NULL COMMENT '性别',
`age` varchar(6) DEFAULT NULL COMMENT '年龄',
`edu` varchar(12) DEFAULT NULL COMMENT '学历',
`salary` decimal(10,2) DEFAULT NULL COMMENT '工资',
`bonus` decimal(10,2) DEFAULT NULL COMMENT '奖金',
`city` varchar(32) DEFAULT NULL COMMENT '籍贯',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
#插入测试数据
INSERT INTO `student` VALUES ('1', '测试1', '男', '22', '大专', '4500.00', '1000.00', '广东韶关');
INSERT INTO `student` VALUES ('2', '测试2', '女', '20', '本科', '5000.00', '500.00', '湖南长沙');
INSERT INTO `student` VALUES ('3', '前端1', '女', '22', '大专', '5000.00', '700.00', '湖南郴州');
INSERT INTO `student` VALUES ('4', '前端2', '女', '25', '本科', '8000.00', '200.00', '湖南娄底');
INSERT INTO `student` VALUES ('5', '后台', '男', '22', '专科', '7000.00', '200.00', '湖南郴州');
创建一个学生列表的数据库:
1. 查询数据库
1.1. 创建文件conn.php,保存常量
<?php
// 连接数据库、设置字符集
$link = mysqli_connect('localhost', 'root', 'root', 'studb');
mysqli_set_charset($link, 'utf8');
?>
1.2. 创建入口文件index.html(连接数据库、查询数据)
<?php
//连接数据库
include 'conn.php';
//编写查询sql语句
$sql = 'SELECT * FROM `student`';
//执行查询操作、处理结果集
$result = mysqli_query($link, $sql);
if (!$result) {
exit('查询sql语句执行失败。错误信息:'.mysqli_error($link)); // 获取错误信息
}
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
//编写查询数量sql语句
$sql = 'SELECT COUNT(*) FROM `student`';
//执行查询操作、处理结果集
$n = mysqli_query($link, $sql);
if (!$n) {
exit('查询数量sql语句执行失败。错误信息:'.mysqli_error($link)); // 获取错误信息
}
$num = mysqli_fetch_assoc($n);
//将一维数组的值转换为一个字符串
$num = implode($num);
?>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统</title>
</head>
<style type="text/css">
.wrapper {width: 1000px;margin: 20px auto;}
h1 {text-align: center;}
.add {margin-bottom: 20px;}
.add a {text-decoration: none;color: #fff;background-color: #00CCFF;padding: 6px;border-radius: 5px;}
td {text-align: center;}
</style>
<body background="student.jpg">
<div class="wrapper">
<h1>学生信息管理系统</h1>
<div class="add">
<a href="addStudent.html">添加学生</a> 共<?php echo $num; ?>个学生
</div>
<table width="960" border="1">
<tr>
<th>编号</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>学历</th>
<th>工资</th>
<th>奖金</th>
<th>籍贯</th>
<th>操作</th>
</tr>
<?php
foreach ($data as $key => $value) {
foreach ($value as $k => $v) {
$arr[$k] = $v;
}
echo "<tr>";
echo "<td>{$arr['id']}</td>";
echo "<td>{$arr['name']}</td>";
echo "<td>{$arr['sex']}</td>";
echo "<td>{$arr['age']}</td>";
echo "<td>{$arr['edu']}</td>";
echo "<td>{$arr['salary']}</td>";
echo "<td>{$arr['bonus']}</td>";
echo "<td>{$arr['city']}</td>";
echo "<td>
<a href='javascript:del({$arr['id']})'>删除</a>
<a href='editStudent.php?id={$arr['id']}'>修改</a>
</td>";
echo "</tr>";
// echo "<pre>";
// print_r($arr);
// echo "</pre>";
}
// 关闭连接
mysqli_close($link);
?>
</table>
</div>
<script type="text/javascript">
function del (id) {
if (confirm("确定删除这个学生吗?")){
window.location = "action_del.php?id="+id;
}
}
</script>
</body>
</html>
1.2. 创建图片student.jpg(网页背景图)
页面如图:
2. 添加学生
2.1 创建文件addStudent.htmt
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统</title>
<style type="text/css">
.box {display:table;margin:0 auto;}
h2 {text-align: center;}
.add {margin-bottom: 20px;}
</style>
</head>
<body background="student.jpg">
<!--输出定制表单-->
<div class="box">
<h2>添加学生</h2>
<div class="add">
<form action="action_addStudent.php" method="post" enctype="multipart/form-data">
<table border="1">
<tr><th>姓 名:</th><td><input type="text" name="name" size="25" value=""></td></tr>
<tr><th>性 别:</th><td>
<label><input checked type="radio" name="sex" value="男">男</label>
<label><input type="radio" name="sex" value="女">女</label>
</td></tr>
<tr><th>年 龄:</th><td><input type="text" name="age" size="25" value=""></td></tr>
<tr><th>学 历:</th><td>
<select name="edu" >
<option selected value="">--请选择--</option>
<option value="研究生">研究生</option>
<option value="本科">本科</option>
<option value="专科">专科</option>
<option value="高中">高中</option>
<option value="初中">初中</option>
</select>
</td></tr>
<tr><th>工 资:</th><td><input type="text" name="salary" size="25" value=""></td></tr>
<tr><th>奖 金:</th><td><input type="text" name="bonus" size="25" value=""></td></tr>
<tr><th>籍 贯:</th><td><input type="text" name="city" size="25" value=""></td></tr>
<tr><th></th><td>
<input type="button" onClick="javascript :history.back(-1);" value="返回" >
<input type="reset" value="重置">
<input type="submit" value="提交">
</td></tr>
</table>
</form>
</div>
</div>
</body>
</html>
页面如图:
如果直接提交,不提交任何数据:
3秒后跳回首页:
2.2 创建处理增加新闻的服务端文件action_addStudent.php
<?php
//连接数据库
include 'conn.php';
// 获取增加的学生信息
$name = $_POST['name'];
$sex = $_POST['sex'];
$age = $_POST['age'];
$edu = $_POST['edu'];
$salary = $_POST['salary'];
$bonus = $_POST['bonus'];
$city = $_POST['city'];
//编写预处理sql语句
$sql = "INSERT INTO `student` VALUES(NULL, ?, ?, ?, ?, ?, ?, ?)";
//预处理SQL模板
$stmt = mysqli_prepare($link, $sql);
// 参数绑定,并为已经绑定的变量赋值
mysqli_stmt_bind_param($stmt, 'sssssss', $name, $sex, $age, $edu, $salary, $bonus, $city);
if ($name) {
// 执行预处理(第1次执行)
$result = mysqli_stmt_execute($stmt);
//关闭连接
mysqli_close($link);
if ($result) {
//添加学生成功
//跳转到首页
header("Location:index.php");
}else{
exit('添加学生sql语句执行失败。错误信息:' . mysqli_error($link));
}
}else{
//添加学生失败
//输出提示,跳转到首页
echo "添加学生失败!<br><br>";
header('Refresh: 3; url=index.php'); //3s后跳转
}
3. 删除学生信息
点击删除按钮,通过服务端文件action_del.php进行删除处理
<?php
//连接数据库
include 'conn.php';
$id = $_GET['id'];
//删除指定数据
//编写删除sql语句
$sql = "DELETE FROM student WHERE id={$id}";
//执行查询操作、处理结果集
$result = mysqli_query($link, $sql);
if (!$result) {
exit('查询数据sql语句执行失败。错误信息:'.mysqli_error($link)); // 获取错误信息
}
// 删除完跳转到首页
header("Location:index.php");
页面如图:
js弹出提示信息:
4. 修改学生信息
4.1 点击修改按钮,跳转到文件editStudent.php进行修改处理
<?php
//连接数据库
include 'conn.php';
//获取id
$id = $_GET['id'];
//编写查询sql语句
$sql = "SELECT * FROM `student` WHERE `id`=$id";
//执行查询操作、处理结果集
$result = mysqli_query($link, $sql);
if (!$result) {
exit('查询sql语句执行失败。错误信息:'.mysqli_error($link)); // 获取错误信息
}
$data = mysqli_fetch_all($result, MYSQLI_ASSOC);
//将二维数数组转化为一维数组
foreach ($data as $key => $value) {
foreach ($value as $k => $v) {
$arr[$k]=$v;
}
}
// echo "<pre>";
// var_dump($arr);
// echo "</pre>";
?>
<html>
<head>
<meta charset="UTF-8">
<title>学生信息管理系统</title>
<style type="text/css">
.box {display:table;margin:0 auto;}
h2 {text-align: center;}
.add {margin-bottom: 20px;}
</style>
</head>
<body background="student.jpg">
<!--输出定制表单-->
<div class="box">
<h2>修改学生信息</h2>
<div class="add">
<form action="action_editStudent.php" method="post" enctype="multipart/form-data">
<table border="1">
<tr><th>编 号:</th><td><input type="text" name="id" size="5" value="<?php echo $arr["id"] ?>" readonly="readonly"></td></tr>
<tr><th>姓 名:</th><td><input type="text" name="name" size="25" value="<?php echo $arr["name"] ?>"></td></tr>
<tr><th>性 别:</th><td>
<label><input <?php if ($arr["sex"] == "男") {
echo "checked";
} ?> type="radio" name="sex" value="男">男</label>
<label><input <?php if ($arr["sex"] == "女") {
echo "checked";
} ?> type="radio" name="sex" value="女">女</label>
</td></tr>
<tr><th>年 龄:</th><td><input type="text" name="age" size="25" value="<?php echo $arr["age"] ?>"></td></tr>
<tr><th>学 历:</th><td>
<select name="edu" >
<option <?php if (!$arr["edu"]) {
echo "selected";
} ?> value="">--请选择--</option>
<option <?php if ($arr["edu"] == "研究生") {
echo "selected";
} ?> value="研究生">研究生</option>
<option <?php if ($arr["edu"] == "本科") {
echo "selected";
} ?> value="本科">本科</option>
<option <?php if (!$arr["edu"] == "专科") {
echo "selected";
} ?> value="专科">专科</option>
<option <?php if (!$arr["edu"] == "高中") {
echo "selected";
} ?> value="高中">高中</option>
<option <?php if (!$arr["edu"] == "初中") {
echo "selected";
} ?> value="初中">初中</option>
</select>
</td></tr>
<tr><th>工 资:</th><td><input type="text" name="salary" size="25" value="<?php echo $arr["salary"] ?>"></td></tr>
<tr><th>奖 金:</th><td><input type="text" name="bonus" size="25" value="<?php echo $arr["bonus"] ?>"></td></tr>
<tr><th>籍 贯:</th><td><input type="text" name="city" size="25" value="<?php echo $arr["city"] ?>"></td></tr>
<tr><th></th><td>
<input type="button" onClick="javascript :history.back(-1);" value="返回" >
<input type="submit" value="提交">
</td></tr>
</table>
</form>
</div>
</div>
</body>
</html>
页面如下:
4.2 通过服务端文件action_editStudent.php进行修改处理
<?php
//连接数据库
include 'conn.php';
// 获取修改后的学生信息
$id = $_POST['id'];
$name = $_POST['name'];
$sex = $_POST['sex'];
$age = $_POST['age'];
$edu = $_POST['edu'];
$salary = $_POST['salary'];
$bonus = $_POST['bonus'];
$city = $_POST['city'];
//编写预处理sql语句
$sql = "UPDATE `student`
SET
`name`= ?,
`sex`= ?,
`age`= ?,
`edu`= ?,
`salary`= ?,
`bonus`= ?,
`city`= ?
WHERE `id`= ?";
//预处理SQL模板
$stmt = mysqli_prepare($link, $sql);
// 参数绑定,并为已经绑定的变量赋值
mysqli_stmt_bind_param($stmt, 'ssssssss', $name, $sex, $age, $edu, $salary, $bonus, $city, $id);
if ($name) {
// 执行预处理(第1次执行)
$result = mysqli_stmt_execute($stmt);
//关闭连接
mysqli_close($link);
if ($result) {
//修改学生成功
//跳转到首页
header("Location:index.php");
}else{
exit('修改学生信息sql语句执行失败。错误信息:' . mysqli_error($link));
}
}else{
//修改学生失败
//输出提示,跳转到首页
echo "修改学生失败!<br><br>";
header('Refresh: 3; url=index.php'); //3s后跳转
}
如果将修改的姓名改为空,提交:
输出失败提示:
3秒后跳回首页:
-
IntelliJ Idea SpringBoot 数据库增删改查实例
2016-12-16 20:12:14IntelliJ Idea SpringBoot 数据库增删改查实例#第一个SpringBoot程序 这里使用的开发软件是`IntelliJ Idea`,和`Eclipse`差不太多,界面更炫酷,功能更强大;`And. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.4.2.RELEASE)
SpringBoot
SpringBoot 是 SpringMVC 的升级版,相对于编码、配置、部署和监控方面,会更加简单
微服务
微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务。一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议。
Spring 为 微服务提供了一整套的组件-SpringClound , SpirngBoot 就是该基础。
第一个SpringBoot程序
这里使用的开发软件是
IntelliJ Idea
,和Eclipse
差不太多,界面更炫酷,功能更强大;Android Studio
就是基于IntelliJ
开发的,我之前使用过Android Studio
,它俩界面几乎一样。IntelliJ Idea官网:http://www.jetbrains.com/idea/
配置好 maven, tomcat, jdk 就可以使用了maven配置的中央仓库阿里云镜像
这个地址下载 jar 包的速度,谁用谁知道!
setting.xml
. . <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> . .
使用
IDEA
创建SpringBoot项目我的
IDEA
版本:IntelliJ IDEA 2016.3.1
项目结构为:
项目默认的 maven
pom.xml
文件pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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.jxust</groupId> <artifactId>spirngbootdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spirngbootdemo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
运行
SpirngbootdemoApplication
的main方法,就能开始运行。其他启动方式,请看视频教程http://www.imooc.com/learn/767\
控制台输出:
"C:\Program Files\Java\jdk1.8.0_91\bin\java" .... . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.4.2.RELEASE) 2016-12-16 14:56:52.083 INFO 15872 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup 2016-12-16 14:56:52.215 INFO 15872 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http) 2016-12-16 14:56:52.255 INFO 15872 --- [ main] com.jxust.SpirngbootdemoApplication : Started SpirngbootdemoApplication in 7.795 seconds (JVM running for 9.177)
从这里可以看到 Tomcat 的端口号,因为还没有自定义Controller,所以还没有视图,下面来创建一个输出
Hello SpringBoot!
的视图。创建一个
HelloController
,位于controller
包下HelloController.java
package com.jxust.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; /** * Created by Peng * Time: 2016/12/16 15:45 */ @RestController public class HelloController { @RequestMapping("/hello") public String say(){ return "Hello SpringBoot!"; } }
@RestController
Spring4 之后新加的注解,原来返回json
需要@ResponseBody
配合@Controller
,现在一个顶俩在浏览器中输入
http://localhost:8080/hello
就能输出Hello SpringBoot!
这句话。自定义属性配置
用到的是
application.properties
这个文件配置端口号和访问前缀
application.properties
server.port=8081 server.context-path=/springboot
除了使用
.properties
格式的文件,还可以使用.yml
格式的配置文件(推荐),更加简便application.yml
把原来的
application.properties
文件删除
注意格式,空格不能少获取配置文件中的属性值
我们也可以在配置文件中,配置数据,在 Controller 中获取,比如:
application.yml
server: port: 8081 context-path: /springboot name: 小胖
HelloController 获取配置文件中的值
HelloController.java
.... @RestController public class HelloController { @Value("${name}") private String name; @RequestMapping(value = "/hello",method = RequestMethod.GET) public String say(){ return name; } }
返回的为name的值
配置文件中值配置方式的多样化
配置文件的值可以是多个,也可以是组合,如:
application.yml
name: 小胖 age: 22
或者
application.yml
name: 小胖 age: 22 content: "name: ${name},age: ${age}"
或者
application.yml
server: port: 8081 context-path: /springboot person: name: 小胖 age: 22
前两种配置获取值的方式都是一样的,但是对于这种方式,person 有相应的两个属性,需要这样处理
PersonProperties.java
package com.jxust; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; /** * Created by Peng * Time: 2016/12/16 16:34 */ @Component @ConfigurationProperties(prefix = "person") public class PersonProperties { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
Alt+insert
快捷键提示生成Getter and Setter
pom.xml
需要加入下面的依赖,处理警告<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
HelloController.java
package com.jxust.controller; import com.jxust.PersonProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; /** * Created by Peng * Time: 2016/12/15 20:55 */ @RestController public class HelloController { @Autowired private PersonProperties personProperties; @RequestMapping(value = "/hello",method = RequestMethod.GET) public String say(){ return personProperties.getName()+personProperties.getAge(); } }
关于配置文件
application.yml
的多套配置类似 il8n 文件国际化的配置方式
i18n_en_US.properties
和i18n_zh_CN.properties
这样能解决,需要频繁修改配置的尴尬由
application.yml
配置文件决定使用那套配置文件。application.yml
spring: profiles: active: a
application-a.yml
server: port: 8081 context-path: /springboot person: name: 小雷 age: 21
application-b.yml
server: port: 8081 context-path: /springboot person: name: 小胖 age: 22
SpringBoot增删改查实例
完整的项目结构
Controller的使用
@Controller chu处理http请求 @RestController Spring4 之后新加的注解,原来返回json需要@ResponseBody配合@Controller @RequestMapping 配置url映射
对于 REST 风格的请求
对于 Controller 中的方法上的注解
@RequestMapping(value = "/hello",method = RequestMethod.GET) @RequestMapping(value = "/hello",method = RequestMethod.POST) @RequestMapping(value = "/hello",method = RequestMethod.DELETE) @RequestMapping(value = "/hello",method = RequestMethod.PUT)
SpringBoot 对上面的注解进行了简化
@GetMapping(value = "/girls") @PostMapping(value = "/girls") @PutMapping(value = "/girls/{id}") @DeleteMapping(value = "/girls/{id}")
浏览器需要发送不同方式的请求,可以安装HttpRequester插件,火狐浏览器可以直接搜索该组件安装。
spring-data-jpa
JPA
全称Java Persistence API.JPA
通过JDK 5.0
注解或XML
描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。Hibernate3.2+
、TopLink 10.1.3
以及OpenJPA
都提供了JPA的实现。利用JPA创建MySQL数据库
pom.xml
加入JPA
和MySQL
的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
配置
JPA
和数据库application.yml
spring: profiles: active: a datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/db_person username: root password: root jpa: hibernate: ddl-auto: update show-sql: true
格式很重要
需要自己手动去创建 db_person 数据库创建与数据表对应的实体类Person
Person.java
package com.jxust.entity; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; /** * Created by Peng * Time: 2016/12/16 17:56 */ @Entity public class Person { @Id @GeneratedValue private Integer id; private String name; private Integer age; //必须要有构造函数 public Person() { } public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
运行项目后,查看数据库,会自动创建表 person
mysql> use db_person; Database changed mysql> desc person; +-------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+--------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | age | int(11) | YES | | NULL | | | name | varchar(255) | YES | | NULL | | +-------+--------------+------+-----+---------+----------------+ 3 rows in set (0.09 sec)
接下来就可以进行person表的增删改查了
创建控制器
PersonController.java
首先创建一个接口
PersonRepository
,位于dao
包下,PersonController
调用该接口继承自JpaRepository
的方法,来实现和数据库交互这个
PersonRepository
接口的功能,与SSM框架中 dao 层接口功能有异曲同工之妙;在SSM框架中,Service层通过该接口,间接执行Mybatis数据库映射文件(.xml)里的相应sql语句,执行数据库增删改查的操作。(Mapper自动实现DAO接口)PersonRepository.java
package com.jxust.dao; import com.jxust.entity.Person; import org.springframework.data.jpa.repository.JpaRepository; /** * Created by Peng * Time: 2016/12/16 18:07 */ public interface PersonRepository extends JpaRepository<Person,Integer> { }
PersonController.java
package com.jxust.controller; import com.jxust.dao.PersonRepository; import com.jxust.entity.Person; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import java.util.List; /** * Created by Peng * Time: 2016/12/16 18:04 */ @RestController public class PersonController { @Autowired PersonRepository personRepository; @GetMapping(value = "/person") private List<Person> personList() { return personRepository.findAll(); } }
在数据库中添加两条数据
mysql> select * from person; +----+------+--------+ | id | age | name | +----+------+--------+ | 1 | 23 | 夏洛 | | 2 | 21 | 马冬梅 | +----+------+--------+ 2 rows in set (0.04 sec)
启动项目执行请求
http://localhost:8081/springboot/person
控制台输出的sql语句:
Hibernate: select person0_.id as id1_0_, person0_.age as age2_0_, person0_.name as name3_0_ from person person0_
其他增删改查的方法
PersonController.java
.... /** * 添加一个人员 * * @param name * @param age * @return */ @PostMapping(value = "/person") public Person personAdd(@RequestParam("name") String name, @RequestParam("age") Integer age) { Person person = new Person(); person.setName(name); person.setAge(age); return personRepository.save(person); } /** * 查询一个人员 * * @param id * @return */ @GetMapping(value = "/person/{id}") public Person personFindOne(@PathVariable("id") Integer id) { return personRepository.findOne(id); } /** * 删除一个人员 * * @param id */ @DeleteMapping(value = "/person/{id}") public void personDelete(@PathVariable("id") Integer id) { personRepository.delete(id); } /** * 更新一个人员 * * @param id * @param name * @param age * @return */ @PutMapping(value = "/person/{id}") public Person personUpdate(@PathVariable("id") Integer id, @RequestParam("name") String name, @RequestParam("age") Integer age) { Person person = new Person(); person.setId(id); person.setName(name); person.setAge(age); return personRepository.save(person); }
对应的请求方式为:
查询一个用户:
添加一个用户
删除一个用户(无返回值)
更新一个用户
那么根据年龄查询,可不可以呢。答案是此刻还不行
从控制台的语句可以看出,sql 语句都是根据id来查询的
Hibernate: select person0_.id as id1_0_0_, person0_.age as age2_0_0_, person0_.name as name3_0_0_ from person person0_ where person0_.id=?
根据年龄查询
在
PersonRepository
增加一个方法findByAge(Integer age)
public interface PersonRepository extends JpaRepository<Person,Integer> { /** * 通过年龄来查询 * 方法名固定findByAge * @param age * @return */ public List<Person> findByAge(Integer age); }
在
PersonController
中加入相应的查询方法.... /** * 通过年龄来查询 * @param age * @return */ @GetMapping(value = "/person/age/{age}") public List<Person> personListByAge(@PathVariable("age") Integer age) { return personRepository.findByAge(age); }
输入请求
http://localhost:8081/springboot/person/age/23
,查询年龄为23的人员控制台输出SQL语句:
Hibernate: select person0_.id as id1_0_, person0_.age as age2_0_, person0_.name as name3_0_ from person person0_ where person0_.age=?
事务管理
两条 sql 语句同时在一个方法中执行,为了防止一个 sql 语句执行成功而另一个 sql 语句执行失败,引入了事务管理,需要在方法上加
@Transactional
事务注解事务确保了数据库数据的完整性和一致性
PersonService.java
package com.jxust.service; import com.jxust.dao.PersonRepository; import com.jxust.entity.Person; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.transaction.Transactional; /** * Created by Peng * Time: 2016/12/16 19:30 */ @Service public class PersonService { @Autowired private PersonRepository personRepository; /** * 事务管理测试 * 两条数据同时成功,或者同时不成功 * 保证数据库数据的完整性和一致性 */ @Transactional public void insertTwo(){ Person personA = new Person(); personA.setName("秋雅"); personA.setAge(19); personRepository.save(personA); System.out.print(1/0); Person personB = new Person(); personB.setName("梦特娇"); personB.setAge(25); personRepository.save(personB); } }
在
PersonController
中测试... @Autowired private PersonService personService; ... /** * 事务测试 */ @PostMapping("/person/two") public void personTwo(){ personService.insertTwo(); }
重新运行项目,执行请求 post方式
http://localhost:8081/springboot/person/two
数据库并没有添加第一条数据,说明存在事务管理完整的
PersonController.java
、PersonRepository.java
和pom.xml
PersonController.java
package com.jxust.controller; import com.jxust.dao.PersonRepository; import com.jxust.entity.Person; import com.jxust.service.PersonService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; /** * Created by Peng * Time: 2016/12/16 18:04 */ @RestController public class PersonController { @Autowired PersonRepository personRepository; @Autowired private PersonService personService; /** * 查询所有人员列表 * * @return */ @GetMapping(value = "/person") private List<Person> personList() { return personRepository.findAll(); } /** * 添加一个人员 * * @param name * @param age * @return */ @PostMapping(value = "/person") public Person personAdd(@RequestParam("name") String name, @RequestParam("age") Integer age) { Person person = new Person(); person.setName(name); person.setAge(age); return personRepository.save(person); } /** * 查询一个人员 * * @param id * @return */ @GetMapping(value = "/person/{id}") public Person personFindOne(@PathVariable("id") Integer id) { return personRepository.findOne(id); } /** * 删除一个人员 * * @param id */ @DeleteMapping(value = "/person/{id}") public void personDelete(@PathVariable("id") Integer id) { personRepository.delete(id); } /** * 更新一个人员 * * @param id * @param name * @param age * @return */ @PutMapping(value = "/person/{id}") public Person personUpdate(@PathVariable("id") Integer id, @RequestParam("name") String name, @RequestParam("age") Integer age) { Person person = new Person(); person.setId(id); person.setName(name); person.setAge(age); return personRepository.save(person); } /** * 通过年龄来查询 * @param age * @return */ @GetMapping(value = "/person/age/{age}") public List<Person> personListByAge(@PathVariable("age") Integer age) { return personRepository.findByAge(age); } /** * 事务测试 */ @PostMapping("/person/two") public void personTwo(){ personService.insertTwo(); } }
PersonRepository.java
package com.jxust.dao; import com.jxust.entity.Person; import org.springframework.data.jpa.repository.JpaRepository; import java.util.List; /** * Created by Peng * Time: 2016/12/16 18:07 */ public interface PersonRepository extends JpaRepository<Person,Integer> { /** * 通过年龄来查询 * 方法名固定 * @param age * @return */ public List<Person> findByAge(Integer age); }
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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.jxust</groupId> <artifactId>spirngbootdemo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spirngbootdemo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
源代码下载
-
java连接sql server数据库增删改查
2013-05-24 18:27:28java连接sql server数据库增删改查 -
C#编写简单的数据库增删改查(一)
2017-04-06 13:42:21数据库增删改查 今天我们用C#编写一个简单的数据库的增删改查!简单的数据库增删改查
今天我们用vs2013编写一个简单的数据库的增删改查!
一、新建一个Windows窗体应用程序
1、在设计界面上拖入4个按钮
2、增加4个Form设计界面,分别起名FormInsert、Formdelete、FormUpdate、FormSelect。
3、分别双击增、删、改、查四个按钮,将4个 设计界面链接到主界面上。private void btinsert_Click(object sender, EventArgs e)
{
FormInsert insert = new FormInsert();
insert.Show();
}
private void btdelete_Click(object sender, EventArgs e)
{
FormDelete delete = new FormDelete();
delete.Show();
}
private void btupdate_Click(object sender, EventArgs e)
{
FormUpdate update = new FormUpdate();
update.Show();
}
private void btselect_Click(object sender, EventArgs e)
{
FormSelect select = new FormSelect();
select.Show();
}
二、建立数据库
我用的是SQL Server 2008 R2
1、插入几条数据测试一下是否成功,
插入成功
2、下面我们在FormInsert界面中拖如控件如下图:
3、双击插入按钮进入代码界面。
首先引入头文件using System.Data.SqlClient;
因为数据库中年龄和电话可以为空值,所以我们要判断出入的数据是否含有年龄和电话,还要设置学号和姓名不能为空。
private void btinsert_Click(object sender, EventArgs e) { SqlConnection sqlconnect = new SqlConnection("Data Source=RJ250825;Initial Catalog=pubs;Integrated Security=True"); sqlconnect.Open(); //string a=age.Text; //string phone=phonenumber.Text; if(xuehao.Text=="") { MessageBox.Show("学号不能为空"); }else if (name.Text == "") { MessageBox.Show("姓名不能为空"); } else if(xuehao.Text!=""&&name.Text!="") { string str=""; if (age.Text.Trim().Length==0&&phonenumber.Text.Trim().Length==0) { str = "insert into student(学号,姓名)values(" + xuehao.Text + ",'" + name.Text + "')"; } else if (phonenumber.Text.Trim().Length==0&&age.Text.Trim().Length>0) { str = "insert into student(学号,姓名,年龄)values(" + xuehao.Text + ",'" + name.Text + "',"+age.Text+")"; } else if (phonenumber.Text.Trim().Length>0&& age.Text.Trim().Length==0) { str = "insert into student(学号,姓名,电话)values(" + xuehao.Text + ",'" + name.Text + "'," + phonenumber.Text + ")"; } else if (phonenumber.Text.Trim().Length>0 && age.Text.Trim().Length>0) { str = "insert into student(学号,姓名,年龄,电话)values(" + xuehao.Text + ",'" + name.Text + "'," + age.Text + "," + phonenumber.Text + ")"; } SqlCommand sqlcommand = new SqlCommand(str, sqlconnect); int s = sqlcommand.ExecuteNonQuery(); if (s == 1) { MessageBox.Show("插入成功"); xuehao.Clear(); name.Clear(); age.Clear(); phonenumber.Clear(); this.studentTableAdapter.Fill(this.pubsDataSet.student); } } sqlconnect.Close(); }
可以设置实时将更新的数据显示在DataGridView上
this.studentTableAdapter.Fill(this.pubsDataSet.student);
4、测试数据的插入:
今天先到这里吧!!
-
Java连接Mysql数据库增删改查操作
2017-03-27 10:52:34Java连接Mysql数据库增删改查操作 -
用C语言实现简单的数据库增删改查功能
2011-11-21 08:46:01用C语言实现简单的数据库增删改查功能,dos界面,简单稳定,供学习参考 -
MySQL(4) 数据库增删改查SQL语句(整理集合大全)
2018-09-19 19:07:43查看数据库 show databases; 使用数据库 use 数据库名; 创建数据库 CREATE DATABASE 数据库名; 删除数据库 DROP DATABASE 数据库名; 创建表 create table 表名( 列名1 类型(长度) [约束], 列名2 ... -
Java Web实现MySQL数据库增删改查
2019-11-03 19:20:40JavaWeb案例:实现数据库增删改查功能 一、创建数据库与表 创建JavaWeb项目TestStudent: 1.在WEB-INF里创建lib目录,添加数据库驱动jar包: 2.在web目录里创建META-INF子目录,在里面创建数据源配置文件... -
python操作MySQL数据库增删改查使用MySQLdb
2017-03-15 20:11:44python操作MySQL数据库增删改查,使用MySQL-python -
基于JSP的数据库增删改查实现
2017-10-21 22:05:10基于JSP的数据库增删改查实现 一、JAVA包的设计 包 类 方法 entity PM25 Set,get dao BaseDao getConnection,close PM25Dao findAll, findById,insert, -
PHP+Mysql如何实现数据库增删改查
2020-08-31 15:39:56PHP+Mysql实现数据库增删改查的方法:1、创建入口文件【index.html】连接数据库、查询数据;2、点击增加按钮,通过【addnews.html】添加数据;3、点击删除按钮,通过服务端文件【action-del.php】进行删除。 1. ... -
JavaWeb案例:实现数据库增删改查功能
2019-11-03 19:22:13JavaWeb案例:实现数据库增删改查功能 一、创建数据库与表 二、创建JavaWeb项目db_demo 1、在WEB-INF里创建lib目录,添加数据库驱动jar包 2、在web目录里创建META-INF子目录,在里面创建数据源配置文件... -
Scala操作关系数据库增删改查
2018-07-01 15:30:14Scala操作关系数据库增删改查 1. 引入依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId>... -
数据库增删改查操作
2019-05-18 18:17:11数据库操作 数据库类型 创建和删除数据表 表操作 高级操作 SQL 约束 SQL 日期 SQL 函数 总结 参考 数据库操作 登陆数据库: mysql -h xxx -uroot -p pass 数据库名称 创建数据库: CREATE DATABASE 数据库... -
PHP案例:实现数据库增删改查功能
2018-02-20 08:33:11二、创建数据库与表 1、创建数据库student 2、在数据库里创建student表 (1)表结构 (2)表记录 3、数据库脚本student.sql 二、项目实现步骤 1、在HBuilder里创建普通项目db_demo 2、创建学生类(Student.... -
C#SqlServer数据库增删改查的类
2015-05-16 17:50:57C#SqlServer数据库增删改查的类 -
Ajax+BootStrap+Servlet连接数据库增删改查
2019-11-23 12:12:01文章目录Ajax连接数据库增删改查1、创建web项目导入相关需要的jar包,和mysql的jar包2、使用Ajax需要导入jquery的js库3、导入Bootstrap库4、MVC模式创建controller、dao、entity、service文件夹5、创建连接池连接... -
SQLite数据库增删改查操作
2015-06-23 14:46:45SQLite数据库增删改查操作 一、使用嵌入式关系型SQLite数据库存储数据 在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL、INTEGER、REAL(浮点数字)、TEXT(字符串文本)和BLOB(二进制... -
android 简单SQLite数据库 增删改查(带demo)
2019-03-13 11:01:58android 简单SQLite数据库 增删改查前言demo样式一、新建实体类二、建立数据表操作类GitHub 前言 数据库,记录存储本地数据,必不可少。基本操作增删改查。 接下来介绍一下最基本的数据库操作方法,基本可由这个... -
在C#中使用控件DataGridView实现数据库增删改查
2009-07-06 13:48:17在C#中使用控件DataGridView实现数据库增删改查 -
MyBatis框架操作数据库增删改查基本操作
2019-03-14 18:44:54MyBatis框架操作数据库增删改查基本操作 需要配置一些xml等等,可以去MyBatis中文站点查看引导文档,复制下来修改部门内容即可使用 如有探讨请点击这里与我交流(^U^)ノ~YO 一、准备工作 1、创建maven项目后... -
MySql数据库增删改查常用语句命令
2020-05-03 17:55:40文章目录增删改查语句库操作表操作增删改查实例准备表插入数据修改表数据删除表数据查询表数据常见的MySQL语句命令常见MySQL字段含义 增删改查语句 增删改查的语句命令为: 操作 命令 增 insert 删 delete... -
Java Web实现简单登录、数据库增删改查(用户列表)
2020-04-13 15:29:38Java Web实现简单登录、数据库增删改查(用户列表) Java Web 基础 此文章是笔者初学java web所写的一个小demo 没有经过系统的学习和实战 页面和功能都比较简陋 但作为java web入门还是值得参考一下的 目录结构 ... -
Android SQLite 数据库增删改查dos命令行语句
2017-02-13 10:40:35本篇文章只简单介绍Android SQLite 数据库增删改查的命令行操作,配合数据库截图尽量做到言简意赅通俗易懂。 为了方便大家观看,这里我们通过可视化软件进行命令行操作: 1.增 2.删 删除数据库中... -
Android SQLite数据库增删改查操作的使用
2018-09-14 18:27:38Android SQLite数据库增删改查操作的使用详解 一、简述 SQLite3支持NULL、INTEGER、REAL(浮点数字)、 TEXT(字符串文本)和BLOB(二进制对象)数据类型,虽然它支持的类型只有五种,但实际上sqlite3也接受varchar(n)... -
Java+MyEclipse+Tomcat 详解Servlet和DAO数据库增删改查操作(源码)
2015-05-24 14:11:02该资源主要参考自己的博客http://blog.csdn.net/eastmount/article/details/45936121 讲诉Java+MyEclipse+Tomcat 详解Servlet和DAO数据库增删改查操作,主要包括数据库的操作MySQL。免费基础资源,希望对你有所帮助... -
Android数据库增删改查
2019-01-16 16:03:00在我们Android开发中我们少不了对Android的数据库进行操作,今天做了一个完整的增删改查Demo,还装载了SoundPool作为提示音以及简单的自定义View。 话不多说我们直接看代码 这里我直接使用了简单4个按钮然后去执行...
-
web前端HTML页面,HTML+css+js
-
第四章 选择结构(二)
-
21年新接口自动化测试视频postman教程 零基础接口测试
-
工具软件
-
uni-app实战专题
-
FFmpeg4.3系列之26:视频监控之H265多路摄像头播控项目实战
-
【数据分析-随到随学】数据分析基础及方法论
-
12-autoinstall漏洞补丁_V7.1SP1_2019年9月月度修复包至2020年2月修复包.zip
-
单片机完全学习课程全五季套餐
-
【Datawhale组队打卡】【Day7】第54、59、61题
-
致远A系列流程图H5化自动部署工具
-
打砖块v0.0.1_20210118.zip
-
three.js入门速成
-
thinkphp5.1博客后台实战视频
-
奥利给,从零打造MiniVuex
-
ArcGIS Pro2.6和ArcGIS Enterprise学习
-
11-autoinstall漏洞补丁_V7.1SP1_无月度修复包.zip
-
创建一个一维数组,生成7个随机数【1,32】,添加到一维数据,并且要求数据不重复
-
windows挂载NFS文件系统无法访问/修改文件解决
-
pyechart数据可视化