13 springboot项目——准备数据和dao类

13.1 静态资源下载

https://download.csdn.net/download/no996yes885/88151513

13.2 静态资源位置

        css样式文件放在static的css目录下;static的img下放图片;template目录下放其余的html文件。 

        

13.3 创建两个实体类

        导入依赖:lombok

<!--lombok-->
<dependency>
   <groupId>org.projectlombok</groupId>
   <artifactId>lombok</artifactId>
</dependency>

        加入@Data注解:自动创建set、get等方法;

        加入@AllArgsConstructor注解:自动创建有参构造方法;

        加入NoArgsConstructor注解:自动创建无参构造方法;

         Department:

package jiang.com.springbootstudy.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Department {
    private  Integer id;
    private String departmentName;
}

        Employee:

package jiang.com.springbootstudy.pojo;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;

@Data
@NoArgsConstructor
public class Employee {
    private Integer id;
    private String lastName;
    private  String email;
    private Integer gender; // 0 女  1 男
    private  Department department;
    private Date birth;

    public Employee(Integer id, String lastName, String email, Integer gender, Department department) {
        this.id = id;
        this.lastName = lastName;
        this.email = email;
        this.gender = gender;
        this.department = department;
        this.birth = new Date();  // 一创建对象调用有参的话,自动生成了日期属性
    }
}

13.4 创建实体类对应的dao类

        DepartmentDao:

        注意,这里类中的加载顺序,静态的属性和代码要先加载,然后再加载其他的。使用静态代码块结合Map来模拟数据库,数据库的删查使用的是remove、values、get方法。

package jiang.com.springbootstudy.dao;

import jiang.com.springbootstudy.pojo.Department;
import lombok.Data;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@Data
@Repository
public class DepartmentDao {
    /*模拟数据库中的数据*/
    private static Map<Integer, Department> departments = null;

    static {
        departments = new HashMap<Integer, Department>();//创建一个部门表
        departments.put(101,new Department(101,"教学部"));
        departments.put(102,new Department(102,"市场部"));
        departments.put(103,new Department(103,"教研部"));
        departments.put(104,new Department(104,"运营部"));
        departments.put(105,new Department(105,"后勤部"));
    }

    // 获得所有部门信息
    public Collection<Department> getDepartments(){
        return departments.values();
    }

    // 通过id得到部门
    public  Department getDepartmentById(Integer id){
        return departments.get(id);
    }
}

         EmployeeDao:

package jiang.com.springbootstudy.dao;

import jiang.com.springbootstudy.pojo.Department;
import jiang.com.springbootstudy.pojo.Employee;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

@Repository //自动注入需要的注解
public class EmployeeDao {
    private static Map<Integer, Employee> employees = null;
    // 员工所属的部门
    // 放数据,先加载静态的东西,比如说静态的遍历或者静态的代码
    @Autowired  //自动注入
    private DepartmentDao departmentDao;
    static {
        employees = new HashMap<Integer, Employee>();//前面只是定义了成员变量的类型,并没有赋值,null无法调用put方法,所以要创建对象。
        employees.put(1001,new Employee(1001,"AA","A24736743@qq.com",0,new Department(101,"教学部")));
        employees.put(1002,new Employee(1002,"AA","B24736743@qq.com",1,new Department(101,"市场部")));
        employees.put(1003,new Employee(1003,"AA","C24736743@qq.com",0,new Department(101,"教研部")));
        employees.put(1004,new Employee(1004,"AA","D24736743@qq.com",1,new Department(101,"运营部")));
        employees.put(1005,new Employee(1005,"AA","E24736743@qq.com",0,new Department(101,"后勤部")));
    }

    // 主键自增
    private static Integer initId = 1006;  // static和没有有什么区别?
    // 增加员工
    public void save(Employee employee){
        if (employee.getId()==null){
            employee.setId(initId++);//自增变量的值也会改变
        }
        employee.setDepartment(departmentDao.getDepartmentById(employee.getDepartment().getId())); //这句话可以忽略,原理是调用了接口的getDepartmentById方法传入从员工的部门属性获取的部门id得到一个部门,然后把部门属性赋值给了员工
        employees.put(employee.getId(),employee);
    }

    // 查询全部员工信息
    public Collection<Employee> getAll(){   //集合需要掌握一下
        return employees.values();
    }

    // 通过id查询员工
    public Employee getEmployeeById(Integer id){
        return employees.get(id);
    }

    // 删除员工
    public void delete(Integer id){
        employees.remove(id);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个快速开发框架,MyBatis 是一个优秀的持久层框架,多数据源是指在一个应用程序中使用多个数据源。在 Spring Boot 中使用 MyBatis 实现多数据源的方式有很多种,其中一种常用的方式是使用 Spring Boot 的自动配置功能。 首先,在 pom.xml 文件中添加 MyBatis 和数据库驱动的依赖: ``` <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.200</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.23</version> </dependency> ``` 然后,在 application.properties 文件中配置多个数据源: ``` # 主数据spring.datasource.url=jdbc:mysql://localhost:3306/main_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 从数据spring.datasource.secondary.url=jdbc:mysql://localhost:3306/secondary_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8 spring.datasource.secondary.username=root spring.datasource.secondary.password=root spring.datasource.secondary.driver-class-name=com.mysql.cj.jdbc.Driver ``` 接着,创建多个数据源的配置: ``` @Configuration @MapperScan(basePackages = "com.example.demo.mapper.main", sqlSessionTemplateRef = "mainSqlSessionTemplate") public class MainDataSourceConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource mainDataSource() { return DataSourceBuilder.create().build(); } @Bean public SqlSessionFactory mainSqlSessionFactory(@Qualifier("mainDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); return bean.getObject(); } @Bean public SqlSessionTemplate mainSqlSessionTemplate(@Qualifier("mainSqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } } @Configuration @MapperScan(basePackages = "com.example.demo.mapper.secondary", sqlSessionTemplateRef = "secondarySqlSessionTemplate") public class SecondaryDataSourceConfig { @Bean @ConfigurationProperties(prefix = "spring.datasource.secondary") public DataSource secondaryDataSource() { return DataSourceBuilder.create().build(); } @Bean public SqlSessionFactory secondarySqlSessionFactory(@Qualifier("secondaryDataSource") DataSource dataSource) throws Exception { SqlSessionFactoryBean bean = new SqlSessionFactoryBean(); bean.setDataSource(dataSource); return bean.getObject(); } @Bean public SqlSessionTemplate secondarySqlSessionTemplate(@Qualifier("secondarySqlSessionFactory") SqlSessionFactory sqlSessionFactory) { return new SqlSessionTemplate(sqlSessionFactory); } } ``` 最后,在 DAO 层中使用 @Qualifier 注解指定使用哪个数据源: ``` @Repository public interface MainMapper { @Select("SELECT * FROM main_table") @Qualifier("mainSqlSessionTemplate") List<Main> findAll(); } @Repository public interface SecondaryMapper { @Select("SELECT * FROM secondary_table") @Qualifier("secondarySqlSessionTemplate") List<Secondary> findAll(); } ``` 这样就可以在一个应用程序中使用多个数据源了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值