SSM 基于注解的整合实现

一、pom.xml


  4.0.0
  org.example
  spring_annotation
  war
  1.0-SNAPSHOT
  spring_annotation Maven Webapp
  http://maven.apache.org

  
    17
    17
    UTF-8
    6.0.9
    2.15.1
  

  

    
      com.github.pagehelper
      pagehelper
      5.3.2
    
    
      com.alibaba
      druid
      1.2.16
    
    
      jakarta.servlet
      jakarta.servlet-api
      6.0.0
      provided
    
    
    
      org.springframework
      spring-core
      ${springframework.version}
    
    
      org.springframework
      spring-beans
      ${springframework.version}
    
    
    
    
    
    

    
      org.springframework
      spring-test
      ${springframework.version}
      test
    

    
    
      org.springframework
      spring-web
      ${springframework.version}
    

    
      org.springframework
      spring-webmvc
      ${springframework.version}
    

    
      org.springframework
      spring-aop
      ${springframework.version}
    

    
    
      org.aspectj
      aspectjrt
      1.9.19
    

    
      org.aspectj
      aspectjweaver
      1.9.19
    

    
    
      org.hibernate
      hibernate-validator
      8.0.0.Final
    

    
    
      org.mybatis
      mybatis
      3.5.13
    
    
      org.mybatis
      mybatis-spring
      3.0.2
    

    
    
      com.mysql
      mysql-connector-j
      8.1.0
      runtime
    

    
    
      org.thymeleaf
      thymeleaf-spring6
      3.1.1.RELEASE
    

    
      org.thymeleaf.extras
      thymeleaf-extras-java8time
      3.0.4.RELEASE
    
    
    
      org.springframework
      spring-jdbc
      ${springframework.version}
    


    
      org.webjars
      bootstrap
      5.2.3
    
    
      org.webjars
      jquery
      3.6.4
    

    
    
      ch.qos.logback
      logback-classic
      1.4.8
    


    
      junit
      junit
      4.13.2
      test
    

    
    
      com.fasterxml.jackson.core
      jackson-databind
      ${jackson.version}
    

    
      com.fasterxml.jackson.core
      jackson-core
      ${jackson.version}
    
    
      com.fasterxml.jackson.core
      jackson-annotations
      ${jackson.version}
    

    
      org.projectlombok
      lombok
      1.18.26
      true
    
  

  
    ssm-spring6
    
      
        src/main/java
        
          **/*.xml
        
        false
      
    
  

二、配置文件

jdbc.driverClassName=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql:///ssm
jdbc.username=root
jdbc.password=root
#初始连接数量
initialSize=5
#最大连接数量
maxActive=10
#最大等待时间
maxWait=2000

三、实体类

package com.song.ssm.pojo;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/
@Data
public class Person implements Serializable {
    private long id;
    private String username;
    private String password;
    private Date birthday;
    private String mobile;
    private Integer sex;
    private String address;


}

四、配置类

   4.1 数据源

package com.song.ssm.config;

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.PropertySource;

import javax.sql.DataSource;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/
@PropertySource("classpath:db.properties")
public class JdbcConfig {

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.driverClassName}")
    private String driver;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Value("${maxActive}")
    private Integer maxActive;

    @Value("${maxWait}")
    private long maxWait;

    @Value("${initialSize}")
    private Integer initSize;
    @Bean
    public DataSource dataSource(){
        DruidDataSource ds = new DruidDataSource();
        ds.setUsername(username);
        ds.setPassword(password);
        ds.setDriverClassName(driver);
        ds.setUrl(url);
        ds.setMaxActive(this.maxActive);
        ds.setInitialSize(this.initSize);
        ds.setMaxWait(this.maxWait);
        return ds;
    }
}

4.2 mybatis配置

package com.song.ssm.config;

import com.github.pagehelper.PageHelper;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;

import javax.sql.DataSource;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/
public class MyBatisConfig {

    @Bean
    public SqlSessionFactoryBean getSessionFactoryBean(@Autowired DataSource ds) {
        SqlSessionFactoryBean sessionFactoryBean = new SqlSessionFactoryBean();
        sessionFactoryBean.setDataSource(ds);
        return sessionFactoryBean;
    }
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer(){
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("com.song.ssm.mapper");
        return  mapperScannerConfigurer;
    }

}

4.3 mvc

package com.song.ssm.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/
@Configuration
@EnableWebMvc
@ComponentScan("com.song.ssm.controller")
public class MvcConfig {
}

4.4 Spring容器

package com.song.ssm.config;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/
@Configuration
@Import({JdbcConfig.class, MyBatisConfig.class})
@ComponentScan("com.song.ssm.service")
public class SpringConfig {
}

4.5 Servlet初始化

package com.song.ssm.config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/

public class ServletInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override
    protected Class[] getServletConfigClasses() {
        return new Class[]{MvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

五、Mapper

package com.song.ssm.mapper;

import com.song.ssm.pojo.Person;
import org.apache.ibatis.annotations.Select;

import java.util.List;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/
public interface PersonMapper {
     @Select("select * from t_person")
      List findAll();
}

六、业务层

package com.song.ssm.service;

import com.song.ssm.pojo.Person;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/
@Transactional
public interface PersonService {
     List findAll();
}
package com.song.ssm.service.impl;

import com.song.ssm.mapper.PersonMapper;
import com.song.ssm.pojo.Person;
import com.song.ssm.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/
@Service
public class PersonServiceImpl implements PersonService {
    @Autowired
    private PersonMapper personMapper;

    @Override
    public List findAll() {
        return this.personMapper.findAll();
    }
}

七、控制器

package com.song.ssm.controller;

import com.song.ssm.pojo.Person;
import com.song.ssm.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * @Author 宋伟宁
 * @Date 2023/9/1
 * @Version 1.0
 **/
@RestController
public class HelloController {

    @Autowired
    private PersonService personService;

     @GetMapping("/list")
     public List findAll() {
         return this.personService.findAll();
     }
}

页面效果:

SSM 基于注解的整合实现_第1张图片

你可能感兴趣的:(java,spring)