架构实战项目心得(七):使用SpringBoot+Dubbo+Mybatisplus+Oracle搭建后台项目框架(二)
接下来我们将整合mybatisplus+Oracle,实现一个简单的查询。(期间踩了很多坑,遇到一些问题,还好慢慢解决了。现在是通过配置文件的方式来进行dubbo服务的注册和发布,希望以后能在学习和实践中使用springboot注解方式(也有可能是因为知识还没到那个层面,无法弄懂其中的奥义))
一、SpringBoot整合mybatisplus
1 众所周知,mybatisplus作为mybatis的一个升级版,大大地简化了大家配置mybatis的xml文件的时间,并且已经整合了很多通用的方法,包括分页的方法等,本项目不细讲mybatisplus,有兴趣的同学可以自己去学一下。本次项目使用mybatisplus作为后台数据库访问的框架。
2 mybatisplus和mybatisplus的SpringBoot依赖:
<!--mybatisplus 依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>${mybatisplus.version}</version>
</dependency>
<!-- Mybatisplus SpringBoot-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatisplus-spring-boot-starter</artifactId>
<version>${mybatisplus-spring-boot-starter.version}</version>
</dependency>
具体的版本根据你的需求来定。
3 对应的实体类UserEntity:
@TableName("USER_INFO")
public class UserEntity extends Model<UserEntity> {
@TableId(value = "USER_ID",type = IdType.AUTO)
private Integer userId;
private String username;
private String password;
private Integer age;
protected Serializable pkVal() {
return userId;
} public Integer getUserId() {
return userId;
} public void setUserId(Integer userId) {
this.userId = userId;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} @Override
public String toString() {
return "UserEntity{" +
"userId=" + userId +
", username='" + username + '\'' +
", password='" + password + '\'' +
", age=" + age +
'}';
} public UserEntity(Integer userId, String username, String password, Integer age) {
this.userId = userId;
this.username = username;
this.password = password;
this.age = age;
} public UserEntity() {
}
4 Mapper层UserMapper:
public interface UserMapper extends BaseMapper<UserEntity>{
Integer getCount();
}
5 UserMapper.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.laowang.mapper.UserMapper">
<resultMap id="userMap" type="com.laowang.entity.UserEntity">
<result column="USER_ID" property="userId"></result>
<result column="USERNAME" property="username"></result>
<result column="PASSWORD" property="password"></result>
<result column="AGE" property="age"></result>
</resultMap>
<select id="getCount" resultType="java.lang.Integer">
SELECT COUNT(1) FROM USER_INFO
</select>
</mapper>
6 服务接口层IUserService:
public interface IUserService extends IService<UserEntity> {
UserEntity getUserById(int id);
UserEntity findUser();
/**
* 查询总数量
* @return
*/
Integer getCount();
}
7 服务接口实现层UserServiceImpl:
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,UserEntity> implements IUserService {
@Autowired
private UserMapper userMapper; public UserEntity getUserById(int id) {
return userMapper.selectById(id);
} public UserEntity findUser() {
return new UserEntity(20,"laowang","123456789",24);
} public Integer getCount() {
return userMapper.getCount();
}
}
8 控制层UserController:
@RestController
public class UserController {
@Autowired
private IUserService userService; @GetMapping("/getUser/{id}")
public UserEntity getUser(@PathVariable int id) {
return userService.getUserById(id);
} @GetMapping("/test")
public UserEntity findUser() {
return userService.findUser();
} @GetMapping("/getCount")
public Integer getCount() {
return userService.getCount();
}
}
9 application.yml:
# Dubbo 服务提供者配置
server:
port: 8070
spring:
application:
name: provider
datasource:
url: jdbc:oracle:thin:@127.0.0.1:1521:hadoop
username: sys as sysdba
password: 123456789
driver-class-name: oracle.jdbc.driver.OracleDriver
type: com.alibaba.druid.pool.DruidDataSource
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxPoolPreparedStatementPerConnectionSize: 20
filters: stat,wall,logback
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
useGlobalDataSourceStat: true
mybatis:
mapper-locations: classpath:mapper/*Mapper.xml
#实体扫描,多个package用逗号或者分号分隔
type-aliases-package: com.laowang.entity
10 运行项目进行测试,即可得到一个简单的查询结果(由于我的项目已经分割了,所以这里暂时看不到效果,希望大家按照我的步骤去尝试,能够得到一个简答的查询)
架构实战项目心得(七):使用SpringBoot+Dubbo+Mybatisplus+Oracle搭建后台项目框架(二)的更多相关文章
- 【SSH网上商城项目实战03】使用EasyUI搭建后台页面框架
转自:https://blog.csdn.net/eson_15/article/details/51312490 前面两节,我们整合了SSH并且抽取了service和action部分的接口,可以说基 ...
- SpringBoot+thymeleaf+security+vue搭建后台框架 基础篇(一)
刚刚接触SpringBoot,说说踩过的坑,主要的还是要记录下来,供以后反省反省! 今天主要讲讲 thymeleaf+security 的搭建,SpringBoot的项目搭建应该比较简单,这里就不多说 ...
- VUE+ElementUI 搭建后台项目(一)
前言 之前有些过移动端的项目搭建的文章,感觉不写个pc端管理系统老感觉少了点什么,最近公司项目比较多,恰巧要做一个申报系统的后台管理系统,鉴于对vue技术栈比较熟悉,所以考虑还是使用vue技术栈来做: ...
- SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用
为什么要使用分布式系统? 容错 减少延迟/提高性能 可用性 负载均衡 总而言之,其实目的只有一个,”用户体验“. 什么是分布式系统? 分布式系统是由使用分发中间件连接的自治计算机组成的网络.它们有助于 ...
- SpringBoot + Layui +Mybatis-plus实现简单后台管理系统(内置安全过滤器)
1. 简介 layui(谐音:类UI)是一款采用自身模块规范编写的前端UI框架,遵循原生HTML/CSS/JS的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的内在,体积轻盈,组件丰 ...
- Java开发学习心得(一):SSM环境搭建
目录 Java开发学习心得(一):SSM环境搭建 1 SSM框架 1.1 Spring Framework 1.2 Spring MVC Java开发学习心得(一):SSM环境搭建 有一点.NET的开 ...
- 手把手教你用vue-cli搭建vue项目
手把手教你用vue-cli搭建vue项目 本篇主要是利用vue-cli来搭建vue项目,其中前提是node和npm已经安装好,文章结尾将会简单提到一个简单的例子.使用vue-cli搭建项目最开始我也是 ...
- 利用vue-cli搭建vue项目
手把手教你用vue-cli搭建vue项目 本篇主要是利用vue-cli来搭建vue项目,其中前提是node和npm已经安装好,文章结尾将会简单提到一个简单的例子.使用vue-cli搭建项目最开始我也是 ...
- 手把手0基础项目实战(一)——教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)...
原文:手把手0基础项目实战(一)--教你搭建一套可自动化构建的微服务框架(SpringBoot+Dubbo+Docker+Jenkins)... 本文你将学到什么? 本文将以原理+实战的方式,首先对& ...
随机推荐
- django静态文件路径配置
在settings.py中加入 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] 即可在html中引用该目录下的静态文件 <!DOCT ...
- 多进程《三》join方法
一 Process对象的join方法 在主进程运行过程中如果想并发地执行其他的任务,我们可以开启子进程,此时主进程的任务与子进程的任务分两种情况 情况一:在主进程的任务与子进程的任务彼此独立的情况下, ...
- 选项卡tab2
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Run Faster-JAVA
又好久没有写点啥了,平时都忙于工作,忙于应付工作中的问题,各种吸收却并没有好好的消化,该是"反刍"一下的时候了. 本篇名叫"Run Faster,JAVA",其 ...
- MySql 的操作日志 历史记录
如何查看mysql数据库操作记录日志 1.首先确认你日志是否启用了mysql>show variables like 'log_bin'. 2.如果启用了,即ON,那日志文件就在mysql的安装 ...
- Web开发模式
原文链接 开发模式的介绍(完善版) 在Web开发模式中,有两个主要的开发结构,称为模式一(Mode I)和模式二(Mode II). 首先我们来理清一些概念吧: DAO(Data Access Obj ...
- 手把手教你在CentOS 7.4下搭建Zabbix监控(转)
Linux系统版本:CentOS 7.4 1.安装前需要先关闭selinux和firewall. 1.1 [root@zabbix ~]# vi /etc/selinux/config 将SELINU ...
- 关于JAVA泛型中的通配符类型
之前对JAVA一知半解时就拿起weiss的数据结构开始看,大部分数据结构实现都是采取通配符的思想,好处不言而喻. 首先建立两个类employee和manager,继承关系如下.其次Pair类是一个简单 ...
- python 类,对象
声明类 ''' class 类名: '类的文档字符串' 类体 ''' #我们创建一个类 class Data: pass 声明类 class Person: #定义一个人类 role = 'perso ...
- Android的崩溃类型总结
看了篇腾讯的沙龙分享,觉得很不错,在这里分享给大家 crash的大致划分: