1.1.1
系统架构图
1.1.2
创建数据库表
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; text-indent: 21.0pt; font-size: 10.5pt; font-family: Consolas }
h1 { margin-top: 17.0pt; margin-right: 0cm; margin-bottom: 16.5pt; margin-left: 42.6pt; text-align: justify; text-indent: 0cm; line-height: 200%; page-break-after: avoid; font-size: 22.0pt; font-family: Consolas }
h2 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 49.8pt; text-align: justify; text-indent: 0cm; line-height: 150%; page-break-after: avoid; font-size: 14.0pt; font-family: "Franklin Gothic Medium" }
h3 { margin-top: 13.0pt; margin-right: 0cm; margin-bottom: 13.0pt; margin-left: 21.0pt; text-align: justify; text-indent: 0cm; line-height: 172%; page-break-after: avoid; font-size: 10.5pt; font-family: Consolas }
h4 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.5pt; margin-left: 43.2pt; text-align: justify; text-indent: 0cm; line-height: 156%; page-break-after: avoid; font-size: 14.0pt; font-family: "Franklin Gothic Medium" }
h5 { margin-top: 14.0pt; margin-right: 0cm; margin-bottom: 14.5pt; margin-left: 50.4pt; text-align: justify; text-indent: 0cm; line-height: 156%; page-break-after: avoid; font-size: 14.0pt; font-family: Consolas }
h6 { margin-top: 12.0pt; margin-right: 0cm; margin-bottom: 3.2pt; margin-left: 78.6pt; text-align: justify; text-indent: 0cm; line-height: 133%; page-break-after: avoid; font-size: 12.0pt; font-family: "Franklin Gothic Medium" }
p.MsoHeading7,li.MsoHeading7,div.MsoHeading7 { margin-top: 12.0pt; margin-right: 0cm; margin-bottom: 3.2pt; margin-left: 85.8pt; text-align: justify; text-indent: 0cm; line-height: 133%; page-break-after: avoid; font-size: 12.0pt; font-family: Consolas; font-weight: bold }
p.MsoHeading8,li.MsoHeading8,div.MsoHeading8 { margin-top: 12.0pt; margin-right: 0cm; margin-bottom: 3.2pt; margin-left: 93.0pt; text-align: justify; text-indent: 0cm; line-height: 133%; page-break-after: avoid; font-size: 12.0pt; font-family: "Franklin Gothic Medium" }
p.MsoHeading9,li.MsoHeading9,div.MsoHeading9 { margin-top: 12.0pt; margin-right: 0cm; margin-bottom: 3.2pt; margin-left: 100.2pt; text-align: justify; text-indent: 0cm; line-height: 133%; page-break-after: avoid; font-size: 10.5pt; font-family: "Franklin Gothic Medium" }
span.1
{ font-family: Consolas; font-weight: bold }
span.2
{ font-family: "Franklin Gothic Medium"; font-weight: bold }
span.3
{ font-family: Consolas; font-weight: bold }
span.4
{ font-family: "Franklin Gothic Medium"; font-weight: bold }
span.5
{ font-family: Consolas; font-weight: bold }
span.6
{ font-family: "Franklin Gothic Medium"; font-weight: bold }
span.7
{ font-family: Consolas; font-weight: bold }
span.8
{ font-family: "Franklin Gothic Medium" }
span.9
{ font-family: "Franklin Gothic Medium" }
p.a,li.a,div.a { margin: 0cm; margin-bottom: .0001pt; text-indent: 21.0pt; background: #D9D9D9; font-size: 10.5pt; font-family: Consolas }
p.a0,li.a0,div.a0 { margin: 0cm; margin-bottom: .0001pt; text-align: center; text-indent: 21.0pt; font-size: 9.0pt; font-family: Consolas; color: #464646 }
span.Char { font-family: Consolas; background: #D9D9D9 }
span.Char0 { font-family: Consolas; color: #464646 }
.MsoChpDefault { font-size: 10.0pt }
div.WordSection1 { }
ol { margin-bottom: 0cm }
ul { margin-bottom: 0cm }
创建mybatisdb数据库,设置utf8字符集。
创建user表:
DROP TABLE IF EXISTS `user`;CREATE TABLE `user` ( `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘用户id‘, `user_name` varchar(100) COLLATE utf8mb4_bin NOT NULL DEFAULT ‘‘ COMMENT ‘用户名‘, `birthday` bigint(20) NOT NULL DEFAULT ‘0‘ COMMENT ‘生日‘, `address` varchar(200) COLLATE utf8mb4_bin NOT NULL DEFAULT ‘‘ COMMENT ‘住址‘, `create_time` bigint(20) NOT NULL DEFAULT ‘0‘ COMMENT ‘创建时间‘, `update_time` bigint(20) NOT NULL DEFAULT ‘0‘ COMMENT ‘更新时间‘, `create_by` varchar(64) COLLATE utf8mb4_bin NOT NULL DEFAULT ‘‘ COMMENT ‘创建者ID或名称‘, `update_by` varchar(64) COLLATE utf8mb4_bin NOT NULL DEFAULT ‘‘ COMMENT ‘更新者ID或名称‘, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=56 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT=‘商品品牌‘; insert into `user`(`user_name`,`birthday`,`address`,`create_time`,`create_by`) values(‘张三‘,1546393586074,‘桂州村‘, 1546393586074, ‘admin‘),(‘李四‘,1546393586074,‘王府井‘, 1546393586074, ‘admin‘);
1.1.3 创建SpringBoot工程,创建simple project,类型为jar
1.1.4
pom.xml
额外需要的jar,还得自己依赖,例如:mysql驱动包,阿里的数据源druid包
pasting
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>demo</name> <description>Spring Boot整合SSM</description> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> <mybatis-plus.version>2.1.9</mybatis-plus.version> <druid.version>1.1.5</druid.version> </properties> <dependencies> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--数据库连接为mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!--durid数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
1.1.5 User.java
package com.example.demo.entity; import lombok.Data; import java.io.Serializable; @Datapublic class User implements Serializable { private static final long serialVersionUID = 1L; private Integer id; private String name; // 不用Date类型做日期,因为实际开发中数据库表不会用Date类型// @DateTimeFormat(pattern="yyyy-MM-dd")// private Date birthday; private String birthday; private String address;}
1.1.6
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.staritgp.platform.demo.mapper.SysDeptMapper"> <!-- 通用查询映射结果 --> <resultMap id="BaseResultMap" type="com.example.demo.entity.User"> <id column="user_id" property="userId" /> <result column="user_name" property="userName" /> <result column="birthday" property="birthday" /> <result column="address" property="address" /> <result column="create_time" property="createTime" /> <result column="update_time" property="updateTime" /> <result column="create_by" property="createBy" /> <result column="update_by" property="updateBy" /> </resultMap> <!-- 通用查询结果列 --> <sql id="Base_Column_List"> user_id AS userId, user_name AS userName, birthday AS birthday, address AS address, create_time AS createTime, update_time AS updateTime, create_by AS createBy, update_by AS updateBy </sql> <select id="findAll" resultType="com.example.demo.entity.User"> select <include refid="Base_Column_List"></include> from sys_dept where 1=1 <if test="userName != null and userName != ‘‘"> <!-- 名称模糊查询 --> AND user_name like CONCAT(‘%‘,#{userName},‘%‘) </if> <if test="userId != null and userId != ‘‘"> AND user_id = #{userId} </if> <if test="createTime != null"> AND create_time = #{createTime} </if> <if test="updateTime != null"> AND update_time = #{updateTime} </if> <if test="createBy != null and createBy != ‘‘"> AND create_by = #{createBy} </if> <if test="updateBy != null and updateBy != ‘‘"> AND update_by = #{updateBy} </if> </select> </mapper>
1.1.7
UserMapper.java 接口
package com.example.demo.mapper;
import com.example.demo.entity.User;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapperpublic interface UserMapper {
/** * 自定义分页sql,调用xml方式 * @param user * @return */ List<User> findAll(User user);
// 调用注解方式 @Select("select * from user where user_id=#{id}") public User findById(Integer id);}
package com.example.demo.mapper; import com.example.demo.entity.User;import org.apache.ibatis.annotations.Mapper;import org.apache.ibatis.annotations.Select; import java.util.List; @Mapperpublic interface UserMapper { /** * 自定义分页sql,调用xml方式 * @param user * @return */ List<User> findAll(User user); // 调用注解方式 @Select("select * from user where user_id=#{id}") public User findById(Integer id);}
1.1.8
UserService.java
package com.example.demo.service.impl;
import com.example.demo.entity.User;import com.example.demo.mapper.UserMapper;import com.example.demo.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;
import java.util.List;
@Servicepublic class UserServiceImpl implements UserService {
@Autowired private UserMapper userMapper;
@Override public User findById(Integer id) { return userMapper.findById(id); }
@Override public List<User> findAll(User user) { return userMapper.findAll(user); }}
package com.example.demo.service.impl; import com.example.demo.entity.User;import com.example.demo.mapper.UserMapper;import com.example.demo.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import java.util.List; @Servicepublic class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User findById(Integer id) { return userMapper.findById(id); } @Override public List<User> findAll(User user) { return userMapper.findAll(user); }}
1.1.9
UserServiceImpl.java
package com.example.demo.service.impl; import com.example.demo.entity.User;import com.example.demo.mapper.UserMapper;import com.example.demo.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import java.util.List; @Servicepublic class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public User findById(Integer id) { return userMapper.findById(id); } @Override public List<User> findAll(User user) { return userMapper.findAll(user); }}
1.1.10
UserController.java
使用@RestController替代@Controller和@ResponseBody(返回json串)
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.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController@RequestMapping(value = "/user")public class UserController { @Autowired private UserService userService;
@RequestMapping("/find") public List<User> findAll(User user) { return userService.findAll(user); }
@RequestMapping("/get/{id}") public User findById(@PathVariable Integer id){ return userService.findById(id); }
}
1.1.11
application.yml
全局配置文件,yml为新的配置文件方式,注意其中格式为空格,不能有tab。
配置端口,配置数据源,配置mybatis全局配置。
注意:如果端口,启动时日志显示8080,说明此文件未加载。检查原因一般是文件名或者路径不正确。
# 服务端口server: port: 8081# 数据连接池配置,druid 比 c3p0 还牛逼spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/mybatisdb username: root password: root# com.example.demo 的子目录中的内容都会打印日志logging: level: com.example.demo: debug
1.1.12
RunApplication.java
package com.example.demo;
import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication// 扫描该包下的所有内容,什么mapperscan都不用管,约定大于配置@ComponentScan(basePackages = {"com.example.demo"})public class DemoApplication {
public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }
}
package com.example.demo; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.annotation.ComponentScan; @SpringBootApplication// 扫描该包下的所有内容,什么mapperscan都不用管,约定大于配置@ComponentScan(basePackages = {"com.example.demo"})public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
1.2
拓展:约定大于配置
1.2.1
在哪里约定的?
各组件都有注解形式的自动配置类,可以点进去看看,Spring帮我们定义了一个约定,遵守这个约定可以少好多事情,而且还不容易出错。
spring-boot-autoconfigure-1.5.4.RELEASE.jar
mybatis-spring-boot-autoconfigure-1.3.0.jar
pagehelper-spring-boot-autoconfigure-1.2.2.jar
1.3
实现CRUD操作
1.3.1
注解方式接口
剩下的CRUD方法,你们可以自行完善一下当做练手。
1.3.2
UserController
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.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController@RequestMapping(value = "/user")public class UserController { @Autowired private UserService userService; @RequestMapping("/find") public List<User> findAll(User user) { return userService.findAll(user); } @RequestMapping("/get/{id}") public User findById(@PathVariable Integer id){ return userService.findById(id); } @RequestMapping("/update") public String update(User user) { return userService.update(user); } // delete不做物理删除,只是标记为删除 @RequestMapping("/delete") public Boolean finddeleteAll(User user) { return userService.delete(user); } @RequestMapping("/add") public User add(User user) { return userService.add(user); }}
原文地址:https://www.cnblogs.com/wood-life/p/10302041.html
时间: 2024-07-30 21:28:11