文章目录

  • 一. 搭建环境
  • 二. 开发简易的ssm后台程序
  • 1. 建立数据库表
  • 2. 搭建ssm框架
  • 2.1 UserInfoDO.java
  • 2.2 UserInfoDao.java + UserInfoMapper.xml
  • 2.3 UserInfoController.java
  • 2.4 SsmspringboottestApplication.java
  • 2.5 mybatis-config.xml(可选)
  • 2.6 application.properties
  • 2.7 pom.xml
  • 3. postman测试
  • 4. 新增MyBatisConfig类的变化
  • 4.1 UserInfoDO.java
  • 4.2 UserInfoDao.java + UserInfoMapper.xml
  • 4.3 UserInfoController.java
  • 4.4 SsmspringboottestApplication.java
  • 4.5 mybatis-config.xml(可选)
  • 4.6 application.properties
  • 4.7 pom.xml
  • 4.8 MyBatisConfig.java
  • 参考资料



  1. 编程语言:JDK8以上
  2. 开发环境:IDEA
  3. 数据库:MyBatis

一. 搭建环境

  1. 打开IDEA,创建新项目,如下。
  2. 后端框架java 后端框架ssm_xml

  3. 点击Next,输入Group和Artifact。
  4. 后端框架java 后端框架ssm_spring_02

  5. 点击Next,选择Web,勾选Spring Web。
  6. 后端框架java 后端框架ssm_java_03

  7. 点击Next,跳转到如下界面。
  8. 后端框架java 后端框架ssm_xml_04

  9. 点击Finish按钮,生成新项目如下。
  10. 后端框架java 后端框架ssm_后端框架java_05


二. 开发简易的ssm后台程序

1. 建立数据库表

后端框架java 后端框架ssm_后端框架java_06


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测试


后端框架java 后端框架ssm_xml_07


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

参考资料