利用springboot对oracle中数据库表的增删改查crud
来源:互联网 发布:锐捷交换机ip与mac绑定 编辑:程序博客网 时间:2024/05/15 07:15
目前我的oracle数据库中有个sinotrans_org表
首先是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>spirngbootdemo2</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> </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>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-rest</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency> <!-- <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> --> <dependency><groupId>com.oracle</groupId><artifactId>ojdbc6</artifactId><version>11.1.0.7.0</version></dependency><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.2.8</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build></project>springboot的优点就是集中式配置。所以几乎是没有烦人的配置文件。
这里是我们的集中配置文件:在resources目录下的文件
application.yml文件:
spring: profiles: active: a datasource: driver-class-name: oracle.jdbc.OracleDriver url: jdbc:oracle:thin:@ip:1521:xxx username: xxx password: xxx jpa: hibernate: ddl-auto: update show-sql: true
以及application-a.yml,对应上个yml文件中的profiles配置
server: port: 8084 context-path: /springbootdemosecurity: user: name: admin password: admin #mybatis: #typeAliasesPackage: com.firstboot.entity #mapperLocations: classpath:mapper/*.xml
因为我在pom文件中配置了springboot的安全jar。所以需要设置用户名密码,否则你进入不了页面。下面是整体结构,很简单
然后是具体类:
实体类:sinotransOrg.java
package com.firstboot.entity;import java.util.List;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.Id;import javax.persistence.OneToMany;import com.alibaba.fastjson.annotation.JSONField;@Entitypublic class SinotransOrg {@Id@GeneratedValueprivate Integer orgId;private String orgPathCode;private String shortNameCn;private String fullNameCn;private String shortNameEn;private String fullNameEn;private String mnemonicCode;private String govOrgCode;private String city;private String address;private String postCode;private Integer parentOrg;@JSONField(format="yyyy-MM-dd HH:mm")private java.sql.Timestamp createTime=null;private java.lang.Integer creator=null;private java.lang.Integer modifier=null;@JSONField(format="yyyy-MM-dd HH:mm")private java.sql.Timestamp modifyTime=null;/*@OneToMany(fetch = FetchType.LAZY,mappedBy = "sinotransOrg") private List<Department> departments; *///必须有构造public SinotransOrg() {}/*public List<Department> getDepartments() {return departments;}public void setDepartments(List<Department> departments) {this.departments = departments;}*/public Integer getOrgId() {return orgId;}public void setOrgId(Integer orgId) {this.orgId = orgId;}public String getOrgPathCode() {return orgPathCode;}public void setOrgPathCode(String orgPathCode) {this.orgPathCode = orgPathCode;}public String getShortNameCn() {return shortNameCn;}public void setShortNameCn(String shortNameCn) {this.shortNameCn = shortNameCn;}public String getFullNameCn() {return fullNameCn;}public void setFullNameCn(String fullNameCn) {this.fullNameCn = fullNameCn;}public String getShortNameEn() {return shortNameEn;}public void setShortNameEn(String shortNameEn) {this.shortNameEn = shortNameEn;}public String getFullNameEn() {return fullNameEn;}public void setFullNameEn(String fullNameEn) {this.fullNameEn = fullNameEn;}public String getMnemonicCode() {return mnemonicCode;}public void setMnemonicCode(String mnemonicCode) {this.mnemonicCode = mnemonicCode;}public String getGovOrgCode() {return govOrgCode;}public void setGovOrgCode(String govOrgCode) {this.govOrgCode = govOrgCode;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPostCode() {return postCode;}public void setPostCode(String postCode) {this.postCode = postCode;}public Integer getParentOrg() {return parentOrg;}public void setParentOrg(Integer parentOrg) {this.parentOrg = parentOrg;}public java.sql.Timestamp getCreateTime() {return createTime;}public void setCreateTime(java.sql.Timestamp createTime) {this.createTime = createTime;}public java.lang.Integer getCreator() {return creator;}public void setCreator(java.lang.Integer creator) {this.creator = creator;}public java.lang.Integer getModifier() {return modifier;}public void setModifier(java.lang.Integer modifier) {this.modifier = modifier;}public java.sql.Timestamp getModifyTime() {return modifyTime;}public void setModifyTime(java.sql.Timestamp modifyTime) {this.modifyTime = modifyTime;}}dao类 :SinotransOrgRepository接口
package com.firstboot.dao;import java.util.List;import org.springframework.data.jpa.repository.JpaRepository;import com.firstboot.entity.SinotransOrg; public interface SinotransOrgRepository extends JpaRepository<SinotransOrg,Integer>{//通过shortNameCn查询,中文简称public List<SinotransOrg> findByShortNameCn(String shortNameCn);//通过fullNameCn查询,中文全称public List<SinotransOrg> findByFullNameCn(String fullNameCn);//通过shortNameEn查询,英文简称public List<SinotransOrg> findByShortNameEn(String shortNameEn);//通过fullNameEn查询,英文全称public List<SinotransOrg> findByFullNameEn(String fullNameEn);//通过mnemonicCode查询,助记码public List<SinotransOrg> findByMnemonicCode(String mnemonicCode);}控制器:
SinotransOrgController.java
package com.firstboot.controller;import java.sql.Timestamp;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.DeleteMapping;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.PutMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import com.firstboot.dao.SinotransOrgRepository;import com.firstboot.entity.SinotransOrg;@RestController //same as @Controller +@ResponseBodypublic class SinotransOrgController { @Autowired private SinotransOrgRepository sinotransOrgRepository; /** * 请求内容是一个json串,spring会自动把他和我们的参数bean对应起来,不过要加@RequestBody注解 * * @param sinotransOrg * @return */ @RequestMapping(value = "/sinotransOrg3", method = { RequestMethod.POST, RequestMethod.GET }) public SinotransOrg sinotransOrgAdd(@RequestBody SinotransOrg sinotransOrg) { return sinotransOrgRepository.save(sinotransOrg); } //=========================================================== /** * 查询所有 * @return */ @GetMapping(value = "/sinotransOrg") @ResponseBody public List<SinotransOrg> sinotransOrgList(){ return sinotransOrgRepository.findAll(); } /** * 增加一个组织机构 */ @PostMapping(value = "/sinotransOrg") public SinotransOrg sinotransOrgAdd(@RequestParam("orgPathCode") String orgPathCode, @RequestParam("shortNameCn") String shortNameCn, @RequestParam("fullNameCn") String fullNameCn, @RequestParam("shortNameEn") String shortNameEn, @RequestParam("fullNameEn") String fullNameEn, @RequestParam("mnemonicCode") String mnemonicCode, @RequestParam("govOrgCode") String govOrgCode, @RequestParam("city") String city, @RequestParam("address") String address, @RequestParam("postCode") String postCode, @RequestParam("parentOrg") Integer parentOrg, @RequestParam("createTime") Timestamp createTime, @RequestParam("creator") Integer creator, @RequestParam("modifier") Integer modifier, @RequestParam("modifyTime") Timestamp modifyTime) { SinotransOrg sinotransOrg = new SinotransOrg(); sinotransOrg.setOrgPathCode(orgPathCode); sinotransOrg.setShortNameCn(shortNameCn); sinotransOrg.setFullNameCn(fullNameCn); sinotransOrg.setShortNameEn(shortNameEn); sinotransOrg.setFullNameEn(fullNameEn); sinotransOrg.setMnemonicCode(mnemonicCode); sinotransOrg.setGovOrgCode(govOrgCode); sinotransOrg.setCity(city); sinotransOrg.setAddress(address); sinotransOrg.setPostCode(postCode); sinotransOrg.setParentOrg(parentOrg); sinotransOrg.setCreateTime(createTime); sinotransOrg.setCreator(creator); sinotransOrg.setModifier(modifier); sinotransOrg.setModifyTime(modifyTime); return sinotransOrgRepository.save(sinotransOrg); } /** * 更新一个组织机构 * @return */ @PutMapping(value = "/sinotransOrg/{orgId}") public SinotransOrg sinotransOrgUpdate(@PathVariable("orgId") Integer orgId, @RequestParam("orgPathCode") String orgPathCode, @RequestParam("shortNameCn") String shortNameCn, @RequestParam("fullNameCn") String fullNameCn, @RequestParam("shortNameEn") String shortNameEn, @RequestParam("fullNameEn") String fullNameEn, @RequestParam("mnemonicCode") String mnemonicCode, @RequestParam("govOrgCode") String govOrgCode, @RequestParam("city") String city, @RequestParam("address") String address, @RequestParam("postCode") String postCode, @RequestParam("parentOrg") Integer parentOrg, @RequestParam("createTime") Timestamp createTime, @RequestParam("creator") Integer creator, @RequestParam("modifier") Integer modifier, @RequestParam("modifyTime") Timestamp modifyTime) { SinotransOrg sinotransOrg = new SinotransOrg(); sinotransOrg.setOrgId(orgId); sinotransOrg.setOrgPathCode(orgPathCode); sinotransOrg.setShortNameCn(shortNameCn); sinotransOrg.setFullNameCn(fullNameCn); sinotransOrg.setShortNameEn(shortNameEn); sinotransOrg.setFullNameEn(fullNameEn); sinotransOrg.setMnemonicCode(mnemonicCode); sinotransOrg.setGovOrgCode(govOrgCode); sinotransOrg.setCity(city); sinotransOrg.setAddress(address); sinotransOrg.setPostCode(postCode); sinotransOrg.setParentOrg(parentOrg); sinotransOrg.setCreateTime(createTime); sinotransOrg.setCreator(creator); sinotransOrg.setModifier(modifier); sinotransOrg.setModifyTime(modifyTime); return sinotransOrgRepository.save(sinotransOrg); } /** * 删除一个组织机构 * @param id */ @DeleteMapping(value = "/sinotransOrg/{orgId}") public void sinotransOrgDelete(@PathVariable("orgId") Integer orgId) { sinotransOrgRepository.delete(orgId); } /** * 通过shortNameCn查询,中文简称 * @param shortNameCn * @return */ @GetMapping(value = "/sinotransOrg/shortNameCn/{shortNameCn}") public List<SinotransOrg> sinotransOrgListByShortNameCn( @PathVariable("shortNameCn") String shortNameCn) { return sinotransOrgRepository.findByShortNameCn(shortNameCn); } /** * 通过fullNameCn查询,中文全称 * @param fullNameCn * @return */ @GetMapping(value = "/sinotransOrg/fullNameCn/{fullNameCn}") public List<SinotransOrg> sinotransOrgListByFindByFullNameCn( @PathVariable("fullNameCn") String fullNameCn) { return sinotransOrgRepository.findByFullNameCn(fullNameCn); } /** * 通过shortNameEn查询,英文简称 * @param shortNameEn * @return */ @GetMapping(value = "/sinotransOrg/shortNameEn/{shortNameEn}") public List<SinotransOrg> sinotransOrgListByShortNameEn( @PathVariable("shortNameEn") String shortNameEn) { return sinotransOrgRepository.findByShortNameEn(shortNameEn); } /** * 通过fullNameEn查询,英文全称 * @param fullNameEn * @return */ @GetMapping(value = "/sinotransOrg/fullNameEn/{fullNameEn}") public List<SinotransOrg> sinotransOrgListByFullNameEn( @PathVariable("fullNameEn") String fullNameEn) { return sinotransOrgRepository.findByFullNameEn(fullNameEn); } /** * 通过mnemonicCode查询,助记码 * @param mnemonicCode * @return */ @GetMapping(value = "/sinotransOrg/mnemonicCode/{mnemonicCode}") public List<SinotransOrg> sinotransOrgListByMnemonicCode( @PathVariable("mnemonicCode") String mnemonicCode) { return sinotransOrgRepository.findByMnemonicCode(mnemonicCode); } }入口类Application.java类:
package com.firstboot;import java.util.List;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.http.converter.HttpMessageConverter;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;import com.alibaba.fastjson.serializer.SerializerFeature;import com.alibaba.fastjson.support.config.FastJsonConfig;import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;/** * @EnableAutoConfiguration:spring boot的注解,一般只用于主类, * 是无xml配置启动的关键部分,明确指定了扫描包的路径为其修饰的主类的包(这也就是为什么主类要放在根包路径下的原因) * * @ComponentScan 进行包的扫描,扫描路径由@EnableAutoConfiguration指定了 * * 主类要位于根包路径下,方便之后的扫描(We generally recommend that you locate your main application class in a root package above other classes.) */@SpringBootApplication //相当于 @Configuration+@EnableAutoConfiguration+@ComponentScan//启动swagger注解启动该注解使得用在controller中的swagger注解生效,覆盖的范围由@ComponentScan的配置来指定,这里默认指定为根路径"com.firstboot"下的所有controllerpublic class Application extends WebMvcConfigurerAdapter {/*** spring boot的入口,在整个子项目在内,* 只能有一个main方法,否则spring boot启动不起来*/ public static void main(String[] args) { SpringApplication.run(Application.class, args); } /** * 1.需要先定义一个convert转换消息的对象;2.添加fastJson的配置信息,比如:是否要格式化返回的json数据;3.在convert中添加配置信息4.将convert添加到converters中 */ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { // TODO Auto-generated method stub super.configureMessageConverters(converters); //1.需要先定义一个convert转换消息的对象; FastJsonHttpMessageConverter fastConverter = new FastJsonHttpMessageConverter(); //2.添加fastJson的配置信息,比如:是否要格式化返回的json数据; FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures(SerializerFeature.PrettyFormat); //3.在convert中添加配置信息 fastConverter.setFastJsonConfig(fastJsonConfig); //4.将convert添加到converters中 converters.add(fastConverter); } }代码就这么点。就可以对数据库crud了。注意的是,我的数据库中的字段名称实际是带下划线的。比如parent_org,对于这样的字段,springboot中约定你必须在
实体类中设置为 private String parentOrg;就是第一个小写。第二个首字母大写。这样就自动匹配上了你的数据库字段。否则你还需要在实体类中的每个字段上
配置@Column(..),显然没必要。
接下来是测试,直接在Application.java中run as ---java application,即可,因为springboot内部依赖了tomcat,不用你再启动tomcat服务:
然后使用一个比浏览器更好的工具。火狐浏览器的插件Httprequester。首先在火狐中配置了这个插件。怎么配置百度就可以了。
然后打开这个:
相信你知道下来怎么做了。这个插件很好用的
0 0
- 利用springboot对oracle中数据库表的增删改查crud
- 利用反射实现对sqlite3数据库的crud(增删改查)操作的一个baseAndroidDao封装,安卓开发中
- Mybatis实现对数据(oracle数据库)的增删改查(crud)
- 数据库中简单的增删改查(CRUD)
- Springboot 之 JPA对Mysql数据库的增删改查
- oracle的CRUD(增删改查)
- oracle数据库中的对表中字段的增删改查
- Android中使用OrmLite来对SQLite数据库进行CRUD(增删改查)解析
- springboot学习(2)springboot使用JdbcTemplate完成对数据库的增删改查
- ssh完成对oracle数据库的增删查改
- hibernate对单表增删改查(CRUD)
- MyBatis对表执行CRUD(增删改查)操作
- iOS Objective-C中对数据库的 增删改查
- PHP 中对MySql 数据库的增删改查
- python中sqlite3对数据库的增删改查
- Android中结合OrmLite for android组件对SQLite的CRUD(增删改查)操作实例
- Android中结合OrmLite for android组件对SQLite的CRUD(增删改查)操作实例
- Android中结合OrmLite for android组件对SQLite的CRUD(增删改查)操作实例
- APP兼容不同的设备之适配不同的屏幕
- 知识积累和总结
- 有return的情况下try catch finally的执行顺序
- 聚类系列-概述
- 获取spine动画的一些信息
- 利用springboot对oracle中数据库表的增删改查crud
- 【mysql】mac终端下启动和停止mysql服务
- Linux下安装TFTP服务的具体操作
- C# 发起普通http请求
- iOS多个网络请求问题
- HDU 1078 FatMouse and Cheese
- #!/usr/bin/env python的作用
- Spring源码学习之AOP
- 运维笔记31 (pacemaker高可用集群搭建的总结)