Configuración y pasos detallados de la integración de SSM (anotaciones puras)

        SSM (Spring + SpringMVC + MyBatis) es un poderoso marco de desarrollo. Para usarlo, primero debemos aprender cómo integrar estos tres módulos. ¡En este artículo, implementaremos la integración de SSM! ! !

        El proceso de integración se divide principalmente en las siguientes tres partes (la tercera parte es principalmente el módulo de prueba funcional, que no está dentro del alcance de la integración específica):

1. Crea un proyecto

① Crear un proyecto maven (inicio basado en la aplicación web)

② Complete el proyecto (Archivo ---> Estructura del proyecto)

③ Importe las coordenadas de las dependencias relacionadas en el archivo pom.xml

<dependencies>

    <!-- spring集成mvc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>

    <!-- spring集成jdbc -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>

    <!-- spring集成测试 -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.2.10.RELEASE</version>
    </dependency>

    <!-- 注意:Spring集成的这几个坐标的版本要一致,否则会出错 -->

    <!-- mysql -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>

    <!-- mybatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.6</version>
    </dependency>

    <!-- mybatis整合spring -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.0</version>
    </dependency>

    <!-- druid数据库连接池 -->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.16</version>
    </dependency>
    
    <!-- junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <!-- servlet -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <!-- json -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.9.0</version>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>80</port>
          <path>/</path>
        </configuration>
      </plugin>
    </plugins>
  </build>

④ Configurar el entorno Tomcat

2. Integración del MUS

① Crear estructura de proyecto

② En la clase SpringConfig.java, configure Spring

@Configuration
@ComponentScan({"com.ssm.integration.service","com.ssm.integration.dao"})// 扫描service和dao包下的bean
@PropertySource("classpath:jdbc.properties")// 指定jdbc.properties配置文件后才能使用其数据【不加classpath可能会出错】
@Import({JdbcConfig.class, MyBatisConfig.class})// 导入mybatis的配置类,就不用在JdbcConfig和MyBatisConfig上加@Configuration注解了
public class SpringConfig {
}

③ En MyBaitsConfig.java, JdbcConfig.java, clase jdbc.peoperties, configure MyBatis 

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db1
jdbc.username=root
jdbc.password=root
public class JdbcConfig {

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

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

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

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

    /**
     * 配置数据源
     * @return
     */
    @Bean
    public DataSource dataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driver);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }

}
public class MyBatisConfig {

    /**
     * 注册并配置SqlSessionFactoryBean实例,并将之前配置好的DataSource实例注入进去
     * @param dataSource
     * @return
     */
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource);
        factoryBean.setTypeAliasesPackage("com.ssm.integration.pojo");// 设置别名
        // 如果dao包下存在mapper映射的.xml文件,则需指定.xml文件的位置
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResource("classpath:com/**/dao/impl/*.xml"));
        return factoryBean;
    }

    /**
     * 扫描指定包下的bean,将dao层的接口自动代理生成实现类(在接口里需要声明注解式的SQL语句);可以不用加@Mapper注解
     * @return
     */
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer msc = new MapperScannerConfigurer();
        msc.setBasePackage("com.ssm.integration.dao");
        return msc;
    }

}

④ En SpringMvcConfig.java, clase ServletConfig.java (nombre personalizado), configure SpringMVC

@Configuration
@ComponentScan("com.ssm.integration.controller")// 扫描controller包下的bean
@EnableWebMvc// 许多mvc功能(包括Json字符串映射)
public class SpringMvcConfig {
}
public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override// 加载Spring的配置文件
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override// 加载SpringMVC的配置文件
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    @Override// 配置SpringMVC要处理的路径("/"表示全部路径都交予SpringMVC处理)
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }

    // 过滤设置编码格式
    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter filter = new CharacterEncodingFilter();
        filter.setEncoding("UTF-8");
        return new Filter[]{filter};
    }
}

3. Módulos funcionales

① Crear clase de entidad Book.java (se omite la creación de tablas)

public class Book {

    private Integer id;
    private String name;

    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;
    }
}

② Crear interfaz BookDao.java

//@Mapper    // 这里,由于在配置MyBatis时使用自动代理,进行了MapperScan,所以可以省略@Mapper
public interface BookDao {

    @Insert("insert into book values(null, #{name})")
    public void save(Book book);

    @Update("update book set name=#{name} where id=#{id}")
    public void update(Book book);

    @Delete("delete from book where id=#{id}")
    public void delete(Integer id);

    @Select("select * from book")
    public List<Book> selectAll();

}

③ Cree la interfaz BookService.java y su clase de implementación BookServiceImpl.java

public interface BookService {

    /**
     * 新增一本书
     * @param book
     */
    public boolean save(Book book);

    /**
     * 按id修改
     * @param book
     */
    public boolean update(Book book);

    /**
     * 按id删除
     * @param id
     */
    public boolean delete(Integer id);

    /**
     * 查询所有书
     * @return
     */
    public List<Book> selectAll();

}
@Service
public class BookServiceImpl implements BookService {

    // 这里如果报错,是因为bookDao的实现类是自动代理生成的,此时还没有bookDao
    // 而IDEA会自动检测不到就会报红,但不影响使用,可以忽略。也可以设置一下警告级别,具体操作这里就不多介绍了,有兴趣的小伙伴可以百度一下!!!
    @Autowired
    private BookDao bookDao;

    @Override
    public boolean save(Book book) {
        bookDao.save(book);
        return true;
    }

    @Override
    public boolean update(Book book) {
        bookDao.update(book);
        return true;
    }

    @Override
    public boolean delete(Integer id) {
        bookDao.delete(id);
        return true;
    }

    @Override
    public List<Book> selectAll() {
        return bookDao.selectAll();
    }
}

④ Crear BookController.java

@RestController// @Controller和@Response的合体
@RequestMapping("/book")// 这里使用 Restful 风格的方式进行资源访问(如果路径一样,就看其请求方式:GET、POST、PUT、DELETE....)
public class BookController {

    @Autowired
    private BookService bookService;

    @PostMapping
    public boolean save(@RequestBody Book book) {
        bookService.save(book);
        return true;
    }

    @PutMapping
    public boolean update(@RequestBody Book book) {
        bookService.update(book);
        return true;
    }

    @DeleteMapping("/{id}") // Restful 风格的请求方式
    public boolean delete(@PathVariable Integer id) {
        bookService.delete(id);
        return true;
    }

    @GetMapping
    public List<Book> getAll() {
        return bookService.selectAll();
    }

}

Supongo que te gusta

Origin blog.csdn.net/weixin_52850476/article/details/124847728
Recomendado
Clasificación