從零開始搭建ssm-springBoot後臺簡易框架


  1. 編程語言:JDK8以上
  2. 開發環境:IDEA
  3. 數據庫:MyBatis

一. 搭建環境

  1. 打開IDEA,創建新項目,如下。

  2. 點擊Next,輸入Group和Artifact。

  3. 點擊Next,選擇Web,勾選Spring Web。

  4. 點擊Next,跳轉到如下界面。

  5. 點擊Finish按鈕,生成新項目如下。


二. 開發簡易的ssm後臺程序

1. 建立數據庫表

在這裏插入圖片描述


2. 搭建ssm框架

  1. 整體結構如下所示。
    在這裏插入圖片描述

2.1 UserInfoDO.java

public class UserInfoDO {
    private Integer userInfoId;
    private String userName;
    private Integer age;
    private String comment;
	// getter and setter
}

2.2 UserInfoDao.java + UserInfoMapper.xml

  1. UserInfoDao.java
// @Mapper // 跟在Application類上加@MapperScan註解作用一樣(但@Mapper需要在每個Dao類上加註解),表示掃描mapper接口
public interface UserInfoDao {
    UserInfoDO getUserInfoByName(String name);
}
  1. UserInfoMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.zijikanwa.ssmspringboottest.dao.UserInfoDao" >
    <select id="getUserInfoByName" resultType="com.zijikanwa.ssmspringboottest.model.UserInfoDO">
        SELECT * FROM user_info WHERE user_name = #{name}
    </select>
</mapper>

2.3 UserInfoController.java

@RestController // 等於 @Controller + @ResponseBody,表示該類是controller和返回結果爲JSON數據
public class UserInfoController {
    @Autowired
    private UserInfoDao userInfoDao;

    @RequestMapping(value = "getUserInfo")
    public UserInfoDO getUserInfo(){
        try {
            System.out.println("ha1");
            UserInfoDO userInfoDO = userInfoDao.getUserInfoByName("xixi");
            return userInfoDO;
        }catch (Exception e){
            return null;
        }
    }
}

2.4 SsmspringboottestApplication.java

@SpringBootApplication 
@EnableTransactionManagement //開啓事務管理
@MapperScan("com.zijikanwa.ssmspringboottest.dao") // 與Dao類上加@Mapper註解二選一即可(推薦在這裏加註解,以避免在每個Dao類都加註解),表示只能掃描mapper接口,不能掃描mapper.xml文件
public class SsmspringboottestApplication {
	public static void main(String[] args) {
		SpringApplication.run(SsmspringboottestApplication.class, args);
	}
}

2.5 mybatis-config.xml(可選)

  1. 說明
    • 可以將MyBatis的配置項寫在mybatis-config.xml文件中,如下所示。
    • 也可以將MyBatis的配置項寫在application.properties文件中。此情況下不需要寫mybatis-config.xml文件。
<?xml version="1.0" encoding="UTF-8" ?>
<!-- mybatis的配置文件 -->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <!-- 使用駝峯命名法轉換字段(法1) -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    
    <!-- 配置mapper.xml文件的路徑(法1) -->
    <!--
	<mappers>
        <mapper resource="/mapper/UserInfoMapper.xml"/>
    </mappers>
    -->
</configuration>

2.6 application.properties

# 數據庫連接配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver # 最新jdbc驅動

# mybatis掃描
mybatis.config-location=classPath:mybatis-config.xml # mybatis配置文件的路徑
mybatis.mapper-locations=classpath*:mapper/*.xml # mapper.xml文件的路徑(法2,推薦)
mybatis.configuration.mapUnderscoreToCamelCase=true # 設置駝峯命名法(法2)

2.7 pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.zijikanwa</groupId>
    <artifactId>ssmspringboottest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>ssmspringboottest</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

		<!-- spring-boot-starter-jdbc -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        
        <!-- mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

        <!-- MyBatis 和 Spring Boot 的集成-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

3. postman測試


4. 新增MyBatisConfig類的變化

  1. 爲了避免MyBatis配置與其他類耦合,可以單獨爲MyBatis配置寫一個配置類,代碼示例如下。

4.1 UserInfoDO.java

  • 與 2.1 一致,無變化。

4.2 UserInfoDao.java + UserInfoMapper.xml

  • UserInfoMapper.xmlUserInfoMapper.xml與2.2完全一致。
  • UserInfoDao.java:與2.2的唯一區別在於,這裏不需要在UserInfoDao類上加@Mapper註解。
public interface UserInfoDao {
    UserInfoDO getUserInfoByName(String name);
}

4.3 UserInfoController.java

  • 與 2.3 一致,無變化。

4.4 SsmspringboottestApplication.java

  • 與2.4的唯一區別是,不需要加
@SpringBootApplication@MapperScan註解
public class SsmspringboottestApplication {

	public static void main(String[] args) {
		SpringApplication.run(SsmspringboottestApplication.class, args);
	}

}

4.5 mybatis-config.xml(可選)

  • 與2.5一致,無需變化

4.6 application.properties

  • 與2.6的唯一區別是,不需要再寫MyBatis相關的配置
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver

4.7 pom.xml

  • 與2.7一致,無需變化

4.8 MyBatisConfig.java

  • 這個類是MyBatis配置類,這樣可以不在Application和application.properties文件中加MyBatis註釋和配置。
@Configuration
// 掃描接口類,這個註解只能掃描該包下的mapper接口,不能掃描mapper文件
@MapperScan("com.zijikanwa.ssmspringboottest.dao")
public class MyBatisConfig {
    @Autowired
    DataSource dataSource;

    @Bean(name = "sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactoryBean() throws Exception {
        SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        //添加xml目錄 基於xml實現再開啓下面的配置,如果直接使用@Mapper則不用開啓
        ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        try {
        	// 設置mybatis配置文件路徑
            bean.setConfigLocation(resolver.getResource("classpath:mybatis-config.xml"));
            // 掃描對應的mapper文件
            bean.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml"));
        } catch (Exception e) {
        }
        return bean.getObject();
    }

    @Bean
    public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {
        return new SqlSessionTemplate(sqlSessionFactory);
    }
}

參考資料

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章