Mybatis教程
Mybatis 简介
Mybatis 概述
Mybatis 与 Hibernate 对比
环境搭建
JDK、MySQL、Maven 安装配置
Mybatis 依赖添加
Mybatis 配置文件
mybatis-config.xml 全局配置文件
Mapper XML文件
Mybatis 核心概念
CRUD 操作
高级映射
动态 SQL
事务管理
Mybatis 与 Spring 集成
Mybatis 插件开发
性能优化
Mybatis 常见问题及解决方案
实战案例
-
+
首页
实战案例
让我们通过一个具体的实战案例来展示项目需求分析、数据库设计以及业务逻辑实现的具体代码实操步骤。我们将创建一个简单的博客系统,包括文章的增删改查功能。 ### 1. 项目需求分析 项目需求如下: - 用户可以查看文章列表。 - 用户可以创建新文章。 - 用户可以编辑和删除已有文章。 ### 2. 数据库设计 首先,我们需要设计数据库表。以下是文章表(`posts`)的SQL创建语句: ```sql CREATE TABLE posts ( id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255) NOT NULL, content TEXT NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ); ``` ### 3. 业务逻辑实现 #### 3.1 设置Spring Boot项目 使用Spring Initializr(https://start.spring.io/)生成一个Spring Boot项目,包含以下依赖: - Spring Web - MyBatis Framework - MySQL Driver #### 3.2 配置application.properties 在`src/main/resources/application.properties`文件中配置数据库连接: ```properties spring.datasource.url=jdbc:mysql://localhost:3306/blog?useSSL=false spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver mybatis.mapper-locations=classpath:mapper/*.xml ``` #### 3.3 创建实体类 在`src/main/java/com/example/blog/model`目录下创建`Post.java`: ```java package com.example.blog.model; import java.time.LocalDateTime; public class Post { private Integer id; private String title; private String content; private LocalDateTime createdAt; private LocalDateTime updatedAt; // Getters and setters } ``` #### 3.4 创建Mapper接口和XML文件 在`src/main/java/com/example/blog/mapper`目录下创建`PostMapper.java`: ```java package com.example.blog.mapper; import com.example.blog.model.Post; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @Mapper public interface PostMapper { int insertPost(Post post); int updatePost(Post post); int deletePost(int id); @Select("SELECT * FROM posts WHERE id = #{id}") Post selectPostById(int id); @Select("SELECT * FROM posts") java.util.List<Post> selectAllPosts(); } ``` 在`src/main/resources/mapper`目录下创建`PostMapper.xml`: ```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.example.blog.mapper.PostMapper"> <resultMap id="PostResult" type="com.example.blog.model.Post"> <id property="id" column="id" /> <result property="title" column="title" /> <result property="content" column="content" /> <result property="createdAt" column="created_at" /> <result property="updatedAt" column="updated_at" /> </resultMap> <insert id="insertPost" parameterType="com.example.blog.model.Post"> INSERT INTO posts (title, content) VALUES (#{title}, #{content}) </insert> <update id="updatePost" parameterType="com.example.blog.model.Post"> UPDATE posts SET title = #{title}, content = #{content} WHERE id = #{id} </update> <delete id="deletePost" parameterType="int"> DELETE FROM posts WHERE id = #{id} </delete> <select id="selectPostById" resultMap="PostResult"> SELECT * FROM posts WHERE id = #{id} </select> <select id="selectAllPosts" resultMap="PostResult"> SELECT * FROM posts </select> </mapper> ``` #### 3.5 创建Service层 在`src/main/java/com/example/blog/service`目录下创建`PostService.java`: ```java package com.example.blog.service; import com.example.blog.mapper.PostMapper; import com.example.blog.model.Post; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class PostService { @Autowired private PostMapper postMapper; public int insertPost(Post post) { return postMapper.insertPost(post); } public int updatePost(Post post) { return postMapper.updatePost(post); } public int deletePost(int id) { return postMapper.deletePost(id); } public Post selectPostById(int id) { return postMapper.selectPostById(id); } public List<Post> selectAllPosts() { return postMapper.selectAllPosts(); } } ``` #### 3.6 创建Controller层 在`src/main/java/com/example/blog/controller`目录下创建`PostController.java`: ```java package com.example.blog.controller; import com.example.blog.model.Post; import com.example.blog.service.PostService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/api/posts") public class PostController { @Autowired private PostService postService; @PostMapping public int createPost(@RequestBody Post post) { return postService.insertPost(post); } @PutMapping("/{id}") public int updatePost(@PathVariable int id, @RequestBody Post post) { post.setId(id); return postService.updatePost(post); } @DeleteMapping("/{id}") public int deletePost(@PathVariable int id) { return postService.deletePost(id); } @GetMapping("/{id}") public Post getPostById(@PathVariable int id) { return postService.selectPostById(id); } @GetMapping public List<Post> getAllPosts() { return postService.selectAllPosts(); } } ``` 以上步骤展示了从项目需求分析到数据库设计,再到业务逻辑实现的具体代码实操。这个简单的博客系统包含了文章的增删改查功能,涵盖了Spring Boot和MyBatis的基本使用。
wwbang
2024年12月27日 10:19
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码