SSM整合使用

1. 项目创建

创建一个空maven项目:
在这里插入图片描述

2. spring

(1) 导包

 <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.22</version>
    </dependency>

(2) 配置类

@Configuration
public class SpringConfig {

}

3. mybatis

(1) maven导包

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.13</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.23</version>
    </dependency>

(2) mybatis配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <properties resource="jdbc.properties"></properties>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--指定mapper映射文件在哪-->
        <mapper resource=""/>
    </mappers>
</configuration>

(3) 连接配置文件

driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/stu
username = root
password = xjy1234

(4) mapper映射文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xjy.Mapper">
    
</mapper>

在这里插入图片描述

(5) 在spring配置类中注册sqlsession的bean

    @Bean
    public SqlSession getSqlSession() throws IOException {
        return new SqlSessionFactoryBuilder()
                .build(Resources.getResourceAsStream("MybatisConfig.xml"))
                .openSession();
    }

springMVC

(1) maven导包

	<!--需要注释掉上面引入的spring-context,不然可能会引起版本冲突(spring-webmvc已经含有spring-context)-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>6.0.11</version>
    </dependency>
    <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>5.0.0</version>
    </dependency>
        <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.13.3</version>
    </dependency>

(2) springMVC配置类

@Configuration
@EnableWebMvc
public class MvcConfig{
}

(3) 初始化类

public class servletInit extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{MvcConfig.class};
    }

    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}

5. 测试

(1) 创建3层架构

在这里插入图片描述
分别在spring配置类和mvc配置类中添加包扫描:

@ComponentScan({"com.xjy.service"}) // spring包扫描
@ComponentScan("com.xjy.controller")//mvc包扫描

(2) 编写Controller层

@RestController
@RequestMapping("/user")
public class userController {

    @Autowired
    private UserService userService;
    @GetMapping("/{id}")
    @ResponseBody
    public String getUserName(@PathVariable int id) throws IOException {
        System.out.println("接受到请求");
        String name = userService.getUserName(id);
        System.out.println("controller接受到返回结果"+name);
        return name;
    }
}

service层

接口:

package com.xjy.service;

public interface UserService {
    String getUserName(int id);
}

实现类:

@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private SqlSession session;
    @Override
    public String getUserName(int id) throws IOException {
        UserMapper mapper = session.getMapper(UserMapper.class);
        String name = mapper.getUserName(id);
        return name;
    }
}

mapper(dao)层

接口:

public interface UserMapper {
    String getUserName(int id);
}

sql映射文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xjy.mapper.UserMapper">
    <select id="getUserName" resultType="java.lang.String">
        select name from user where id = #{id}
    </select>
</mapper>

tomcat部署启动

打包方式修改为war:
在这里插入图片描述
访问路劲修改为/:
在这里插入图片描述
启动tomcat服务,用postman进行访问:
在这里插入图片描述
成功接收:
在这里插入图片描述

  • 27
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,这个问题需要对SSM整合以及注解有一定的了解。首先,SSM整合指的是SpringSpringMVC、MyBatis三个框架的整合,而多对多查询是指在数据库中,两个表之间存在多对多的关系,需要通过中间表来进行查询。 使用注解的方式实现多对多查询,可以通过在Mapper接口中定义方法,并使用注解来配置SQL语句。 首先,在多对多关系中,需要定义一个中间表来存储两个表之间的关系。假设我们有两个表:`student`和`course`,它们之间的关系是多对多,那么我们需要定义一个中间表`student_course`,它的结构可能是这样的: ```mysql CREATE TABLE student_course ( id INT(11) NOT NULL AUTO_INCREMENT, student_id INT(11) NOT NULL, course_id INT(11) NOT NULL, PRIMARY KEY (id), KEY student_id (student_id), KEY course_id (course_id), CONSTRAINT fk_student_course_student FOREIGN KEY (student_id) REFERENCES student (id), CONSTRAINT fk_student_course_course FOREIGN KEY (course_id) REFERENCES course (id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; ``` 然后,在MyBatis的Mapper接口中定义方法,使用注解来配置SQL语句: ```java public interface StudentMapper { // 查询某个学生所选的所有课程 @Select("SELECT c.* FROM course c JOIN student_course sc ON c.id = sc.course_id WHERE sc.student_id = #{studentId}") List<Course> selectCoursesByStudentId(Long studentId); // 查询某个课程的所有学生 @Select("SELECT s.* FROM student s JOIN student_course sc ON s.id = sc.student_id WHERE sc.course_id = #{courseId}") List<Student> selectStudentsByCourseId(Long courseId); } ``` 这样就可以使用纯注解的方式实现多对多查询了。需要注意的是,在使用注解的方式时,需要在MyBatis的配置文件中开启注解扫描: ```xml <mybatis:scan base-package="com.example.mapper"/> ``` 同时,在Spring的配置文件中也需要配置MyBatis的Mapper扫描器: ```xml <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.mapper"/> </bean> ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值