文章目录
- 一. 搭建环境
- 二. 开发简易的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
- 参考资料
- 编程语言:JDK8以上
- 开发环境:IDEA
- 数据库:MyBatis
一. 搭建环境
- 打开IDEA,创建新项目,如下。
- 点击Next,输入Group和Artifact。
- 点击Next,选择Web,勾选Spring Web。
- 点击Next,跳转到如下界面。
- 点击Finish按钮,生成新项目如下。
二. 开发简易的ssm后台程序
1. 建立数据库表
2. 搭建ssm框架
- 整体结构如下所示。
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
UserInfoDao.java
// @Mapper // 跟在Application类上加@MapperScan注解作用一样(但@Mapper需要在每个Dao类上加注解),表示扫描mapper接口
public interface UserInfoDao {
UserInfoDO getUserInfoByName(String name);
}
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(可选)
- 说明
- 可以将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类的变化
- 为了避免MyBatis配置与其他类耦合,可以单独为MyBatis配置写一个配置类,代码示例如下。
4.1 UserInfoDO.java
- 与 2.1 一致,无变化。
4.2 UserInfoDao.java + UserInfoMapper.xml
-
UserInfoMapper.xml
:UserInfoMapper.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);
}
}
参考资料
- Spring Boot(六):如何优雅的使用 Mybatis