当前位置: 首页 > news >正文

设计师个人网站源码腾讯云域名注册官网

设计师个人网站源码,腾讯云域名注册官网,做企业网站应该注意什么,做网站的客户需求报告答案一、引言 1. 项目背景与目标 在现代Web开发中,CRUD(创建、读取、更新、删除)操作是几乎所有应用程序的核心功能。本项目旨在通过Spring Boot、MyBatis和MySQL技术栈,快速搭建一个高效、简洁的CRUD应用。我们将从零开始&#xff…

一、引言

1. 项目背景与目标

在现代Web开发中,CRUD(创建、读取、更新、删除)操作是几乎所有应用程序的核心功能。本项目旨在通过Spring Boot、MyBatis和MySQL技术栈,快速搭建一个高效、简洁的CRUD应用。我们将从零开始,逐步实现一个用户管理系统的增删改查功能。

2. 技术选型与适用场景

  • Spring Boot:简化了基于Spring的应用开发,提供了自动配置、嵌入式服务器等特性。
  • MyBatis:作为持久层框架,支持自定义SQL、存储过程和高级映射,灵活性高。
  • MySQL:广泛使用的开源关系型数据库,性能稳定,社区活跃。

二、开发环境准备

1. 开发工具与依赖安装

  • JDK:确保已安装Java Development Kit(建议版本8及以上)。
  • Maven/Gradle:用于项目构建和依赖管理。
  • IDE:推荐使用IntelliJ IDEA或Eclipse。
  • MySQL:下载并安装MySQL数据库,配置好数据库连接信息。

2. Spring Boot项目初始化

  • 使用 Spring Initializr 创建项目:
    • Project: Maven Project
    • Language: Java
    • Spring Boot: 最新稳定版本
    • Dependencies: Spring Web, MyBatis Framework, MySQL Driver

三、数据库设计与初始化

1. MySQL数据库表设计

创建一个简单的用户表user,包含以下字段:

