Java学习之SpringBoot+SSM+Oracle
整合SSM框架+Oracle数据库
运行环境:Java8、Maven
技术:SpringBoot、SSM、Thymeleaf、Oracle
1、项目结构
2、项目代码
启动类:MyoracleApplication
1 package com.ssm.myoracle; 2 3 import org.mybatis.spring.annotation.MapperScan; 4 import org.springframework.boot.SpringApplication; 5 import org.springframework.boot.autoconfigure.SpringBootApplication; 6 7 @SpringBootApplication 8 @MapperScan("com.ssm.myoracle.mapper") 9 public class MyoracleApplication { 10 11 public static void main(String[] args) { 12 SpringApplication.run(MyoracleApplication.class, args); 13 } 14 15 }
Bean:People
1 package com.ssm.myoracle.bean; 2 3 4 /** 5 * @Classname People 6 * @Description TODO 7 * @Date 2021/8/27 9:13 8 * @Created by JH 9 */ 10 public class People { 11 private String id; 12 private String userName; 13 private String passWord; 14 15 public People() { 16 } 17 18 public People(String id, String userName, String passWord) { 19 this.id = id; 20 this.userName = userName; 21 this.passWord = passWord; 22 } 23 24 public String getId() { 25 return id; 26 } 27 28 public void setId(String id) { 29 this.id = id; 30 } 31 32 public String getUserName() { 33 return userName; 34 } 35 36 public void setUserName(String userName) { 37 this.userName = userName; 38 } 39 40 public String getPassWord() { 41 return passWord; 42 } 43 44 public void setPassWord(String passWord) { 45 this.passWord = passWord; 46 } 47 48 @Override 49 public String toString() { 50 return "People{" + 51 "id='" + id + '\'' + 52 ", userName='" + userName + '\'' + 53 ", passWord='" + passWord + '\'' + 54 '}'; 55 } 56 }
Controller:BaseController(用于第一次进入页面)、FormController
1 package com.ssm.myoracle.controller; 2 3 import org.springframework.stereotype.Controller; 4 import org.springframework.web.bind.annotation.RequestMapping; 5 6 /** 7 * @Classname BaseController 8 * @Description TODO 9 * @Date 2021/8/26 18:59 10 * @Created by bernard 11 */ 12 @Controller 13 public class BaseController { 14 @RequestMapping("/") 15 public String index() { 16 return "insert"; 17 } 18 }
1 package com.ssm.myoracle.controller; 2 3 import com.ssm.myoracle.bean.People; 4 import com.ssm.myoracle.service.FormService; 5 import org.springframework.beans.factory.annotation.Autowired; 6 import org.springframework.stereotype.Controller; 7 import org.springframework.ui.Model; 8 import org.springframework.web.bind.annotation.RequestMapping; 9 10 import javax.servlet.http.HttpServletRequest; 11 import java.util.List; 12 import java.util.Map; 13 14 /** 15 * @Classname FormController 16 * @Description TODO 17 * @Date 2021/8/26 11:02 18 * @Created by bernard 19 */ 20 @Controller 21 @RequestMapping("/oracle") 22 public class FormController { 23 @Autowired 24 private FormService formService; 25 26 @RequestMapping("/insert") 27 public String insertDate(HttpServletRequest request) { 28 String id = request.getParameter("id"); 29 String userName = request.getParameter("userName"); 30 String passWord = request.getParameter("passWord"); 31 int flag = formService.insertDate(new People(id, userName, passWord)); 32 System.out.println(flag); 33 return "find"; 34 } 35 36 @RequestMapping("/find") 37 public String findDate(Model model) { 38 List<Map<String, Object>> list = formService.findData(); 39 System.out.println(list); 40 model.addAttribute("list", list); 41 return "show"; 42 } 43 }
Service
1 package com.ssm.myoracle.service; 2 3 import com.ssm.myoracle.bean.People; 4 5 import java.util.List; 6 import java.util.Map; 7 8 /** 9 * @Classname FormService 10 * @Description TODO 11 * @Date 2021/8/26 11:02 12 * @Created by bernard 13 */ 14 public interface FormService { 15 int insertDate(People people); 16 17 List<Map<String, Object>> findData(); 18 }
1 package com.ssm.myoracle.service.impl; 2 3 import com.ssm.myoracle.bean.People; 4 import com.ssm.myoracle.mapper.FormMapper; 5 import com.ssm.myoracle.service.FormService; 6 import org.springframework.beans.factory.annotation.Autowired; 7 import org.springframework.stereotype.Service; 8 9 import java.util.List; 10 import java.util.Map; 11 12 /** 13 * @Classname FormServiceImpl 14 * @Description TODO 15 * @Date 2021/8/26 11:03 16 * @Created by bernard 17 */ 18 @Service 19 public class FormServiceImpl implements FormService { 20 @Autowired 21 private FormMapper formMapper; 22 23 @Override 24 public int insertDate(People people) { 25 int flag = formMapper.insertDate(people); 26 return flag; 27 } 28 29 @Override 30 public List<Map<String, Object>> findData() { 31 List<Map<String, Object>> list = formMapper.findData(); 32 return list; 33 } 34 }
Mapper
1 package com.ssm.myoracle.mapper; 2 3 import com.ssm.myoracle.bean.People; 4 import org.apache.ibatis.annotations.Mapper; 5 6 import java.util.List; 7 import java.util.Map; 8 9 /** 10 * @Classname FormMapper 11 * @Description TODO 12 * @Date 2021/8/26 10:58 13 * @Created by bernard 14 */ 15 @Mapper 16 public interface FormMapper { 17 int insertDate(People people); 18 19 List<Map<String, Object>> findData(); 20 }
配置文件:application.yml(如果是远程则把“localhost”换成IP)
1 #端口号 2 server: 3 port: 10010 4 #数据库 5 spring: 6 datasource: 7 platform: oracle 8 driver-class-name: oracle.jdbc.driver.OracleDriver 9 url: jdbc:oracle:thin:@locahost:1521:orcl 10 username: root 11 password: root123 12 #thymeleaf 13 thymeleaf: 14 enabled: true #开启thymeleaf视图解析 15 encoding: utf-8 #编码 16 prefix: classpath:/templates/ #前缀 17 cache: false #是否使用缓存 18 mode: HTML #严格的HTML语法模式 19 suffix: .html #后缀名 20 #sqlmapper映射文件位置 21 mybatis: 22 mapper-locations: classpath:mapper/*Mapper.xml #所有的mapper映射文件 23 type-aliases-package: com.ssm.myoracle.bean #定义所有操作类的别名所在包
Mapper.XML
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 3 <mapper namespace="com.ssm.myoracle.mapper.FormMapper"> 4 5 <!-- Sql不要加“;” --> 6 <select id="findData" resultType="java.util.HashMap"> 7 select * from tbl_form_people 8 </select> 9 10 <insert id="insertDate" parameterType="com.ssm.myoracle.bean.People"> 11 insert into 12 tbl_form_people 13 values ( 14 #{id}, 15 #{userName}, 16 #{passWord} 17 ) 18 </insert> 19 </mapper>
3、静态页面
find.html
1 <!DOCTYPE html> 2 <html lang="en" xmlns:th="http://www.thymeleaf.org"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>查询</title> 6 </head> 7 <body> 8 <h1>数据添加成功</h1> 9 <form action="/oracle/find"> 10 <button type="submit"> 点击查询数据</button> 11 </form> 12 </body> 13 </html>
insert.html
1 <!DOCTYPE html> 2 <html lang="en" xmlns:th="http://www.thymeleaf.org"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>新增</title> 6 </head> 7 <body> 8 <form action="/oracle/insert"> 9 ID: <input type="text" name="id" value=""/><br/> 10 账号: <input type="text" name="userName" value=""/><br/> 11 密码: <input type="text" name="passWord" value=""/><br/> 12 <button type="submit">提交</button> 13 </form> 14 </body> 15 </html>
show.html
1 <!DOCTYPE html> 2 <html lang="en" xmlns:th="http://www.thymeleaf.org"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>展示</title> 6 </head> 7 <body> 8 <h1>展示数据</h1> 9 <table th:each="people:${list}"> 10 <tr> 11 <td th:text="${people.id}"></td> 12 <td th:text="${people.userName}"></td> 13 <td th:text="${people.passWord}"></td> 14 </tr> 15 </table> 16 </body> 17 </html>
4、依赖文件:pom.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <parent> 6 <groupId>org.springframework.boot</groupId> 7 <artifactId>spring-boot-starter-parent</artifactId> 8 <version>2.5.4</version> 9 <relativePath/> <!-- lookup parent from repository --> 10 </parent> 11 <groupId>com.ssm</groupId> 12 <artifactId>myoracle</artifactId> 13 <version>0.0.1-SNAPSHOT</version> 14 <name>myoracle</name> 15 <description>Demo project for Spring Boot</description> 16 <properties> 17 <java.version>1.8</java.version> 18 </properties> 19 <dependencies> 20 <!-- 支持web --> 21 <dependency> 22 <groupId>org.springframework.boot</groupId> 23 <artifactId>spring-boot-starter-web</artifactId> 24 </dependency> 25 <dependency> 26 <groupId>org.springframework.boot</groupId> 27 <artifactId>spring-boot-devtools</artifactId> 28 <scope>runtime</scope> 29 <optional>true</optional> 30 </dependency> 31 <!-- Oracle数据库连接 --> 32 <dependency> 33 <groupId>com.oracle.database.jdbc</groupId> 34 <artifactId>ojdbc8</artifactId> 35 <scope>runtime</scope> 36 </dependency> 37 <!-- oracle字符类型转换 --> 38 <dependency> 39 <groupId>cn.easyproject</groupId> 40 <artifactId>orai18n</artifactId> 41 <version>12.1.0.2.0</version> 42 </dependency> 43 <dependency> 44 <groupId>mysql</groupId> 45 <artifactId>mysql-connector-java</artifactId> 46 <scope>runtime</scope> 47 </dependency> 48 <!-- thymeleaf --> 49 <dependency> 50 <groupId>org.springframework.boot</groupId> 51 <artifactId>spring-boot-starter-thymeleaf</artifactId> 52 <version>2.5.4</version> 53 </dependency> 54 <!-- 工具类 --> 55 <dependency> 56 <groupId>org.projectlombok</groupId> 57 <artifactId>lombok</artifactId> 58 <optional>true</optional> 59 </dependency> 60 <dependency> 61 <groupId>org.springframework.boot</groupId> 62 <artifactId>spring-boot-starter-test</artifactId> 63 <scope>test</scope> 64 </dependency> 65 <!-- mybatis --> 66 <dependency> 67 <groupId>org.mybatis.spring.boot</groupId> 68 <artifactId>mybatis-spring-boot-starter</artifactId> 69 <version>1.3.2</version> 70 </dependency> 71 <dependency> 72 <groupId>org.mybatis</groupId> 73 <artifactId>mybatis-spring</artifactId> 74 <version>2.0.6</version> 75 </dependency> 76 <dependency> 77 <groupId>org.mybatis</groupId> 78 <artifactId>mybatis</artifactId> 79 <version>3.5.7</version> 80 </dependency> 81 </dependencies> 82 83 <build> 84 <plugins> 85 <plugin> 86 <groupId>org.springframework.boot</groupId> 87 <artifactId>spring-boot-maven-plugin</artifactId> 88 <configuration> 89 <excludes> 90 <exclude> 91 <groupId>org.projectlombok</groupId> 92 <artifactId>lombok</artifactId> 93 </exclude> 94 </excludes> 95 </configuration> 96 </plugin> 97 </plugins> 98 </build> 99 100 </project>
5、成果展示
1、访问路径(配置文件中将端口号改为了 10010)
http://localhost:10010/
经过BaseController进入了insert.html
2、添加数据后点击提交,经过FormController进入find.html
3、点击查询数据,经过FormController跳到show.html
补充:
1、mapper中的Sql不要加“;”,不然可能会报错;
2、依赖中引入”orai18n“,防止报编码的错误:
不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
<dependency> <groupId>cn.easyproject</groupId> <artifactId>orai18n</artifactId> <version>12.1.0.2.0</version> </dependency>
3、字段名在数据库中默认转成了大写,所以页面中调用也要大写;