{"id":551,"date":"2023-03-23T21:19:42","date_gmt":"2023-03-23T13:19:42","guid":{"rendered":""},"modified":"2023-03-23T21:19:42","modified_gmt":"2023-03-23T13:19:42","slug":"Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f","status":"publish","type":"post","link":"https:\/\/bianchenghao6.com\/551.html","title":{"rendered":"Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f"},"content":{"rendered":"


\n <\/head>
\n <\/p>\n

\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f<\/h1>\n<\/p><\/div>\n
\n \u5728\u672c\u8282\u4e2d\uff0c\u6211\u4eec\u5c06\u5f00\u53d1\u4e00\u4e2aCRUD(\u521b\u5efa-\u8bfb\u53d6-\u66f4\u65b0-\u5220\u9664)Web\u5e94\u7528\u7a0b\u5e8f\u3002\u8be5\u5e94\u7528\u7a0b\u5e8f\u5305\u542b\u5b66\u751f\u8868\u5355\uff0c\u8be5\u8868\u5355\u5305\u542bCRUD\u529f\u80fd\uff0c\u4f8b\u5982\u6dfb\u52a0\uff0c\u67e5\u770b\uff0c\u5220\u9664\u548c\u66f4\u65b0\u5b66\u751f\u3002\u5728\u8fd9\u79cd\u96c6\u6210\u4e2d\uff0c\u6211\u4eec\u4f7f\u7528Spring Boot\u5904\u7406\u540e\u7aef\u90e8\u5206\uff0c\u4f7f\u7528Angular\u5904\u7406\u524d\u7aef\u90e8\u5206\u3002\n <\/div>\n

\u5de5\u4f5c\u5e94\u7528\u7a0b\u5e8f<\/h2>\n

\u4e00\u65e6\u6211\u4eec\u5c06\u5e94\u7528\u7a0b\u5e8f\u90e8\u7f72\u5230\u670d\u52a1\u5668\u4e0a\uff0c\u5c31\u4f1a\u5728Web\u6d4f\u89c8\u5668\u4e2d\u751f\u6210\u5b66\u751f\u8868\u683c\u3002 <\/span>
\n \u8be5\u8868\u5355\u6709\u52a9\u4e8e\u6dfb\u52a0\u548c\u67e5\u770b\u5b66\u751f\u3002<\/span>
\n \u70b9\u51fb\u6dfb\u52a0\u5b66\u751f\u94fe\u63a5\u540e\uff0c\u9875\u9762\u4f1a\u91cd\u5b9a\u5411\u5230\u521b\u5efa\u5b66\u751f\u8868\u683c\uff0c\u6211\u4eec\u53ef\u4ee5\u901a\u8fc7\u586b\u5199\u6240\u9700\u7684\u8be6\u7ec6\u4fe1\u606f\u5e76\u63d0\u4ea4\u6765\u6dfb\u52a0\u5b66\u751f\u3002<\/span>
\n \u4f7f\u7528\u67e5\u770b\u5b66\u751f\u94fe\u63a5\uff0c\u6211\u4eec\u53ef\u4ee5\u83b7\u53d6\u73b0\u6709\u5b66\u751f\u7684\u8be6\u7ec6\u4fe1\u606f\u3002\u5728\u8fd9\u91cc\uff0c\u6bcf\u4e2a\u5b66\u751f\u8fd8\u5305\u542b\u66f4\u65b0\u548c\u5220\u9664\u94fe\u63a5\u3002<\/span>
\n \u56e0\u6b64\uff0c\u6211\u4eec\u53ef\u4ee5\u66f4\u65b0\u5b66\u751f\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u4e5f\u53ef\u4ee5\u4ece\u6570\u636e\u5e93\u4e2d\u5220\u9664\u4ed6\u4eec\u3002 <\/span>
\n \u5b8c\u6210\u540e\uff0c\u5728\u7f51\u7edc\u6d4f\u89c8\u5668\u4e2d\u63d0\u4f9bURL http:\/\/localhost: 4200\/\u3002<\/span> <\/p>\n

\u8981\u4f7f\u7528\u7684\u5de5\u5177<\/h2>\n

\u4f7f\u7528\u4efb\u4f55IDE\u6765\u5f00\u53d1Spring\u548cHibernate\u9879\u76ee\u3002\u53ef\u80fd\u662fSTS\/Eclipse\/Netbeans\u3002\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u6b63\u5728\u4f7f\u7528STS(Spring\u5de5\u5177\u5957\u4ef6)\u3002<\/span>
\n \u7528\u4e8e\u6570\u636e\u5e93\u7684MySQL\u3002<\/span>
\n \u4f7f\u7528\u4efb\u4f55IDE\u6765\u5f00\u53d1Angular\u9879\u76ee\u3002\u5b83\u53ef\u80fd\u662fVisual Studio\u4ee3\u7801\/Sublime\u3002\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u6b63\u5728\u4f7f\u7528Visual Studio Code\u3002<\/span>
\n \u670d\u52a1\u5668: Apache Tomcat\/JBoss\/Glassfish\/Weblogic\/Websphere\u3002<\/span> <\/p>\n

\u6211\u4eec\u4f7f\u7528\u7684\u6280\u672f<\/h2>\n
\n \u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u6b63\u5728\u4f7f\u7528\u4ee5\u4e0b\u6280\u672f:\n <\/div>\n

SpringBoot2 <\/span>
\n Hibernate5 <\/span>
\n Angular6 <\/span>
\n MYSQL <\/span> <\/p>\n

\u521b\u5efa\u6570\u636e\u5e93<\/h2>\n
\n \u8ba9\u6211\u4eec\u521b\u5efa\u6570\u636e\u5e93
\n indigo <\/strong>\u3002\u65e0\u9700\u521b\u5efa\u8868\uff0c\u56e0\u4e3aHibernate\u4f1a\u81ea\u52a8\u521b\u5efa\u5b83\u3002\n <\/div>\n

Spring\u6a21\u5757<\/h2>\n
\n \u8ba9\u6211\u4eec\u770b\u770b\u6211\u4eec\u9700\u8981\u9075\u5faa\u7684Spring Boot\u7684\u76ee\u5f55\u7ed3\u6784:\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c1\u5f20 <\/p>\n

\n \u8981\u5f00\u53d1CRUD\u5e94\u7528\u7a0b\u5e8f\uff0c\u8bf7\u6267\u884c\u4ee5\u4e0b\u6b65\u9aa4: -\n <\/div>\n

\u5c06\u4f9d\u8d56\u9879\u6dfb\u52a0\u5230pom.xml\u6587\u4ef6\u3002<\/span> <\/p>\n

\n
\r\n<?xml version=\"1.0\"<\/span> encoding=\"UTF-8\"<\/span>?>\r\n<project xmlns=\"http:\/\/maven.apache.org\/POM\/4.0.0\"<\/span> xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"<\/span>\r\n\txsi:schemaLocation=\"http:\/\/maven.apache.org\/POM\/4.0.0 http:\/\/maven.apache.org\/xsd\/maven-4.0.0.xsd\"<\/span>>\r\n\t<modelVersion>4.0.0<\/modelVersion>\r\n\t<parent>\r\n\t\t<groupId>org.springframework.boot<\/groupId>\r\n\t\t<artifactId>spring-boot-starter-parent<\/artifactId>\r\n\t\t<version>2.1.4.RELEASE<\/version>\r\n\t\t<relativePath\/> <!-- lookup parent from repository -->\r\n\t<\/parent>\r\n\t<groupId>com.main<\/groupId>\r\n\t<artifactId>Student<\/artifactId>\r\n\t<version>0.0.1-SNAPSHOT<\/version>\r\n\t<name>Student<\/name>\r\n\t<description>Demo project for <\/span>Spring Boot<\/description>\r\n\t<properties>\r\n\t\t<java.version>1.8<\/java.version>\r\n\t<\/properties>\r\n\t<dependencies>\r\n\t\r\n\t\t<dependency>\r\n\t\t    <groupId>org.springframework.boot<\/groupId>\r\n\t\t    <artifactId>spring-boot-devtools<\/artifactId>\r\n            <optional>true<\/optional>\r\n\t\t<\/dependency>\r\n\t\r\n\t\t<dependency>\r\n\t\t\t<groupId>org.springframework.boot<\/groupId>\r\n\t\t\t<artifactId>spring-boot-starter-data-jpa<\/artifactId>\r\n\t\t<\/dependency>\r\n\t\t<dependency>\r\n\t\t\t<groupId>org.springframework.boot<\/groupId>\r\n\t\t\t<artifactId>spring-boot-starter-web<\/artifactId>\r\n\t\t<\/dependency>\r\n\t\t<dependency>\r\n\t\t\t<groupId>mysql<\/groupId>\r\n\t\t\t<artifactId>mysql-connector-java<\/artifactId>\r\n\t\t\t<scope>runtime<\/scope>\r\n\t\t<\/dependency>\r\n\t\t<dependency>\r\n\t\t\t<groupId>org.springframework.boot<\/groupId>\r\n\t\t\t<artifactId>spring-boot-starter-test<\/artifactId>\r\n\t\t\t<scope>test<\/scope>\r\n\t\t<\/dependency>\r\n\t<\/dependencies>\r\n\t<build>\r\n\t\t<plugins>\r\n\t\t\t<plugin>\r\n\t\t\t\t<groupId>org.springframework.boot<\/groupId>\r\n\t\t\t\t<artifactId>spring-boot-maven-plugin<\/artifactId>\r\n\t\t\t<\/plugin>\r\n\t\t<\/plugins>\r\n\t<\/build>\r\n<\/project>\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u521b\u5efa\u914d\u7f6e\u7c7b
\u6211\u4eec\u6267\u884c\u57fa\u4e8e\u6ce8\u91ca\u7684\u914d\u7f6e\uff0c\u800c\u4e0d\u662fXML\u3002\u56e0\u6b64\uff0c\u6211\u4eec\u521b\u5efa\u4e00\u4e2a\u7c7bConfig.java\u5e76\u5728\u5176\u4e2d\u6307\u5b9a\u6240\u9700\u7684\u914d\u7f6e\u3002\u4f46\u662f\uff0c\u8fd8\u6709\u4e00\u4e2a\u914d\u7f6e\u7c7bStudentApplication.java\u3002\u6b64\u7c7b\u7531Spring Boot\u81ea\u52a8\u63d0\u4f9b\u3002q<\/span> <\/p>\n

\n Config.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>config;\r\nimport java.util.Properties;\r\nimport javax.sql.DataSource;\r\nimport org.springframework.beans.factory.annotation.Value;\r\nimport org.springframework.boot.autoconfigure.EnableAutoConfiguration;\r\nimport org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;\r\nimport org.springframework.context.annotation.Bean;\r\nimport org.springframework.context.annotation.ComponentScan;\r\nimport org.springframework.context.annotation.ComponentScans;\r\nimport org.springframework.context.annotation.Configuration;\r\nimport org.springframework.jdbc.datasource.DriverManagerDataSource;\r\nimport org.springframework.orm.hibernate5.HibernateTransactionManager;\r\nimport org.springframework.orm.hibernate5.LocalSessionFactoryBean;\r\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\r\nimport org.springframework.web.servlet.view.InternalResourceViewResolver;\r\n@Configuration\r\n@EnableTransactionManagement\r\n@EnableAutoConfiguration(exclude = { HibernateJpaAutoConfiguration.class})\r\n@ComponentScans(value = { @ComponentScan(\"boot.entry\"<\/span>),\r\n\t      @ComponentScan(\"Model\"<\/span>),\r\n\t      @ComponentScan(\"Controller\"<\/span>),\r\n\t      @ComponentScan(\"DAO\"<\/span>),\r\n\t      @ComponentScan(\"Miscallaneous\"<\/span>),\r\n\t      @ComponentScan(\"Service\"<\/span>)})\r\npublic <\/span>class <\/span>Config {\r\n\t @Value(\"${db.driver}\"<\/span>)\r\n\t    private <\/span>String DB_DRIVER;\r\n\t    @Value(\"${db.password}\"<\/span>)\r\n\t    private <\/span>String DB_PASSWORD;\r\n\t    @Value(\"${db.url}\"<\/span>)\r\n\t    private <\/span>String DB_URL;\r\n\t    @Value(\"${db.username}\"<\/span>)\r\n\t    private <\/span>String DB_USERNAME;\r\n\t    @Value(\"${hibernate.dialect}\"<\/span>)\r\n\t    private <\/span>String HIBERNATE_DIALECT;\r\n\t    @Value(\"${hibernate.show_sql}\"<\/span>)\r\n\t    private <\/span>String HIBERNATE_SHOW_SQL;\r\n\t    @Value(\"${hibernate.hbm2ddl.auto}\"<\/span>)\r\n\t    private <\/span>String HIBERNATE_HBM2DDL_AUTO;\r\n\t    @Value(\"${entitymanager.packagesToScan}\"<\/span>)\r\n\t    private <\/span>String ENTITYMANAGER_PACKAGES_TO_SCAN;\r\n\t    @Bean\r\n\t    public <\/span>LocalSessionFactoryBean sessionFactory() {\r\n\t        LocalSessionFactoryBean sessionFactory = new <\/span>LocalSessionFactoryBean();\r\n\t        sessionFactory.setDataSource<\/span>(dataSource());\r\n\t        sessionFactory.setPackagesToScan<\/span>(ENTITYMANAGER_PACKAGES_TO_SCAN);\r\n\t        Properties hibernateProperties = new <\/span>Properties();\r\n\t        hibernateProperties.put<\/span>(\"hibernate.dialect\"<\/span>, HIBERNATE_DIALECT);\r\n\t        hibernateProperties.put<\/span>(\"hibernate.show_sql\"<\/span>, HIBERNATE_SHOW_SQL);\r\n\t        hibernateProperties.put<\/span>(\"hibernate.hbm2ddl.auto\"<\/span>, HIBERNATE_HBM2DDL_AUTO);\r\n\t        sessionFactory.setHibernateProperties<\/span>(hibernateProperties);\r\n\t        return <\/span>sessionFactory;\r\n\t    }\r\n\t    @Bean\r\n\t    public <\/span>DataSource dataSource() {\r\n\t        DriverManagerDataSource dataSource = new <\/span>DriverManagerDataSource();\r\n\t        dataSource.setDriverClassName<\/span>(DB_DRIVER);\r\n\t        dataSource.setUrl<\/span>(DB_URL);\r\n\t        dataSource.setUsername<\/span>(DB_USERNAME);\r\n\t        dataSource.setPassword<\/span>(DB_PASSWORD);\r\n\t        return <\/span>dataSource;\r\n\t    }\r\n\t    @Bean\r\n\t    public <\/span>HibernateTransactionManager transactionManager() {\r\n\t        HibernateTransactionManager txManager = new <\/span>HibernateTransactionManager();\r\n\t        txManager.setSessionFactory<\/span>(sessionFactory().getObject<\/span>());\r\n\t        return <\/span>txManager;\r\n\t    }\r\n\t    \r\n\t    @Bean\r\n\t    public <\/span>InternalResourceViewResolver jspViewResolver() {\r\n\t        InternalResourceViewResolver resolver= new <\/span>InternalResourceViewResolver();\r\n\t        resolver.setPrefix<\/span>(\"\/views\/\"<\/span>);\r\n\t        resolver.setSuffix<\/span>(\".jsp\"<\/span>);\r\n\t        return <\/span>resolver;\r\n\t    } \r\n\t   \r\n\t   \r\n\t   \r\n\t}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\n StudentApplication.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>config;\r\nimport org.springframework.boot.SpringApplication;\r\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\r\n@SpringBootApplication\r\npublic <\/span>class <\/span>StudentApplication {\r\n\tpublic <\/span>static void <\/span>main(String[] args) {\r\n\t\tSpringApplication.run<\/span>(StudentApplication.class, args);\r\n\t}\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u521b\u5efa\u5b9e\u4f53\u7c7b
\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5c06\u521b\u5efa\u4e00\u4e2aEntity\/POJO(\u666e\u901a\u7684\u65e7Java\u5bf9\u8c61)\u7c7b\u3002<\/span> <\/p>\n

\n Student.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>Model;\r\nimport javax.persistence.Entity;\r\nimport javax.persistence.GeneratedValue;\r\nimport javax.persistence.GenerationType;\r\nimport javax.persistence.Id;\r\nimport javax.persistence.Table;\r\n@Entity\r\n@Table(name=\"student\"<\/span>)\r\npublic <\/span>class <\/span>Student {\r\n\t@Id\r\n\t@GeneratedValue(strategy=GenerationType.IDENTITY)\r\n\tprivate <\/span>int <\/span>student_id;\r\n\tprivate <\/span>String student_name;\r\n\tprivate <\/span>String student_email;\r\n\tprivate <\/span>String student_branch;\r\n\tpublic <\/span>int <\/span>getStudent_id() {\r\n\t\treturn <\/span>student_id;\r\n\t}\r\n\tpublic void <\/span>setStudent_id(int <\/span>student_id) {\r\n\t\tthis<\/span>.student_id = student_id;\r\n\t}\r\n\tpublic <\/span>String getStudent_name() {\r\n\t\treturn <\/span>student_name;\r\n\t}\r\n\tpublic void <\/span>setStudent_name(String student_name) {\r\n\t\tthis<\/span>.student_name = student_name;\r\n\t}\r\n\tpublic <\/span>String getStudent_email() {\r\n\t\treturn <\/span>student_email;\r\n\t}\r\n\tpublic void <\/span>setStudent_email(String student_email) {\r\n\t\tthis<\/span>.student_email = student_email;\r\n\t}\r\n\tpublic <\/span>String getStudent_branch() {\r\n\t\treturn <\/span>student_branch;\r\n\t}\r\n\tpublic void <\/span>setStudent_branch(String student_branch) {\r\n\t\tthis<\/span>.student_branch = student_branch;\r\n\t}\r\n\t\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u521b\u5efaDAO\u754c\u9762
\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u6b63\u5728\u521b\u5efaDAO\u754c\u9762\u4ee5\u6267\u884c\u4e0e\u6570\u636e\u5e93\u76f8\u5173\u7684\u64cd\u4f5c\u3002<\/span> <\/p>\n

\n Student_DAO.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>DAO;\r\nimport java.util.List;\r\nimport Model.Student;\r\npublic <\/span>interface Student_DAO {\r\n\tpublic boolean <\/span>saveStudent(Student student);\r\n\tpublic <\/span>List<Student> getStudents();\r\n\tpublic boolean <\/span>deleteStudent(Student student);\r\n\tpublic <\/span>List<Student> getStudentByID(Student student);\r\n\tpublic boolean <\/span>updateStudent(Student student);\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u521b\u5efaDAO\u63a5\u53e3\u5b9e\u73b0\u7c7b<\/span> <\/p>\n

\n Student_DAO_Imp.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>DAO;\r\nimport java.util.List;\r\nimport org.hibernate.Session;\r\nimport org.hibernate.SessionFactory;\r\nimport org.hibernate.query.Query;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Repository;\r\nimport Model.Student;\r\n@Repository\r\npublic <\/span>class <\/span>Student_DAO_Imp  implements <\/span>Student_DAO{\r\n\t@Autowired\r\n\tprivate <\/span>SessionFactory sessionFactory;\r\n\t\r\n\t@Override\r\n\tpublic boolean <\/span>saveStudent(Student student) {\r\n\t\tboolean status=false;\r\n\t\ttry <\/span>{\r\n\t\t\tsessionFactory.getCurrentSession<\/span>().save<\/span>(student);\r\n\t\t\tstatus=true;\r\n\t\t} catch <\/span>(Exception e) {\r\n\t\t\te.printStackTrace<\/span>();\r\n\t\t}\r\n\t\treturn <\/span>status;\r\n\t}\r\n\t@Override\r\n\tpublic <\/span>List<Student> getStudents() {\r\n\t\tSession currentSession = sessionFactory.getCurrentSession<\/span>();\r\n\t\tQuery<Student> query=currentSession.createQuery<\/span>(\"from Student\"<\/span>, Student.class);\r\n\t\tList<Student> list=query.getResultList<\/span>();\r\n\t\treturn <\/span>list;\r\n\t}\r\n\t@Override\r\n\tpublic boolean <\/span>deleteStudent(Student student) {\r\n\t\tboolean status=false;\r\n\t\ttry <\/span>{\r\n\t\t\tsessionFactory.getCurrentSession<\/span>().delete<\/span>(student);\r\n\t\t\tstatus=true;\r\n\t\t} catch <\/span>(Exception e) {\r\n\t\t\te.printStackTrace<\/span>();\r\n\t\t}\r\n\t\treturn <\/span>status;\r\n\t}\r\n\t@Override\r\n\tpublic <\/span>List<Student> getStudentByID(Student student) {\r\n\t\tSession currentSession = sessionFactory.getCurrentSession<\/span>();\r\n\t\tQuery<Student> query=currentSession.createQuery<\/span>(\"from Student where student_id=:student_id\"<\/span>, Student.class);\r\n\t\tquery.setParameter<\/span>(\"student_id\"<\/span>, student.getStudent_id<\/span>());\r\n\t\tList<Student> list=query.getResultList<\/span>();\r\n\t\treturn <\/span>list;\r\n\t}\r\n\t@Override\r\n\tpublic boolean <\/span>updateStudent(Student student) {\r\n\t\tboolean status=false;\r\n\t\ttry <\/span>{\r\n\t\t\tsessionFactory.getCurrentSession<\/span>().update<\/span>(student);\r\n\t\t\tstatus=true;\r\n\t\t} catch <\/span>(Exception e) {\r\n\t\t\te.printStackTrace<\/span>();\r\n\t\t}\r\n\t\treturn <\/span>status;\r\n\t}\r\n\t\r\n\t\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u521b\u5efa\u670d\u52a1\u5c42\u63a5\u53e3<\/span> <\/p>\n

\n \u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u6b63\u5728\u521b\u5efa\u4e00\u4e2a\u670d\u52a1\u5c42\u63a5\u53e3\uff0c\u5145\u5f53DAO\u548c\u5b9e\u4f53\u7c7b\u4e4b\u95f4\u7684\u6865\u6881\u3002\n <\/div>\n
\n Student_Service.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>Service;\r\nimport java.util.List;\r\nimport Model.Student;\r\npublic <\/span>interface Student_Service {\r\n\t\r\n\tpublic boolean <\/span>saveStudent(Student student);\r\n\tpublic <\/span>List<Student> getStudents();\r\n\tpublic boolean <\/span>deleteStudent(Student student);\r\n\tpublic <\/span>List<Student> getStudentByID(Student student);\r\n\tpublic boolean <\/span>updateStudent(Student student);\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u521b\u5efa\u670d\u52a1\u5c42\u5b9e\u73b0\u7c7b<\/span> <\/p>\n

\n Student_Service_Imp.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>Service;\r\nimport java.util.List;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.stereotype.Service;\r\nimport org.springframework.transaction.annotation.Transactional;\r\nimport DAO.Student_DAO;\r\nimport Model.Student;\r\n@Service\r\n@Transactional\r\npublic <\/span>class <\/span>Student_Service_Imp implements <\/span>Student_Service {\r\n \r\n\t@Autowired\r\n\tprivate <\/span>Student_DAO studentdao;\r\n\t\r\n\t@Override\r\n\tpublic boolean <\/span>saveStudent(Student student) {\r\n\t\treturn <\/span>studentdao.saveStudent<\/span>(student);\r\n\t}\r\n\t@Override\r\n\tpublic <\/span>List<Student> getStudents() {\r\n\t\treturn <\/span>studentdao.getStudents<\/span>();\r\n\t}\r\n\t@Override\r\n\tpublic boolean <\/span>deleteStudent(Student student) {\r\n\t\treturn <\/span>studentdao.deleteStudent<\/span>(student);\r\n\t}\r\n\t@Override\r\n\tpublic <\/span>List<Student> getStudentByID(Student student) {\r\n\t\treturn <\/span>studentdao.getStudentByID<\/span>(student);\r\n\t}\r\n\t@Override\r\n\tpublic boolean <\/span>updateStudent(Student student) {\r\n\t\treturn <\/span>studentdao.updateStudent<\/span>(student);\r\n\t}\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u521b\u5efa\u63a7\u5236\u5668\u7c7b<\/span> <\/p>\n

\n Controller.java <\/strong>\n <\/div>\n
\n
\r\npackage <\/span>Controller;\r\nimport java.util.List;\r\nimport org.springframework.beans.factory.annotation.Autowired;\r\nimport org.springframework.web.bind.annotation.CrossOrigin;\r\nimport org.springframework.web.bind.annotation.DeleteMapping;\r\nimport org.springframework.web.bind.annotation.GetMapping;\r\nimport org.springframework.web.bind.annotation.PathVariable;\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\nimport Model.Student;\r\nimport Service.Student_Service;\r\n@RestController\r\n@CrossOrigin(origins=\"http:\/\/localhost:4200\"<\/span>)\r\n@RequestMapping(value=\"\/api\"<\/span>)\r\npublic <\/span>class <\/span>Controller {\r\n\t\r\n\t@Autowired\r\n\tprivate <\/span>Student_Service studentservice;\r\n\t\r\n\t@PostMapping(\"save-student\"<\/span>)\r\n\tpublic boolean <\/span>saveStudent(@RequestBody Student student) {\r\n\t\t return <\/span>studentservice.saveStudent<\/span>(student);\r\n\t\t\r\n\t}\r\n\t\r\n\t@GetMapping(\"students-list\"<\/span>)\r\n\tpublic <\/span>List<Student> allstudents() {\r\n\t\t return <\/span>studentservice.getStudents<\/span>();\r\n\t\t\r\n\t}\r\n\t\r\n\t@DeleteMapping(\"delete-student\/{student_id}\"<\/span>)\r\n\tpublic boolean <\/span>deleteStudent(@PathVariable(\"student_id\"<\/span><\/span><\/span>) int <\/span>student_id,Student student) {\r\n\t\tstudent.setStudent_id<\/span>(student_id);\r\n\t\treturn <\/span>studentservice.deleteStudent<\/span>(student);\r\n\t}\r\n\t@GetMapping(\"student\/{student_id}\"<\/span>)\r\n\tpublic <\/span>List<Student> allstudentByID(@PathVariable(\"student_id\") int <\/span>student_id,Student student) {\r\n\t\t student.setStudent_id<\/span>(student_id);\r\n\t\t return <\/span>studentservice.getStudentByID<\/span>(student);\r\n\t\t\r\n\t}\r\n\t\r\n\t@PostMapping(\"update-student\/{student_id}\"<\/span>)\r\n\tpublic boolean <\/span>updateStudent(@RequestBody Student student,@PathVariable(\"student_id\") int <\/span>student_id) {\r\n\t\tstudent.setStudent_id<\/span>(student_id);\r\n\t\treturn <\/span>studentservice.updateStudent<\/span>(student);\r\n\t}\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u7f16\u8f91application.properties\u6587\u4ef6
\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u6b63\u5728\u7f16\u8f91 src\/main\/resources <\/strong>\u6587\u4ef6\u5939\u4e2d\u7684 application.properties <\/strong>\u6587\u4ef6\u3002\u4ee5\u4e0b\u6587\u4ef6\u5305\u542b\u914d\u7f6e\u5c5e\u6027\u3002<\/span> <\/p>\n

\n application.properties <\/strong>\n <\/div>\n
\n
\r\n# Database<\/span>\r\ndb.driver= com.mysql.jdbc.Driver\r\ndb.url= jdbc:mysql:\/\/localhost:3306\/indigo\r\ndb.username=root\r\ndb.password=\r\n# Hibernate<\/span>\r\nhibernate.dialect=org.hibernate.dialect.MySQL5Dialect\r\nhibernate.show_sql=true\r\nhibernate.hbm2ddl.auto=update\r\nentitymanager.packagesToScan=Model\r\n<\/pre>\n

<\/code>\n <\/div>\n

Angular\u6a21\u5757<\/h2>\n
\n \u8ba9\u6211\u4eec\u770b\u770bAngular\u7684\u76ee\u5f55\u7ed3\u6784:\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c2\u5f20
\n \u521b\u5efa\u4e00\u4e2aAngular\u9879\u76ee<\/span> <\/p>\n

\n \u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa\u4e00\u4e2aAngular\u9879\u76ee:\n <\/div>\n
\n ng\u65b0\u7684Angular <\/em>\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c3\u5f20
\n

\n Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c4\u5f20 <\/p>\n

\n \u6b64\u5904\uff0c
\n Angular <\/strong>\u662f\u9879\u76ee\u7684\u540d\u79f0\u3002\n <\/div>\n

\u5b89\u88c5Bootstrap CSS\u6846\u67b6<\/h2>\n
\n \u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\n <\/div>\n
\n npm install bootstrap@3.3.7 --save <\/em>\n <\/div>\n
\n \u73b0\u5728\uff0c\u5728style.css\u4e2d\u5305\u542b\u4ee5\u4e0b\u4ee3\u7801\u6587\u4ef6\u3002\n <\/div>\n
\n
\r\n@import \"~bootstrap\/dist\/css\/bootstrap.css\"<\/span>;\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u5b89\u88c5Angular-DataTable <\/h2>\n
\n \u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u5728\u9879\u76ee\u4e2d\u5b89\u88c5Angular\u6570\u636e\u8868\u3002\n <\/div>\n
\n npm install Angular-datatable --save <\/em>\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c5\u5f20 <\/p>\n

\n \u5fc5\u987b\u5305\u542b
\n app.module.ts <\/strong>\u6587\u4ef6\u7684\u5bfc\u5165\u6570\u7ec4\u4e2d\u7684DataTableModule <\/strong>\u3002\n <\/div>\n

\u751f\u6210\u7ec4\u4ef6
\u5728Visual Studio\u4e2d\u6253\u5f00\u9879\u76ee\uff0c\u7136\u540e\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u751f\u6210Angular\u7ec4\u4ef6:
ng gc AddStudent <\/em>
ng gc StudentList <\/em> <\/span>
\n Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c6\u5f20 <\/p>\n

\n \u6211\u4eec\u8fd8\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa\u670d\u52a1\u7c7b: -\n <\/div>\n
\n ng gs\u5b66\u751f<\/em>\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c7\u5f20
\n \u7f16\u8f91 app.module.ts <\/strong>\u6587\u4ef6 \u5bfc\u5165\u8def\u7531<\/strong>-\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u6b63\u5728\u5bfc\u5165\u8def\u7531\u6587\u4ef6(app-routing.module.ts)\uff0c\u5e76\u5c06\u5176\u5305\u542b\u5728imports\u6570\u7ec4\u4e2d\u3002<\/span> \u5bfc\u5165ReactiveFormsModule <\/strong>-\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u5c06\u5bfc\u5165 ReactiveFormsModule <\/strong>\u7528\u4e8e\u53cd\u5e94\u5f62\u5f0f\uff0c\u5e76\u5728imports\u6570\u7ec4\u4e2d\u6307\u5b9a\u5b83\u3002<\/span> \u5bfc\u5165HttpModule <\/strong>-\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u4e3a\u670d\u52a1\u5668\u8bf7\u6c42\u5bfc\u5165 HttpModule <\/strong>\uff0c\u5e76\u5728import\u6570\u7ec4\u4e2d\u6307\u5b9a\u5b83\u3002<\/span> \u6ce8\u518c\u670d\u52a1\u7c7b<\/strong>-\u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u63d0\u5230\u4e86\u63d0\u4f9b\u8005\u6570\u7ec4\u4e2d\u7684\u670d\u52a1\u7c7b\u3002 <\/span> <\/span> <\/p>\n

\n
\r\nimport { BrowserModule } from '@angular\/platform-browser'<\/span>;\r\nimport { NgModule } from '@angular\/core'<\/span>;\r\nimport { AppRoutingModule } from '.\/app-routing.module'<\/span>;\r\nimport { AppComponent } from '.\/app.component'<\/span>;\r\nimport { FormsModule, ReactiveFormsModule } from '@angular\/forms'<\/span>;\r\nimport { HttpClientModule } from '@angular\/common\/http'<\/span>;\r\nimport {DataTablesModule} from 'angular-datatables'<\/span>;\r\nimport { StudentListComponent } from '.\/student-list\/student-list.component'<\/span>;\r\nimport { AddStudentComponent } from '.\/add-student\/add-student.component'<\/span>;\r\n@NgModule({\r\n  declarations: [\r\n    AppComponent,\r\n    StudentListComponent,\r\n    AddStudentComponent,\r\n  ],\r\n  imports: [\r\n    BrowserModule,\r\n    AppRoutingModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    HttpClientModule,\r\n    DataTablesModule\r\n  ],\r\n  providers: [],\r\n  bootstrap: [AppComponent]\r\n})\r\nexport class <\/span>AppModule { }\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u7f16\u8f91 app-routing.module.ts <\/strong>\u6587\u4ef6<\/span> <\/p>\n

\n
\r\nimport { NgModule } from '@angular\/core'<\/span>;\r\nimport { Routes, RouterModule } from '@angular\/router'<\/span>;\r\nimport { StudentListComponent } from '.\/student-list\/student-list.component'<\/span>;\r\nimport { AddStudentComponent } from '.\/add-student\/add-student.component'<\/span>;\r\nconst routes: Routes = [\r\n  { path: ''<\/span>, redirectTo: 'view-student'<\/span><\/span>, pathMatch: 'full'<\/span> },\r\n  { path: 'view-student', component: StudentListComponent },\r\n  { path: 'add-student'<\/span>, component: AddStudentComponent },\r\n];\r\n@NgModule({\r\n  imports: [RouterModule.forRoot<\/span>(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class <\/span>AppRoutingModule { }\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u7f16\u8f91 app.component.html <\/strong>\u6587\u4ef6<\/span> <\/p>\n

\n
\r\n    <div  class=\"container-fluid\"<\/span>>\r\n    <nav class=\"navbar navbar-expand-sm bg-dark navbar-dark\"<\/span>>\r\n        <ul class=\"navbar-nav\"<\/span>>\r\n          <li class=\"nav-item \"<\/span>>\r\n            <a routerLink=\"view-student\"<\/span> class=\"nav-link\"<\/span><\/span> class=\"btn btn-primary active\"<\/span><\/span> role=\"button\"<\/span><\/span> >View Student<\/a>\r\n          <\/li> \r\n          <li class=\"nav-item\"<\/span>>\r\n            <a  routerLink=\"add-student\"<\/span> class=\"nav-link\" class=\"btn btn-primary active\" role=\"button\" >Add Student<\/a>\r\n          <\/li>          \r\n        <\/ul>\r\n      <\/nav>   \r\n        <router-outlet><\/router-outlet>\r\n    <\/div>\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u521b\u5efa Student.ts <\/strong>\u7c7b<\/span> <\/p>\n

\n \u8ba9\u6211\u4eec\u4f7f\u7528\u4ee5\u4e0b\u547d\u4ee4\u521b\u5efa\u8bfe\u7a0b: -\n <\/div>\n
\n ng g class Student <\/em>\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c8\u5f20 <\/p>\n

\n \u73b0\u5728\uff0c\u5728
\n Student <\/strong>\u7c7b\u4e2d\u6307\u5b9a\u5fc5\u586b\u5b57\u6bb5\u3002\n <\/div>\n
\n
\r\nexport class <\/span>Student {\r\n    student_id:number;\r\n    student_name:String;\r\n    student_email:String;\r\n    student_branch:String;\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\n \u6b64\u7c7b\u7684\u76ee\u7684\u662f\u5c06\u6307\u5b9a\u7684\u5b57\u6bb5\u4e0eSpring\u5b9e\u4f53\u7c7b\u7684\u5b57\u6bb5\u8fdb\u884c\u6620\u5c04\u3002\n <\/div>\n

\u7f16\u8f91 student.service.ts <\/strong>\u6587\u4ef6<\/span> <\/p>\n

\n
\r\nimport { Injectable } from '@angular\/core'<\/span>;\r\nimport { HttpClient } from '@angular\/common\/http'<\/span>;\r\nimport { Observable } from 'rxjs'<\/span>;\r\n@Injectable({\r\n  providedIn: 'root'<\/span>\r\n})\r\nexport class <\/span>StudentService {\r\n  private <\/span>baseUrl = 'http:\/\/localhost:8080\/api\/'<\/span>;\r\n  constructor(private <\/span>http:HttpClient) { }\r\n  getStudentList(): Observable<any> {\r\n    return <\/span>this<\/span>.http.get<\/span>(`${this<\/span>.baseUrl}`+'students-list'<\/span>);\r\n  }\r\n  createStudent(student: object): Observable<object> {\r\n    return <\/span>this<\/span>.http.post<\/span>(`${this<\/span>.baseUrl}`+'save-student'<\/span>, student);\r\n  }\r\n  deleteStudent(id: number): Observable<any> {\r\n    return <\/span>this<\/span>.http.delete<\/span>(`${this<\/span>.baseUrl}\/delete-student\/${id}`, { responseType: 'text'<\/span> });\r\n  }\r\n  getStudent(id: number): Observable<Object> {\r\n    return <\/span>this<\/span>.http.get<\/span>(`${this<\/span>.baseUrl}\/student\/${id}`);\r\n  }\r\n  updateStudent(id: number, value: any): Observable<Object> {\r\n    return <\/span>this<\/span>.http.post<\/span>(`${this<\/span>.baseUrl}\/update-student\/${id}`, value);\r\n  }\r\n  \r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u7f16\u8f91 add-student.component.ts <\/strong>\u6587\u4ef6<\/span> <\/p>\n

\n
\r\nimport { Component, OnInit } from '@angular\/core'<\/span>;\r\nimport { StudentService } from '..\/student.service'<\/span>;\r\nimport {FormControl,FormGroup,Validators} from '@angular\/forms'<\/span>;\r\nimport { Student } from '..\/student'<\/span>;\r\n@Component({\r\n  selector: 'app-add-student'<\/span>,\r\n  templateUrl: '.\/add-student.component.html'<\/span>,\r\n  styleUrls: ['.\/add-student.component.css'<\/span>]\r\n})\r\nexport class <\/span>AddStudentComponent implements <\/span>OnInit {\r\n  constructor(private <\/span>studentservice:StudentService) { }\r\n  student : Student=new Student();\r\n  submitted = false<\/span>;\r\n  ngOnInit() {\r\n    this<\/span>.submitted=false;\r\n  }\r\n  studentsaveform=new FormGroup({\r\n    student_name:new FormControl(''<\/span><\/span> , [Validators.required , Validators.minLength<\/span>(5) ] ),\r\n    student_email:new FormControl('',[Validators.required,Validators.email]),\r\n    student_branch:new FormControl()\r\n  });\r\n  saveStudent(saveStudent){\r\n    this<\/span>.student=new Student<\/span>();   \r\n    this<\/span>.student.student_name=this<\/span>.StudentName.value;\r\n    this<\/span>.student.student_email=this<\/span>.StudentEmail.value;\r\n    this<\/span>.student.student_branch=this<\/span>.StudentBranch.value;\r\n    this<\/span>.submitted = true<\/span><\/span>;\r\n    this<\/span>.save<\/span>();\r\n  }\r\n  \r\n  save() {\r\n    this<\/span>.studentservice.createStudent<\/span>(this<\/span>.student)\r\n      .subscribe<\/span>(data => console.log<\/span>(data), error => console.log<\/span>(error));\r\n    this<\/span>.student = new <\/span>Student<\/span>();\r\n  }\r\n  get StudentName(){\r\n    return <\/span>this<\/span>.studentsaveform.get<\/span>('student_name'<\/span>);\r\n  }\r\n  get StudentEmail(){\r\n    return <\/span>this<\/span>.studentsaveform.get<\/span>('student_email'<\/span>);\r\n  }\r\n  get StudentBranch(){\r\n    return <\/span>this<\/span>.studentsaveform.get<\/span>('student_branch'<\/span>);\r\n  }\r\n  addStudentForm(){\r\n    this<\/span>.submitted=false;\r\n    this<\/span>.studentsaveform.reset<\/span>();\r\n  }\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u7f16\u8f91 add-student.component.html <\/strong>\u6587\u4ef6<\/span> <\/p>\n

\n
\r\n<h3>Create Student<\/h3>\r\n<div class=\"row\"<\/span><\/span>>\r\n  <div class=\"col-sm-4\"<\/span><\/span><\/span><\/span><\/span><\/span>><\/div>\r\n  <div class=\"col-sm-4\" >\r\n    <div [hidden]=\"submitted\"<\/span> style=\"width: 400px;\"<\/span>>\r\n      <form [formGroup]=\"studentsaveform\"<\/span> #savestudent (ngSubmit)=\"saveStudent(saveStudent)\"<\/span>><\/span>\r\n          <div class=\"form-group\"<\/span><\/span><\/span>>\r\n              <label for=\"name\"<\/span><\/span>>Student Name<\/label>\r\n              <input type=\"text\"<\/span><\/span> class=\"form-control\"<\/span><\/span><\/span>  formControlName=\"student_name\"<\/span> data-toggle=\"tooltip\"<\/span><\/span><\/span> \r\n                 data-placement=\"right\"<\/span><\/span><\/span> title=\"Enter Student Name\"<\/span> >\r\n              <div class=\"alert alert-danger\"<\/span><\/span> *ngif <\/span>= \"(StudentName.touched) && <\/span>(StudentName.invalid)\"<\/span> \r\n                style=\"margin-top: 5px;\"<\/span><\/span>>\r\n                  <span *ngIf=\"StudentName.errors.required\"<\/span>>Student Name is Required<\/span>\r\n                    <span *ngif <\/span>= \"StudentName.errors.minlength\"<\/span>> \r\n                        MinLength Error \r\n                    <\/span>                   \r\n                <\/div>\r\n          <\/div>\r\n  \r\n          <div class=\"form-group\">\r\n              <label for=\"name\">Student Email<\/label>\r\n              <input type=\"text\" class=\"form-control\" formControlName=\"student_email\"<\/span> \r\n                data-toggle=\"tooltip\" data-placement=\"right\" title=\"Enter Student Email\"<\/span>>\r\n                <div class=\"alert alert-danger\" *ngif <\/span>= \"(StudentEmail.touched) && <\/span>(StudentEmail.invalid)\"<\/span> \r\n                style=\"margin-top: 5px;\">\r\n                  <span *ngIf=\"StudentEmail.errors.required\"<\/span>>Student Email is Required<\/span>\r\n                    <span *ngif <\/span>= \"StudentEmail.errors.email\"<\/span>> \r\n                        Invalid Email Format \r\n                    <\/span>                   \r\n                <\/div>\r\n          <\/div>\r\n  \r\n          <div class=\"form-group\">\r\n              <label for=\"branch\"<\/span>>Student Branch<\/label>\r\n                <select class=\"form-control\" formControlName=\"student_branch\"<\/span> data-toggle=\"tooltip\" \r\n                      data-placement=\"right\" title=\"Select Student Branch\"<\/span>>\r\n                    <option value=\"null\"<\/span>>--Select Branch--<\/option>\r\n                  <option value=\"B-Tech\"<\/span>>B-Tech<\/option>\r\n                  <option value=\"BCA\"<\/span>>BCA<\/option>\r\n                  <option value=\"MCA\"<\/span>>MCA<\/option>\r\n                  <option value=\"M-Tech\"<\/span>>M-Tech<\/option>\r\n                <\/select>\r\n          <\/div>\r\n  \r\n          <button type=\"submit\"<\/span> class=\"btn btn-success\"<\/span>>Submit<\/button>\r\n      <\/form>\r\n  <\/div>\r\n  <\/div>\r\n  <div class=\"col-sm-4\"><\/div>\r\n<\/div>\r\n<div class=\"row\">\r\n  <div class=\"col-sm-4\"><\/div>\r\n  <div class=\"col-sm-4\">\r\n      <div [hidden]=\"!submitted\"<\/span>>\r\n         <h4>Student Added SuccessFully!<\/h4>\r\n         <button (click)=\"addStudentForm()\"<\/span> class='btn btn-primary'<\/span>>Add More Student<\/button>\r\n      <\/div>      \r\n  <\/div>\r\n  <div class=\"col-sm-4\"><\/div>\r\n<\/div>\r\n<\/pre>\n

<\/code>\n <\/div>\n

\n \u5355\u51fb
\n \u6dfb\u52a0\u5b66\u751f<\/strong>\u65f6\uff0c\u5c06\u751f\u6210\u4ee5\u4e0b\u9875\u9762:\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c9\u5f20 <\/p>\n

\n \u73b0\u5728\uff0c\u586b\u5199\u6240\u9700\u7684\u8be6\u7ec6\u4fe1\u606f\uff0c\u7136\u540e\u63d0\u4ea4\u4ee5\u6dfb\u52a0\u5b66\u751f\u3002\n <\/div>\n

\u7f16\u8f91 student-list.component.ts <\/strong>\u6587\u4ef6<\/span> <\/p>\n

\n
\r\nimport { Component, OnInit } from '@angular\/core'<\/span>;\r\nimport { StudentService } from '..\/student.service'<\/span>;\r\nimport { Student } from '..\/student'<\/span>;\r\nimport { Observable,Subject } from \"rxjs\"<\/span>;\r\nimport {FormControl,FormGroup,Validators} from '@angular\/forms'<\/span>;\r\n@Component({\r\n  selector: 'app-student-list'<\/span>,\r\n  templateUrl: '.\/student-list.component.html'<\/span>,\r\n  styleUrls: ['.\/student-list.component.css'<\/span>]\r\n})\r\nexport class <\/span>StudentListComponent implements <\/span>OnInit {\r\n constructor(private <\/span>studentservice:StudentService) { }\r\n  studentsArray: any[] = [];\r\n  dtOptions: DataTables.Settings = {};\r\n  dtTrigger: Subject<any>= new <\/span>Subject();\r\n  students: Observable<Student[]>;\r\n  student : Student=new Student();\r\n  deleteMessage=false;\r\n  studentlist:any;\r\n  isupdated = false<\/span>;    \r\n \r\n  ngOnInit() {\r\n    this<\/span>.isupdated=false;\r\n    this<\/span>.dtOptions = {\r\n      pageLength: 6,\r\n      stateSave:true,\r\n      lengthMenu:[[6, 16, 20, -1], [6, 16, 20, \"All\"<\/span>]],\r\n      processing: true<\/span><\/span>\r\n    };   \r\n    this<\/span>.studentservice.getStudentList<\/span>().subscribe<\/span>(data =>{\r\n    this<\/span>.students =data;\r\n    this<\/span>.dtTrigger.next<\/span>();\r\n    })\r\n  }\r\n  \r\n  deleteStudent(id: number) {\r\n    this<\/span>.studentservice.deleteStudent<\/span>(id)\r\n      .subscribe<\/span>(\r\n        data => {\r\n          console.log<\/span>(data);\r\n          this<\/span>.deleteMessage=true;\r\n          this<\/span>.studentservice.getStudentList<\/span>().subscribe<\/span>(data =>{\r\n            this<\/span>.students =data\r\n            })\r\n        },\r\n        error => console.log<\/span>(error));\r\n  }\r\n  updateStudent(id: number){\r\n    this<\/span>.studentservice.getStudent<\/span>(id)\r\n      .subscribe<\/span>(\r\n        data => {\r\n          this<\/span>.studentlist=data           \r\n        },\r\n        error => console.log<\/span>(error));\r\n  }\r\n  studentupdateform=new FormGroup({\r\n    student_id:new FormControl(),\r\n    student_name:new FormControl(),\r\n    student_email:new FormControl(),\r\n    student_branch:new FormControl()\r\n  });\r\n  updateStu(updstu){\r\n    this<\/span>.student=new Student<\/span>(); \r\n   this<\/span>.student.student_id=this<\/span>.StudentId.value;\r\n   this<\/span>.student.student_name=this<\/span>.StudentName.value;\r\n   this<\/span>.student.student_email=this<\/span>.StudentEmail.value;\r\n   this<\/span>.student.student_branch=this<\/span>.StudentBranch.value;\r\n   console.log<\/span>(this<\/span>.StudentBranch.value);\r\n   \r\n   this<\/span>.studentservice.updateStudent<\/span>(this<\/span>.student.student_id,this<\/span>.student).subscribe<\/span>(\r\n    data => {     \r\n      this<\/span>.isupdated=true;\r\n      this<\/span>.studentservice.getStudentList<\/span>().subscribe<\/span>(data =>{\r\n        this<\/span>.students =data\r\n        })\r\n    },\r\n    error => console.log<\/span>(error));\r\n  }\r\n  get StudentName(){\r\n    return <\/span>this<\/span>.studentupdateform.get<\/span>('student_name'<\/span>);\r\n  }\r\n  get StudentEmail(){\r\n    return <\/span>this<\/span>.studentupdateform.get<\/span>('student_email'<\/span>);\r\n  }\r\n  get StudentBranch(){\r\n    return <\/span>this<\/span>.studentupdateform.get<\/span>('student_branch'<\/span>);\r\n  }\r\n  get StudentId(){\r\n    return <\/span>this<\/span>.studentupdateform.get<\/span>('student_id'<\/span>);\r\n  }\r\n  changeisUpdate(){\r\n    this<\/span>.isupdated=false;\r\n  }\r\n}\r\n<\/pre>\n

<\/code>\n <\/div>\n

\u7f16\u8f91 student-list.component.html <\/strong>\u6587\u4ef6<\/span> <\/p>\n

\n
\r\n<div class=\"panel panel-default\"<\/span>>\r\n  <div class=\"panel-heading\"<\/span>>\r\n      <h1 style=\"text-align: center\"<\/span><\/span>>Students<\/h1><br>\r\n      <div class=\"row\"<\/span> [hidden]=\"!deleteMessage\"<\/span>>\r\n           \r\n                <div class=\"col-sm-4\"<\/span><\/span><\/span>><\/div>\r\n                <div class=\"col-sm-4\">\r\n                        <div class=\"alert alert-info alert-dismissible\"<\/span>>\r\n                                <button type=\"button\"<\/span><\/span> class=\"close\"<\/span> data-dismiss=\"alert\"<\/span>>\u00d7<\/button>\r\n                                <strong>Student Data Deleted<\/strong>\r\n                        <\/div>\r\n                <\/div>\r\n                <div class=\"col-sm-4\"><\/div>\r\n        <\/div>           \r\n    <\/div>\r\n  \r\n  <div class=\"panel-body\"<\/span>>\r\n      <table  class=\"table table-hover table-sm\"<\/span> datatable [dtOptions]=\"dtOptions\"<\/span>\r\n      [dtTrigger]=\"dtTrigger\"<\/span>  >\r\n          <thead class=\"thead-light\"<\/span>>\r\n              <tr>\r\n                  <th>Student Name<\/th>\r\n                  <th>Student Email<\/th>\r\n                  <th>Student Branch<\/th>\r\n                  <th>Action<\/th>\r\n                  \r\n              <\/tr>\r\n          <\/thead>\r\n          <tbody>\r\n               <tr *ngFor=\"let student of students \"<\/span>>\r\n                  <td>{{student.student_name}}<\/td>\r\n                  <td>{{student.student_email}}<\/td>\r\n                  <td>{{student.student_branch}}<\/td>\r\n                  <td><button (click)=\"deleteStudent(student.student_id)\"<\/span> class='btn btn-primary'<\/span>><i class=\"fa fa-futboll-0\"<\/span>>Delete<\/i><\/button> \r\n                    <button (click)=\"updateStudent(student.student_id)\"<\/span> class='btn btn-info'<\/span>\r\n                    data-toggle=\"modal\"<\/span><\/span><\/span> data-target=\"#myModal\"<\/span>>Update<\/button><\/span>\r\n                  <\/td>\r\n                <\/tr> \r\n          <\/tbody><br>\r\n      <\/table>\r\n  <\/div>\r\n<\/div> \r\n<div class=\"modal\" id=\"myModal\"<\/span>>\r\n        <div class=\"modal-dialog\"<\/span>>\r\n          <div class=\"modal-content\"<\/span>>\r\n                <form [formGroup]=\"studentupdateform\"<\/span> #updstu (ngSubmit)=\"updateStu(updstu)\"<\/span>><\/span>\r\n            <!-- Modal Header -->\r\n            <div class=\"modal-header\"<\/span>>\r\n              <h4 class=\"modal-title\"<\/span> style=\"text-align: center\">Update Student<\/h4>\r\n              \r\n            <\/div>\r\n            \r\n            <!-- Modal body -->\r\n            <div class=\"modal-body\"<\/span> *ngFor=\"let student of studentlist \"<\/span> >\r\n                <div [hidden]=\"isupdated\"<\/span><\/span>>\r\n                    <input type=\"hidden\"<\/span> class=\"form-control\"<\/span><\/span><\/span><\/span>  formControlName=\"student_id\"<\/span> [(ngModel)]=\"student.student_id\"<\/span>>\r\n                            <div class=\"form-group\"<\/span><\/span><\/span>>\r\n                                <label for=\"name\"<\/span><\/span><\/span>>Student Name<\/label>\r\n                                <input type=\"text\"<\/span><\/span> class=\"form-control\"  formControlName=\"student_name\"<\/span> [(ngModel)]=\"student.student_name\"<\/span>  >\r\n                            <\/div>\r\n                    \r\n                            <div class=\"form-group\">\r\n                                <label for=\"name\">Student Email<\/label>\r\n                                <input type=\"text\" class=\"form-control\" formControlName=\"student_email\"<\/span> [(ngModel)]=\"student.student_email\"<\/span>>\r\n                            <\/div>\r\n                    \r\n                            <div class=\"form-group\">\r\n                                <label for=\"name\">Student Branch<\/label>\r\n                                  <select class=\"form-control\" formControlName=\"student_branch\"<\/span> required>                                   \r\n                                    <option value=\"B-Tech\"<\/span> [selected]=\"'<\/span><\/span><\/span><\/span>B-Tech' == student.student_branch\"<\/span><\/span><\/span><\/span>>B-Tech<\/option>\r\n                                    <option value=\"BCA\"<\/span> [selected]=\"'BCA' == student.student_branch\">BCA<\/option>\r\n                                    <option value=\"MCA\"<\/span> [selected]=\"'MCA' == student.student_branch\" >MCA<\/option>\r\n                                    <option value=\"M-Tech\"<\/span> [selected]=\"'M-Tech' == student.student_branch\">M-Tech<\/option>\r\n                                  <\/select>                               \r\n                            <\/div>                   \r\n                  <\/div>  \r\n                  <div [hidden]=\"!isupdated\"<\/span>>\r\n                      <h4>Student Detail Updated!<\/h4>\r\n                  <\/div>        \r\n                    \r\n            <\/div>\r\n            \r\n            <!-- Modal footer -->\r\n            <div class=\"modal-footer\"<\/span> >\r\n              <button type=\"submit\"<\/span> class=\"btn btn-success\"<\/span> [hidden]=\"isupdated\">Update<\/button>\r\n              <button type=\"button\" class=\"btn btn-danger\"<\/span> data-dismiss=\"modal\" (click)=\"changeisUpdate()\"<\/span>>Close<\/button>\r\n            <\/div>\r\n            \r\n        <\/form>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n<\/pre>\n

<\/code>\n <\/div>\n

\n \u5355\u51fb
\n \u67e5\u770b\u5b66\u751f<\/strong>\u65f6\uff0c\u5c06\u751f\u6210\u4ee5\u4e0b\u9875\u9762:\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c10\u5f20 <\/p>\n

\n \u5355\u51fb
\n \u66f4\u65b0\u5b66\u751f<\/strong>\u65f6\uff0c\u5c06\u51fa\u73b0\u4ee5\u4e0b\u5f15\u5bfc\u7a0b\u5e8f\u6a21\u5f0f:\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c11\u5f20 <\/p>\n

\n \u5728\u8fd9\u91cc\uff0c\u6211\u4eec\u53ef\u4ee5\u66f4\u65b0\u73b0\u6709\u5b66\u751f\u7684\u8be6\u7ec6\u4fe1\u606f\u3002\n <\/div>\n
\n \u5355\u51fb
\n Delete <\/strong>(\u5220\u9664)\uff0c\u73b0\u6709\u5b66\u751f\u5c06\u88ab\u5220\u9664\u4ece\u6570\u636e\u5e93\u4e2d\u3002\u8ba9\u6211\u4eec\u5728\u5220\u9664\u7279\u5b9a\u5b66\u751f\u540e\u67e5\u770b\u7ed3\u679c\u3002\n <\/div>\n

Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8f_https:\/\/bianchenghao6.com_\u3010Spring \u6559\u7a0b\u3011_\u7b2c12\u5f20 <\/p>\n

\n Spring Angular\u6587\u4ef6\u4e0a\u4f20
\n Spring Angular\u767b\u5f55\u548c\u6ce8\u9500
\n Spring Angular\u641c\u7d22\u5b57\u6bb5\n <\/div>\n
\n

<\/body>
\n<\/html><\/p>\n","protected":false},"excerpt":{"rendered":"Spring Angular CRUD\u5e94\u7528\u7a0b\u5e8fzh-cn","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[105],"tags":[],"class_list":["post-551","post","type-post","status-publish","format-standard","hentry","category-bc_spring_jc"],"_links":{"self":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/posts\/551"}],"collection":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/comments?post=551"}],"version-history":[{"count":0,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/posts\/551\/revisions"}],"wp:attachment":[{"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/media?parent=551"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/categories?post=551"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bianchenghao6.com\/wp-json\/wp\/v2\/tags?post=551"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}