目录

案例

# 案例

之前几章已经介绍了Mybatis、Spring、SpringMVC三个框架的用法 现在我们将尝试结合这三个框架,共同搭建一个完整的网站服务

# 项目依赖

<dependencies>
	<!-- 调试 -->  
    <dependency>        
	    <groupId>junit</groupId>  
        <artifactId>junit</artifactId>  
        <version>4.11</version>  
        <scope>test</scope>  
    </dependency>    
    <!-- spring支持三件套 -->  
    <dependency>        
	    <groupId>org.springframework</groupId>  
        <artifactId>spring-jdbc</artifactId>  
        <version>5.3.20</version>  
    </dependency>    
	<dependency>        
		<groupId>org.springframework</groupId>  
        <artifactId>spring-webmvc</artifactId>  
        <version>5.2.10.RELEASE</version>  
    </dependency>   
    <dependency>        
	    <groupId>org.springframework</groupId>  
        <artifactId>spring-test</artifactId>  
        <version>5.3.20</version>  
    </dependency>    
    <!-- Mybatis -->  
    <dependency>        
	    <groupId>org.mybatis</groupId>  
        <artifactId>mybatis</artifactId>  
        <version>3.5.7</version>  
    </dependency>    
    <dependency>        
	    <groupId>org.mybatis</groupId>  
        <artifactId>mybatis-spring</artifactId>  
        <version>2.0.7</version>  
    </dependency>
    <!-- 数据库 -->      
    <dependency>        
	    <groupId>mysql</groupId>  
        <artifactId>mysql-connector-java</artifactId>  
        <version>8.0.29</version>  
    </dependency>  
        <dependency>        
	    <groupId>com.alibaba</groupId>  
        <artifactId>druid</artifactId>  
        <version>1.2.10</version>  
    </dependency>   
    <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.13.3</version>  
    </dependency>
</dependencies>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

# 项目结构

![[Pasted image 20220615202625.png]]

# 项目配置(config)

//SpringConfig
@Configuration  
@ComponentScan({"com.project.service","com.project.dao"})  
@Import({jdbcConfig.class,MyBatisConfig.class})  
@PropertySource(value="classpath:jdbc.properties")  
public class SpringConfig {  
}
1
2
3
4
5
6
7
//SpringMVCConfig
@Configuration  
@ComponentScan("com.project.controller")  
@EnableWebMvc  
public class SpringMVCConfig {  
}
1
2
3
4
5
6

数据库配置

// jdbcConfig
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;  
  
    @Bean  
    public DataSource dataSource(){  
        DruidDataSource dds = new DruidDataSource();  
        dds.setDriverClassName(driver);  
        dds.setUrl(url);  
        dds.setUsername(username);  
        dds.setPassword(password);  
        return dds;  
    }  
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// MyBatisConfig
public class MyBatisConfig {  
    @Bean  
    public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource){  
        SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();  
        ssfb.setDataSource(dataSource);  
        return ssfb;  
    }  
  
    @Bean  
    public MapperScannerConfigurer mapperScannerConfigurer(){  
        MapperScannerConfigurer msc = new MapperScannerConfigurer();  
        msc.setBasePackage("com.project.dao");  
        return msc;  
    }  
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// ServletConfig
public class ServletConfig extends AbstractAnnotationConfigDispatcherServletInitializer {  
    @Override  
    protected Class<?>[] getRootConfigClasses() {  
        return new Class[]{SpringConfig.class};  
    }  
  
    @Override  
    protected Class<?>[] getServletConfigClasses() {  
        return new Class[]{SpringMVCConfig.class};  
    }  
  
    @Override  
    protected String[] getServletMappings() {  
        return new String[]{"/"};  
    }  
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# POJO配置

package com.project.domain;  
  
public class User {  
    private int id;  
    private String username;  
    private String password;  
  
    public int getId() {  
        return id;  
    }  
  
    public void setId(int id) {  
        this.id = id;  
    }  
  
    public String getUsername() {  
        return username;  
    }  
  
    public void setUsername(String username) {  
        this.username = username;  
    }  
  
    public String getPassword() {  
        return password;  
    }  
  
    public void setPassword(String password) {  
        this.password = password;  
    }  
  
    @Override  
    public String toString() {  
        return "User{" +  
                "id=" + id +  
                ", username='" + username + '\'' +  
                ", password='" + password + '\'' +  
                '}';  
    }  
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40

# DAO

@Component  
public interface UserSearch {  
    @Select("select * from user")  
    List<User> selectAll();  
    @Select("select * from user where id = #{id}")  
    User selectById(@Param("id") int id);  
}
1
2
3
4
5
6
7

# Service

@Component  
public class UserSearchImpl{  
    @Autowired  
    private UserSearch userSearch;  
  
    public User selectById(int id) {  
        return userSearch.selectById(id);  
    }  
    public List<User> selectAll() {  
        return userSearch.selectAll();  
    }  
  
}
1
2
3
4
5
6
7
8
9
10
11
12
13

# Controller

@RestController  
@RequestMapping("/users")  
public class WebController {  
    @Autowired  
    UserSearchImpl userSearch;  
  
    @GetMapping("/{id}")  
    @ResponseBody  
    public String get(@PathVariable int id){  
        return userSearch.selectById(id).toString();  
    }  
}
1
2
3
4
5
6
7
8
9
10
11
12
最近更新
01
基本知识
07-18
02
卷积神经网络识别图像
07-18
03
损失函数
07-18
更多文章>