spring项目详细结构目录

controller 存放控制器(Controller)类,处理请求和返回响应。
mapper 存放数据访问层(Mapper)接口和对应的XML文件。
model 存放模型(Model)类,与数据库表对应。
service 存放服务(Service)接口和实现类
impl

resources
mapper文件 存放Mapper接口对应的XML文件,定义SQL语句和映射关系。
mybatis-config.xml:MyBatis的主配置文件,配置数据库连接等全局设置。
db.properties:数据库连接信息的配置文件。

project-name
├── src
│   ├── main
│   │   ├── java        # Java代码目录
│   │   │   ├── com.example.project.controller      # 控制器包
│   │   │   ├── com.example.project.mapper          # Mapper接口和XML文件包
│   │   │   ├── com.example.project.model           # 模型包
│   │   │   ├── com.example.project.service         # 业务逻辑包
│   │   │   └── com.example.project.util            # 工具类包
│   │   ├── resources   # 资源目录
│   │   │   ├── mapper  # 存放Mapper对应的XML文件
│   │   │   ├── mybatis-config.xml                  # MyBatis主配置文件
│   │   │   └── db.properties                       # 数据库连接配置文件
│   │   └── webapp      # Web资源目录
│   │       ├── WEB-INF # Web应用配置目录
│   │       │   ├── web.xml                         # Web应用配置文件
│   │       │   └── spring.xml                      # Spring配置文件(如果使用Spring)
│   │       ├── index.jsp                           # 首页JSP文件
│   │       └── static                              # 静态资源目录
│   │           ├── css                             # CSS文件目录
│   │           ├── js                              # JavaScript文件目录
│   │           └── images                          # 图片目录
└── pom.xml             # Maven项目配置文件

一、项目结构

1、model模型类Student

public class Student {
    private Long id;
    private String name;
    private Integer age;
    private String gender;
    // getter 和 setter 方法省略
}

2、mapper 数据访问层接口和映射文件

接口类StudentMapper

// 2. 定义数据访问层接口和映射文件

package com.example.mapper;

public interface StudentMapper {
    void insert(Student student);                   // 插入学生信息
    void delete(Long id);                           // 删除学生信息
    void update(Student student);                   // 更新学生信息
    Student selectById(Long id);                     // 根据ID查询学生信息
    List<Student> selectAll();                       // 查询所有学生信息
}


