Consulte el ejemplo oficial: http://spring.io/guides/gs/relational-data-access/
1. Preparación del proyecto
Cree una nueva tabla "T_order" después de crear una base de datos MySQL
Establecer extranjeros_key_checks = 0;----------------------------------- La estructura de la tabla para `t_order`-- -------------------------------- Tabla de caída Si existe` t_order`; crea tabla `t_order` (` orden_id` varchar (36) no null, `order_no` varchar (50) predeterminado null,` ordre_date `shural null,` stent (11), `` intento `` 11), `` 11); NULL, Clave primaria (`Order_id`)) Engine = Myisam Default Charset = UTF8;----------------------------------- Registros de T_order-- --------------------------------
Modificar pom.xml
<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.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0. http://maven.apache.org/xsd/maven-4.0.0.xsd "> <modelVersion> 4.0.0 </modelversion> <MoupRupid> com.github.carter659 </groupid> <artifactid> spring04 </artifactID> <PROPESSONDE> 0.0.1-SNAPSHOT </Version> <Artaging> <name> spring04 </name> <sl> http://maven.apache.org </ url> <-parent> <grupid> org.springframework.boot </proupid> <artifactid> spring-boot-starter-parent </artifactid> <version> 1.4.1selease </versión> </reled> <propiedades> <Project.Build.SourceEncoding> UTF-8 </project.Build.SourceEncoding> <java.version> 1.8 </java.version> </propiences> <pendencies> <pendency> <proupid> org.springFrame.Boot </groupId> <Atifactid> spring-boot-sharterweb </artid-wheb </artiMid> <Spendency> <ProupId> org.springframework.boot </proupid> <artifactid> spring-boot-devlools </arfactid> <pectional> true </pectional> </ppectional> <ependency> <grupoD> org.springframework.boot </groupId> <artifactid> spring-starter-thymeleleaf </arthymeleAf </artidence </artence <Spendency> <MoupRoMID> org.springframework.boot </groupid> <artifactID> spring-boot-starter-jdbc </artifactid> </pendency> <pendency> <uproupID> mysql </proupId> <artifactid> mysql-connector-Java </artifactid> <////dependency> <fependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>
2. Escribir archivos de clase:
Modificar app.java
paquete com.github.carter659.spring04; import org.springframework.boot.springapplication; import org.springframework.boot.autoconfigure.springbootapplication;/** * Fuente del blog: http://www.cnblogs.com/goodhelper/ * @author */@SpringBootApplicationPublic Class App {public static void main (string [] args) {springApplication.run (app.class, args); }}Cree un nuevo archivo de operador de datos "Order.java"
paquete com.github.carter659.spring04; import java.util.date;/** * Blog Fuente: http://www.cnblogs.com/goodhelper/ * @author liu dong * */orden de clase pública {ID de cadena pública; cadena pública no; Fecha de fecha pública; Public int Cantidad; /** * OMIT Get Set */}Cree una nueva clase de capa de persistencia de datos "Orderdao.java"
paquete com.github.carter659.spring04; import java.util.arrayList; import java.util.list; import java.util.uuid; import og.springframework.beanss.factory.annotation.aUtowired; import og.springframework.jdbc.jdbctatmplate; org.springframework.jdbc.support.rowset.sqlrowset; import org.springframework.stereotype.Repository;/** * Blog Fuente: http://www.cnblogs.com/goodhelper/ * @author liu dong * */ @repositoryphuse ordenada Jdbctemplate jdbctemplate; Lista pública <sered> findall () {list <ordil> list = new ArrayList <> (); Cadena sql = "select * de t_order"; Sqlrowset filas = jdbctemplate.queryforrowset (sql, nuevo objeto [] {}); while (shows.next ()) {orden orden = nuevo orden (); list.add (orden); orden.id = shows.getString ("orden_id"); orden.no = shows.getString ("Order_no"); orden.date = shows.getDate ("orden_date"); orden.quantity = shows.getInt ("cantidad"); } Lista de retorno; } orden público get (string id) {orden orden = null; Cadena sql = "Seleccionar * de t_order donde orden_id =?"; Sqlrowset filas = jdbctemplate.queryForrowset (sql, nuevo objeto [] {id}); while (shows.next ()) {orden = new Order (); orden.id = shows.getString ("orden_id"); orden.no = shows.getString ("Order_no"); orden.date = shows.getDate ("orden_date"); orden.quantity = shows.getInt ("cantidad"); } orden de retorno; } public String String Insert (Order Order) {String id = uuid.randomuuid (). toString (); Cadena sql = "insertar en t_order (orden_id, orden_no, orden_date, cantidad) valores (?,?,?,?)"; jdbctemplate.update (sql, nuevo objeto [] {id, orden.no, nuevo java.sql.date (orden.date.gettime ()), orden.quantity}); ID de retorno; } Public void Update (pedido de pedido) {String sql = "Update t_order set orden_no =?, orden_date =?, cantidad =? Where Order_id =?"; jdbctemplate.update (sql, nuevo objeto [] {orden.no, new java.sql.date (orden.date.gettime ()), orden.quantity, orden.id}); } public void Delete (ID de cadena) {String sql = "Eliminar de t_order donde ordene_id =?"; jdbctemplate.update (sql, nuevo objeto [] {id}); }}Las operaciones en la base de datos, como su nombre indica:
findall-> consulta todos los datos
Obtener-> Obtener datos a través de ID
insertar-> insertar datos
Actualización-> Modificar datos
Eliminar-> Eliminar datos
Cree un nuevo controlador "MainController.java"
paquete com.github.carter659.spring04; import java.util.hashmap; import java.util.map; import og.springframework.beans.factory.annotation.aUtowired; import og.springFrameWork.stereotpe.controller; import org.springFrame.web.webind. org.springframework.web.bind.annotation.postmapping; import org.springframework.web.bind.annotation.requestbody; import org.springframework.web.bind.annotation.responseBody; import Com.mysql.jdbc.stringutils; @controllerpublic Orderdao Orderdao; @GetMapping ("/") public String index () {return "índice"; } @PostMapping ("/Save") public @ResponseBody Map <String, Object> Save (@RequestBody Order Order) {Map <String, Object> Result = new HashMap <> (); if (stringUtils.isNullorEmpty (orden.id)) orden.id = ordendao.insert (orden); else {ordendao.update (orden); } result.put ("id", orden.id); resultado de retorno; } @PostMapping ("/get") public @ResponseBody Object get (ID de cadena) {return ordendao.get (id); } @PostMapping ("/findall") public @ResponseBody Object findall () {return ordendao.findall (); } @PostMapping ("/delete") public @ResponseBody Map <String, Object> Eliminar (String ID) {MAP <String, Object> Result = new HashMap <> (); ordendao.delete (id); resultado.put ("id", id); resultado de retorno; }}3. Crea una nueva plantilla de Tymeleaf
Cree un nuevo archivo "SRC/Main/Resources/Templates/Index.html"
<! Doctype html> <html xmlns: th = "http://www.thymeleaf.org"> <toad> <meta http-equiv = "content-type" content = "text/html; charset = utf-8"/> <title> play boot de primavera src = "// cdn.bootcss.com/angular.js/1.5.6/angular.min.js"></script><script type =" text/javascript ">/*<! [cdata [*/var app = angular.module ('app', []); app.controller ('principalController', function ($ rootscope, $ scope, $ http) {$ scope.data = {}; $ scope.rows = []; // agrega $ scope.add = function () {$ scope.data = {no: 'No.1234567890', cantidad: 100, 'date' // editar $ scope.edit = function (id) {for (var i en $ scope.rows) {var row = $ scope.rows [i]; == row.id) {$ scope.rows.splice (i, 1); $ scope.del = function (id) {$ http ({url: '/delete? id =' + id, método: 'post',}). éxito (function (r) {// elimina los datos después de la deleción exitoso $ scope.remove (r.id);}); Método: 'Post',}). Success (function (data) {for (var i en $ scope.rows) {var row = $ scope.rows [i]; if (data.id == row.id) {row.no = data.no; row.date = data.date; row.quantity = data.quantity; return;}} $ scope.rows.push (data); // Inicializar los datos de carga $ http ({url: '/findall', método: 'post'}). Success (function (filas) {for (var i en filas) {var fila = filas [i]; $ scope.rows.push (fila);}}); /*]]>**/</script> </head> <body ng-app = "app" ng-Controller = "principal Controller"> <h1> Play Spring Boot-Combinado con JDBC </h1> <h4> <a href = "http://wwww.cnblogs.com/goodhelper/"> de liu dong type = "Botton" value = "add" ng-click = "add ()" /> <input type = "button" value = "save" ng-click = "guardar ()" /> <br /> <br /> <h3> Información de lista: </h3> <input ID = "id" type = "Hidden" ng-model = "data.id" /> <cellspacing = "1 1 1" estilo "estilo" estilo "de fondo:" Hidden "ng-model #a0c6e5 "> <tr> <td> no.: </td> <td> <input id =" no "ng-model =" data.no "/> </td> <td> date: </td> <td> <input id =" date "ng-model =" data.date "/> </td> <td> id = "Cantidad" ng-model = "data.quantity"/> </td> </tr> </table> <br/> <h3> Lista de lista: </h3> <table cellPacing = "1" style = "Color de fondo: #a0c6e5"> <tre style = "Text-Align: Center; Color: #0076C8; Color de fondo: #F4 F4 FFAFF; <td> operación </td> <td> número </td> <td> date </td> <td> cantidad </td> </tr> <ttr ng-prepeat = "fila en las filas" bgcolor = '#f4faff'> <td> <input ng-Click = "editar (row.id)" Valor = "Edit" Type = "Botón"/> <Botón </> <inpire ng-c-cick = "del (row.id)" value = "delete" type = "botón"/> </td> <td> {{row.no}}} </td> <td> {{row.date}} </td> <td> {{{row href = "http://www.cnblogs.com/goodhelper/"> Haga clic para acceder al blog original </a> </body> </html>Use AJAX de AngularJS para llamar al método de fondo del arranque de resorte MV.
4. Conexión de la base de datos
Cree un nuevo archivo "SRC/Main/Resources/Application.Properties"
spring.dataSource.initialize = falspring.datasource.url = jdbc: mysql: // localhost: 3306/dospring.datasource.username = rootspring.datasource.password = spring.datasource.driver-class-name = com.mysql.jdbc.driver
La estructura completa es:
5. Efecto de operación
Ingrese "http: // localhost: 8080/" en su navegador
Agregar datos:
Guardar nuevos datos:
Editar datos:
Eliminar datos:
Eliminar el efecto de la finalización:
Código: https://github.com/carter659/spring-boot-04.git
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.