架构实战项目心得(七):使用SpringBoot+Dubbo+Mybatisplus+Oracle搭建后台项目框架(二)

接下来我们将整合mybatisplus+Oracle,实现一个简单的查询。(期间踩了很多坑,遇到一些问题,还好慢慢解决了。现在是通过配置文件的方式来进行dubbo服务的注册和发布,希望以后能在学习和实践中使用springboot注解方式(也有可能是因为知识还没到那个层面,无法弄懂其中的奥义))

一、SpringBoot整合mybatisplus

    1 众所周知,mybatisplus作为mybatis的一个升级版,大大地简化了大家配置mybatis的xml文件的时间,并且已经整合了很多通用的方法,包括分页的方法等,本项目不细讲mybatisplus,有兴趣的同学可以自己去学一下。本次项目使用mybatisplus作为后台数据库访问的框架。

    2 mybatisplus和mybatisplus的SpringBoot依赖:



    com.baomidou
    mybatis-plus
    ${mybatisplus.version}



    com.baomidou
    mybatisplus-spring-boot-starter
    ${mybatisplus-spring-boot-starter.version}

    具体的版本根据你的需求来定。

    3 对应的实体类UserEntity:

@TableName("USER_INFO")
public class UserEntity extends Model {
    @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{
    Integer getCount();
}

    5 UserMapper.xml:

    




    
        
        
        
        
    
    

    6 服务接口层IUserService:

public interface IUserService extends IService {
    UserEntity getUserById(int id);
    UserEntity findUser();
    /**
     * 查询总数量
     * @return
     */
    Integer getCount();
}

    7 服务接口实现层UserServiceImpl:

@Service
public class UserServiceImpl extends ServiceImpl 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 运行项目进行测试,即可得到一个简单的查询结果(由于我的项目已经分割了,所以这里暂时看不到效果,希望大家按照我的步骤去尝试,能够得到一个简答的查询)

你可能感兴趣的:(干货分享)