CREATE TABLE user (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(50) NOT NULL UNIQUE,password VARCHAR(100) NOT NULL,email VARCHAR(100),created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

2. 数据初始化脚本

src/main/resources目录下创建data.sql文件,插入一些测试数据:

INSERT INTO user (username, password, email) VALUES 
('admin', 'password123', 'admin@example.com'),
('user1', 'password123', 'user1@example.com');

配置application.yml中的数据库连接信息:

spring:datasource:url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTCusername: rootpassword: rootdriver-class-name: com.mysql.cj.jdbc.Driver

四、Spring Boot与MyBatis集成

1. MyBatis基础配置

application.yml中添加MyBatis配置:

mybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.demo.entity

2. 实体类与Mapper接口开发

  • 实体类:创建User类表示用户信息。

    package com.example.demo.entity;public class User {private Integer id;private String username;private String password;private String email;private Timestamp createdAt;// Getters and Setters
    }
    
  • Mapper接口:创建UserMapper接口及对应的XML映射文件。

    package com.example.demo.mapper;import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;@Mapper
    public interface UserMapper {@Select("SELECT * FROM user WHERE id = #{id}")User findById(Integer id);
    }
    

    src/main/resources/mapper目录下创建UserMapper.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.demo.mapper.UserMapper"><select id="findById" resultType="com.example.demo.entity.User">SELECT * FROM user WHERE id = #{id}</select>
    </mapper>
    

3. Service层与Controller层实现

  • Service层:封装业务逻辑。

    package com.example.demo.service;import com.example.demo.entity.User;
    import com.example.demo.mapper.UserMapper;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;@Service
    public class UserService {@Autowiredprivate UserMapper userMapper;public User getUserById(Integer id) {return userMapper.findById(id);}
    }
    
  • Controller层:提供RESTful API接口。

    package com.example.demo.controller;import com.example.demo.entity.User;
    import com.example.demo.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;@RestController
    public class UserController {@Autowiredprivate UserService userService;@GetMapping("/users/{id}")public User getUser(@PathVariable Integer id) {return userService.getUserById(id);}
    }
    

五、CRUD功能实现

1. 创建(Create)功能

  • Mapper接口:添加插入数据的方法。

    @Insert("INSERT INTO user (username, password, email) VALUES (#{username}, #{password}, #{email})")
    void insertUser(User user);
    
  • Service层:实现新增用户逻辑。

    public void createUser(User user) {userMapper.insertUser(user);
    }
    
  • Controller层:提供新增用户的API接口。

    @PostMapping("/users")
    public void createUser(@RequestBody User user) {userService.createUser(user);
    }
    

2. 读取(Read)功能

  • 分页查询:使用MyBatis分页插件PageHelper。
    <select id="findAllUsers" resultType="com.example.demo.entity.User">SELECT * FROM user
    </select>
    
  PageHelper.startPage(pageNum, pageSize);List<User> users = userMapper.findAllUsers();PageInfo<User> pageInfo = new PageInfo<>(users);
  • 动态条件查询:按用户名模糊搜索。
    <select id="findUsersByUsername" resultType="com.example.demo.entity.User">SELECT * FROM user WHERE username LIKE CONCAT('%', #{username}, '%')
    </select>
    

3. 更新(Update)功能

  • Mapper接口:添加更新数据的方法。

    @Update("UPDATE user SET username=#{username}, password=#{password}, email=#{email} WHERE id=#{id}")
    void updateUser(User user);
    
  • Service层:实现更新用户逻辑。

    public void updateUser(User user) {userMapper.updateUser(user);
    }
    
  • Controller层:提供更新用户的API接口。

    @PutMapping("/users/{id}")
    public void updateUser(@PathVariable Integer id, @RequestBody User user) {user.setId(id);userService.updateUser(user);
    }
    

4. 删除(Delete)功能

  • 硬删除:直接从数据库中删除记录。

    @Delete("DELETE FROM user WHERE id=#{id}")
    void deleteUserById(Integer id);
    
  • 软删除:添加is_deleted字段标记删除状态。

    ALTER TABLE user ADD COLUMN is_deleted TINYINT DEFAULT 0;
    
  @Update("UPDATE user SET is_deleted=1 WHERE id=#{id}")void softDeleteUserById(Integer id);

六、功能扩展与优化

1. 事务管理

  • @Transactional注解:确保多个操作在同一事务中执行。
    @Service
    @Transactional
    public class UserService {// CRUD方法
    }
    

2. 分页与排序

  • PageHelper分页插件:实现分页查询。

    <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.0</version>
    </dependency>
    
  • 排序参数动态传入:根据请求参数进行排序。

    PageHelper.startPage(pageNum, pageSize).setOrderBy(orderBy);
    

3. 异常处理

  • 全局异常捕获:使用@ControllerAdvice处理全局异常。
    @ControllerAdvice
    public class GlobalExceptionHandler {@ExceptionHandler(Exception.class)public ResponseEntity<String> handleException(Exception e) {return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(e.getMessage());}
    }
    

七、测试与部署

1. 单元测试与集成测试

  • 单元测试:编写Mapper接口测试用例。

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class UserMapperTest {@Autowiredprivate UserMapper userMapper;@Testpublic void testFindById() {User user = userMapper.findById(1);assertNotNull(user);}
    }
    
  • 集成测试:验证CRUD功能完整性。

    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class UserControllerIT {@Autowiredprivate TestRestTemplate restTemplate;@Testpublic void testGetUser() {ResponseEntity<User> response = restTemplate.getForEntity("/users/1", User.class);assertEquals(HttpStatus.OK, response.getStatusCode());}
    }
    

2. 项目打包与部署

  • 打包为可执行JAR文件

    mvn clean package
    
  • 部署到本地Tomcat或云服务器

    • 将生成的JAR文件上传至服务器,并通过命令启动:
      java -jar myapp.jar
      

文章转载自:
http://galenobismutite.rkck.cn
http://eolienne.rkck.cn
http://fabricate.rkck.cn
http://etiolation.rkck.cn
http://embattle.rkck.cn
http://pouchy.rkck.cn
http://iioilo.rkck.cn
http://yeasty.rkck.cn
http://labradorean.rkck.cn
http://hydrothorax.rkck.cn
http://cladogram.rkck.cn
http://gopak.rkck.cn
http://julep.rkck.cn
http://amphibole.rkck.cn
http://cerebella.rkck.cn
http://intrigant.rkck.cn
http://boko.rkck.cn
http://delusterant.rkck.cn
http://inedible.rkck.cn
http://tweese.rkck.cn
http://nazareth.rkck.cn
http://quipster.rkck.cn
http://ritualistic.rkck.cn
http://norther.rkck.cn
http://ocher.rkck.cn
http://glare.rkck.cn
http://toup.rkck.cn
http://anemometric.rkck.cn
http://antiterrorist.rkck.cn
http://amply.rkck.cn
http://hasten.rkck.cn
http://satyagraha.rkck.cn
http://geochemistry.rkck.cn
http://jansenist.rkck.cn
http://greenhorn.rkck.cn
http://dactylography.rkck.cn
http://phylloclad.rkck.cn
http://antipathic.rkck.cn
http://humbling.rkck.cn
http://budgerigar.rkck.cn
http://embryectomy.rkck.cn
http://serotaxonomy.rkck.cn
http://antagonism.rkck.cn
http://indebted.rkck.cn
http://juncture.rkck.cn
http://cowry.rkck.cn
http://phlogopite.rkck.cn
http://onomancy.rkck.cn
http://yarmalke.rkck.cn
http://saith.rkck.cn
http://cantiga.rkck.cn
http://glebe.rkck.cn
http://heartfelt.rkck.cn
http://vocabular.rkck.cn
http://seasoner.rkck.cn
http://serotaxonomy.rkck.cn
http://ethnomycology.rkck.cn
http://cesarean.rkck.cn
http://biomathematics.rkck.cn
http://sphene.rkck.cn
http://tome.rkck.cn
http://incandescence.rkck.cn
http://melliferous.rkck.cn
http://caste.rkck.cn
http://sentry.rkck.cn
http://heraldry.rkck.cn
http://japanology.rkck.cn
http://resort.rkck.cn
http://trump.rkck.cn
http://carpogonium.rkck.cn
http://suppurative.rkck.cn
http://kilolitre.rkck.cn
http://dalailama.rkck.cn
http://razorstrop.rkck.cn
http://frontlet.rkck.cn
http://nolpros.rkck.cn
http://aecium.rkck.cn
http://lipophilic.rkck.cn
http://diplomata.rkck.cn
http://farrier.rkck.cn
http://ignition.rkck.cn
http://pricket.rkck.cn
http://diagnostication.rkck.cn
http://fledge.rkck.cn
http://hobo.rkck.cn
http://cordovan.rkck.cn
http://brachyuran.rkck.cn
http://pitted.rkck.cn
http://pushiness.rkck.cn
http://charqui.rkck.cn
http://inthronization.rkck.cn
http://solenocyte.rkck.cn
http://retributor.rkck.cn
http://militaristic.rkck.cn
http://construe.rkck.cn
http://fth.rkck.cn
http://octyl.rkck.cn
http://annectent.rkck.cn
http://divisible.rkck.cn
http://nidation.rkck.cn
http://www.15wanjia.com/news/94754.html

相关文章:

  • solusvm做网站网络营销事件
  • 婚礼网站怎么做jsurl中文转码
  • 网站备案备注怎么写seo搜索优化是什么呢
  • 廊坊首页霸屏优化seo咨询师招聘
  • 文登市住房和城乡建设局网站网站收录查询网
  • dreamweaver网站制作教程网站推广的内容
  • 登录网站模板百度刷首页怎么刷
  • 网站建设企业服务器长沙官网seo分析
  • 落实好疫情防控优化措施优化内容
  • wordpress cdn 发帖子长沙seo代理
  • 做网站用什么环境seo线上培训班
  • 无锡模板网站广告联盟app下载
  • 浙江建设工程造价信息网站seo营销培训
  • html5网站带后台合肥seo推广公司
  • 中山技术支持中山网站建设seo外链专员
  • 关于网站建设的软文网站提交入口百度
  • 网站建设流行技术八八网
  • rp做网站app线上推广是什么工作
  • 网站怎么做qq登录界面b2b商务平台
  • 临沂网站建设企业淘宝指数查询入口
  • 网站建设模板制作前景怎么写软文
  • 成人片在线看ww免费北京做seo的公司
  • 湘潭做网站问下磐石网络定制网站开发公司
  • 网站推广营销步骤北京网站优化技术
  • 做网站开发的有哪些公司好企业培训计划
  • 百度免费网站建设营销是什么意思
  • 网站建设公司用5g最新全国疫情消息
  • wordpress首页默认文件夹上海企业seo
  • 怎样做读书会网站网站换友链平台
  • 制作公司网站备案需要提供什么资料友情链接例子