接下来创建名为 StudentMapper.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" >
<!-- StudentMapper.xml -->
<!-- 映射SQL语句和Java对象之间的关系 -->
<mapper namespace="com.example.mapper.StudentMapper">
    
    <!-- 定义结果映射 -->
    <resultMap id="StudentResultMap" type="com.example.model.Student">
        <id column="id" property="id"/>
        <result column="name" property="name"/>
        <result column="age" property="age"/>
        <result column="gender" property="gender"/>
    </resultMap>

    <!-- 插入学生信息 -->
    <insert id="insert" parameterType="com.example.model.Student">
        INSERT INTO student(name, age, gender) VALUES(#{name}, #{age}, #{gender})
    </insert>

    <!-- 删除学生信息 -->
    <delete id="delete" parameterType="java.lang.Long">
        DELETE FROM student WHERE id=#{id}
    </delete>

    <!-- 更新学生信息 -->
    <update id="update" parameterType="com.example.model.Student">
        UPDATE student SET name=#{name}, age=#{age}, gender=#{gender} WHERE id=#{id}
    </update>

    <!-- 根据ID查询学生信息 -->
    <select id="selectById" resultMap="StudentResultMap">
        SELECT * FROM student WHERE id=#{id}
    </select>

    <!-- 查询所有学生信息 -->
    <select id="selectAll" resultMap="StudentResultMap">
        SELECT * FROM student
    </select>

</mapper>


3、service 服务层接口和实现类

创建名为 StudentService 的 Java 接口

// 3. 定义服务层接口和实现类

package com.example.service;

public interface StudentService {
    void add(Student student);                  // 添加学生信息
    void remove(Long id);                       // 删除学生信息
    void modify(Student student);               // 修改学生信息
    Student findById(Long id);                  // 根据ID查询学生信息
    List<Student> findAll();                    // 查询所有学生信息
}


创建名为 StudentServiceImpl 的实现类

@Service
public class StudentServiceImpl implements StudentService {

    @Autowired
    private StudentMapper studentMapper;

    @Override
    public void add(Student student) {
        studentMapper.insert(student);
    }

    @Override
    public void remove(Long id) {
        studentMapper.delete(id);
    }

    @Override
    public void modify(Student student) {
        studentMapper.update(student);
    }

    @Override
    public Student findById(Long id) {
        return studentMapper.selectById(id);
    }

    @Override
    public List<Student> findAll() {
        return studentMapper.selectAll();
    }
}

4、controller

创建名为 StudentController 的 Java 类

// 4. 编写控制器类

@Controller
public class StudentController {

    @Autowired
    private StudentService studentService;

    // 处理显示学生列表的请求
    @GetMapping("/students")
    public ModelAndView showStudents() {
        List<Student> students = studentService.findAll();
        ModelAndView mav = new ModelAndView("students");    // 返回视图名为"students"
        mav.addObject("students", students);                // 将学生列表添加到模型中
        return mav;
    }

    // 处理显示添加学生页面的请求
    @GetMapping("/students/new")
    public ModelAndView showAddStudentForm() {
        ModelAndView mav = new ModelAndView("add_student_form");   // 返回视图名为"add_student_form"
        mav.addObject("student", new Student());                  // 创建一个空的学生对象,并添加到模型中
        return mav;
    }

    // 处理提交添加学生的请求
    @PostMapping("/students")
    public String addStudent(@ModelAttribute("student") Student student) {
        studentService.add(student);
        return "redirect:/students";     // 重定向到学生列表页面
    }

    // 处理显示修改学生页面的请求
    @GetMapping("/students/{id}/edit")
    public ModelAndView showEditStudentForm(@PathVariable Long id) {
        Student student = studentService.findById(id);
        ModelAndView mav = new ModelAndView("edit_student_form");    // 返回视图名为"edit_student_form"
        mav.addObject("student", student);                           // 将要修改的学生对象添加到模型中
        return mav;
    }

    // 处理提交修改学生的请求
    @PutMapping("/students/{id}")
    public String updateStudent(@PathVariable Long id, @ModelAttribute("student") Student student) {
        student.setId(id);
        studentService.modify(student);
        return "redirect:/students";     // 重定向到学生列表页面
    }

    // 处理删除学生的请求
    @DeleteMapping("/students/{id}")
    public String deleteStudent(@PathVariable Long id) {
        studentService.remove(id);
        return "redirect:/students";     // 重定向到学生列表页面
    }
}


5、配置 resources

在resources进行配置

5-1、mapper

在resources新建一个mapper文件
存放Mapper接口对应的XML文件,定义SQL语句和映射关系。

5-2、mysqldb.properties

数据库连接信息的配置文件。

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/student?useSSL=false
user=root
pwd=123456789

5-3、spring.xml

配置 Spring 容器和 MyBatis 相关内容,如数据源、事务管理等

<!-- 配置数据源 -->
<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource">
    <property name="driverClassName" value="${spring.datasource.driver-class-name}"/>
    <property name="jdbcUrl" value="${spring.datasource.url}"/>
    <property name="username" value="${spring.datasource.username}"/>
    <property name="password" value="${spring.datasource.password}"/>
    <property name="minimumIdle" value="${spring.datasource.hikari.minimumIdle}"/>
    <property name="maximumPoolSize" value="${spring.datasource.hikari.maximumPoolSize}"/>
</bean>

<!-- 配置 SqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>

<!-- 配置 MapperScannerConfigurer -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.example.mapper"/>
</bean>

<!-- 配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource"/>
</bean>

<!-- 开启基于注解的事务 -->
<tx:annotation-driven transaction-manager="transactionManager"/>

5-4、springmvc.xml

配置 SpringMVC 相关内容,例如视图解析器、处理器映射等

<mvc:annotation-driven/>

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

<mvc:resources mapping="/static/**" location="/static/"/>

<mvc:interceptors>
    <mvc:interceptor>
        <mvc:mapping path="/**"/>
        <bean class="com.example.interceptor.TimeInterceptor"></bean>
    </mvc:interceptor>
</mvc:interceptors>

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小王꧔ꦿ

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值