# Spring 整合 MyBatis

将 Mybatis 原来的配置文件:Mybatis-config.xml 替换成了 Spring 来整合它

image_2023-02-26-11-33-42

1. 创建目录

image_2023-02-26-11-42-11

2. 创建对应的类

image_2023-02-26-11-42-54

代码

# config

  • JdbcConfig
@SuppressWarnings("all")
public class JdbcConfig {
//    使用简单类型,通过配置文件 properties 注入数据
    @Value("${driver}")
    private String driver;
    @Value("${jdbcUrl}")
    private String url;
    @Value("${a.username}")
    private String ausername;
    @Value("${password}")
    private String password;
//    返回为 bean
    @Bean
    public DataSource getDataSource() {
        DruidDataSource d = new DruidDataSource();
//        将成员变量的值赋值到 DruidDataSource 中
        d.setDriverClassName(driver);
        d.setUrl(url);
        d.setUsername(ausername);
        d.setPassword(password);
//        返回对象
        return d;
    }
}
  • MybatisConfig
@SuppressWarnings("all")
public class MybatisConfig {
//    返回为 bean
    @Bean
    public SqlSessionFactoryBean getSqlSessionFactory(DataSource d){
//        获取 SqlSession 工厂实例化 Bean
        SqlSessionFactoryBean sqlsession = new SqlSessionFactoryBean();
//        设置别名
        sqlsession.setTypeAliasesPackage("com.dkx.spring.domain");
//        设置数据库信息
        sqlsession.setDataSource(d);
        return sqlsession;
    }
//    返回为 bean
    @Bean
    public MapperScannerConfigurer mappersacnnerconfigurer(){
//        获取设置 Mappers 中 mapper 的标签值的对象
        MapperScannerConfigurer mapper = new MapperScannerConfigurer();
//        设置路径指定 dao 层的 Mapper 接口
        mapper.setBasePackage("com.dkx.spring.dao");
        return mapper;
    }
}
  • SpringConfig
@SuppressWarnings("all")
// 配置该类为配置类
@Configuration
// 扫描路径,加载其它配置 bean
@ComponentScan("com.dkx.spring")
// 加载配置文件
@PropertySource("classpath:druid.properties")
// 导入配置类
@Import({JdbcConfig.class,MybatisConfig.class})
public class SpringConfig {
}

# dao

  • UserMapper
@SuppressWarnings("all")
public interface UserMapper {
    @Insert("insert into spring_mybatis (id,name,money) values (#{id},#{name},#{money})")
    int save(SpringMybatis s);
    @Delete("delete spring_mybatis where id = #{id}")
    int delete();
    @Update("update from spring_mybatis set name = #{name} where id = #{id}")
    int update();
    @Select("select * from user")
    List<SpringMybatis> getList();
    @Select("select * from user where id = #{id}")
    SpringMybatis getUserById(Integer id);
}

# domian

  • SpringMybatis
@SuppressWarnings("all")
public class SpringMybatis {
   private Integer id;
   private String name;
   private Integer money;
   public SpringMybatis() {
   }
   public SpringMybatis(Integer id, String name, Integer money) {
      this.id = id;
      this.name = name;
      this.money = money;
   }
   public Integer getId() {
      return id;
   }
   public void setId(Integer id) {
      this.id = id;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public Integer getMoney() {
      return money;
   }
   public void setMoney(Integer money) {
      this.money = money;
   }
   @Override
   public String toString() {
      return "SpringMybatis{" +
              "id=" + id +
              ", name='" + name + '\'' +
              ", money=" + money +
              '}';
   }
}

# service

@SuppressWarnings("all")
public interface UserService {
    void save(SpringMybatis s);
    void delete();
    void update();
    List<SpringMybatis> getList();
    SpringMybatis getUserById(Integer id);
}

# impl

@SuppressWarnings("all")
// 配置 bean
@Service
public class UserServiceImpl implements UserService {
//    自动装配
    @Autowired
    private UserMapper userMapper;
    public void save(SpringMybatis s){
        userMapper.save(s);
    }
    public void delete(){
        userMapper.delete();
    }
    public void update(){
        userMapper.update();
    }
    public List<SpringMybatis> getList(){
        return userMapper.getList();
    }
    public SpringMybatis getUserById(Integer id){
        return userMapper.getUserById(id);
    }
}

# resources

driver=com.mysql.cj.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/spring_mybatis?characterEncoding=utf-8&serverTimezone=UTC
a.username=root
password=dkx
  • 测试代码
public void test2(){
        ApplicationContext c = new AnnotationConfigApplicationContext(SpringConfig.class);
        UserService service = c.getBean(UserService.class);
        List<SpringMybatis> list = service.getList();
        for(SpringMybatis i:list){
            System.out.println(i);
        }
    }