Spring Boot实战演练Demo

需求:使用SSM+SpringBoot 实现 账户 的CRUD功能

数据库准备:

CREATE TABLE `account` ( 
	`id` int(11) NOT NULL AUTO_INCREMENT, 
	`name` varchar(32) DEFAULT NULL, 
	`money` double DEFAULT NULL, 
	PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

insert into `account`(`id`,`name`,`money`) values (1,'tom',1000), (2,'jerry',1000);

(1)创建springboot工程

Spring Boot实战演练Demo_第1张图片
Spring Boot实战演练Demo_第2张图片

Spring Boot实战演练Demo_第3张图片
Spring Boot实战演练Demo_第4张图片
Spring Boot实战演练Demo_第5张图片

Spring Boot实战演练Demo_第6张图片
next —> finish
删除以下多余目录
Spring Boot实战演练Demo_第7张图片
删除后目录
Spring Boot实战演练Demo_第8张图片

(2)导入pom.xml

        
        <dependency>
            <groupId>com.alibabagroupId>
            <artifactId>druidartifactId>
            <version>1.1.3version>
        dependency>

为了扫描mapper可做下面两个操作
Spring Boot实战演练Demo_第9张图片
Spring Boot实战演练Demo_第10张图片
SpringboottestApplication.javaSpring Boot实战演练Demo_第11张图片

(3) 配置数据库信息

Spring Boot实战演练Demo_第12张图片
application.yml

## 数据库连接信息
spring:
  datasource:
    name: druid
    type: com.alibaba.druid.pool.DruidDataSource
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&serverTimezone=UTC
    username: root
    password: zhangwt

IDEA连接数据库
Spring Boot实战演练Demo_第13张图片
Spring Boot实战演练Demo_第14张图片
Spring Boot实战演练Demo_第15张图片
Spring Boot实战演练Demo_第16张图片

(4) Free Mybatis plugin插件安装(新MyBatisX)

安装目的:自动生成Mybatis相关代码
https://plugins.jetbrains.com/plugin/8321-free-mybatis-plugin/versions/stable/74577这个插件已经闭源了,版本更新截止到2019.12.18,可以用上面链接下载旧版本。

也可以使用插件MyBatisX代替,二者选其一

MyBatisX插件在线安装
Spring Boot实战演练Demo_第17张图片
Spring Boot实战演练Demo_第18张图片
Spring Boot实战演练Demo_第19张图片

Free Mybatis plugin插件本地安装
将 Free Mybatis plugin 下载在本地磁盘,然后导入安装
Spring Boot实战演练Demo_第20张图片
Spring Boot实战演练Demo_第21张图片
Spring Boot实战演练Demo_第22张图片
注:为节省时间,后面两个步骤代码可使用Mybatis-X 或 Free Mybatis plugin插件生成
Mybatis-X生成步骤
Spring Boot实战演练Demo_第23张图片
Spring Boot实战演练Demo_第24张图片
next
Spring Boot实战演练Demo_第25张图片
生成后结构如下
Spring Boot实战演练Demo_第26张图片
AccountMapper.java

/**
* @Entity com.zwt.domain.Account
*/
public interface AccountMapper extends BaseMapper<Account> {

}

但是,Mapper文件中并没有自动生成单表操作的方法,为了方便,还是使用Free Mybatis plugin插件生成好一点

Free Mybatis plugin生成步骤
Spring Boot实战演练Demo_第27张图片
Spring Boot实战演练Demo_第28张图片
生成后结构如下:
Spring Boot实战演练Demo_第29张图片

(5)Account 实体类编写

/**
 * account
 * @author 
 */
@Data
public class Account implements Serializable {
    private Integer id;

    private String name;

    private Double money;

    private static final long serialVersionUID = 1L;
}

(6)AccountMapper 编写及Mapper文件

AccountMapper.java

public interface AccountMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(Account record);

    int insertSelective(Account record);

    Account selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(Account record);

    int updateByPrimaryKey(Account record);

    List<Account> queryAll();
}

AccountMapper.xml


DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zwt.mapper.AccountMapper">
  <resultMap id="BaseResultMap" type="com.zwt.pojo.Account">
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="money" jdbcType="DOUBLE" property="money" />
  resultMap>
  <sql id="Base_Column_List">
    id, `name`, money
  sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    select 
    <include refid="Base_Column_List" />
    from account
    where id = #{id,jdbcType=INTEGER}
  select>
  <select id="queryAll" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from account
  select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    delete from account
    where id = #{id,jdbcType=INTEGER}
  delete>
  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.zwt.pojo.Account" useGeneratedKeys="true">
    insert into account (`name`, money)
    values (#{name,jdbcType=VARCHAR}, #{money,jdbcType=DOUBLE})
  insert>
  <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.zwt.pojo.Account" useGeneratedKeys="true">
    insert into account
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="name != null">
        `name`,
      if>
      <if test="money != null">
        money,
      if>
    trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      if>
      <if test="money != null">
        #{money,jdbcType=DOUBLE},
      if>
    trim>
  insert>
  <update id="updateByPrimaryKeySelective" parameterType="com.zwt.pojo.Account">
    update account
    <set>
      <if test="name != null">
        `name` = #{name,jdbcType=VARCHAR},
      if>
      <if test="money != null">
        money = #{money,jdbcType=DOUBLE},
      if>
    set>
    where id = #{id,jdbcType=INTEGER}
  update>
  <update id="updateByPrimaryKey" parameterType="com.zwt.pojo.Account">
    update account
    set `name` = #{name,jdbcType=VARCHAR},
      money = #{money,jdbcType=DOUBLE}
    where id = #{id,jdbcType=INTEGER}
  update>
mapper>

(7)配置XML映射文件路径

在项目中编写的XML映射文件,Spring Boot并无从知晓,所以无法扫描到该自定义编写的XML配置文件,还必须在全局配置文件application.properties中添加MyBatis映射文件路径的配置,同时需要添加实体类别名映射路径,示例代码如下

application.yml

mybatis: 
	#配置MyBatis的xml配置文件路径 
	mapper-locations: classpath:mapper/*.xml 
	#配置XML映射文件中指定的实体类别名路径 
	type-aliases-package: com.zwt.pojo

(8)AccountService接口及实现类编写

Spring Boot实战演练Demo_第30张图片

AccountService.java

public interface AccountService {
    /**
     * 查询所有
     * @return
     */
    List<Account> queryAll();

    /**
     * 通过ID查询
     * @param id
     * @return
     */
    Account findById(Integer id);

    /**
     * 新增
     * @param Account
     */
    void insert(Account Account);

    /**
     * 通过ID删除
     * @param id
     */
    void deleteById(Integer id);

    /**
     * 修改
     * @param Account
     */
    void update(Account Account);
}

AccountServiceImpl.java

@Service
public class AccountServiceImpl implements AccountService {

    @Autowired
    private com.zwt.mapper.AccountMapper AccountMapper;

    @Override
    public List<Account> queryAll() {
        return AccountMapper.queryAll();
    }

    @Override
    public Account findById(Integer id) {
        return AccountMapper.selectByPrimaryKey(id);
    }

    @Override
    public void insert(Account Account) {
        //AccountMapper.insert(Account);        //将除id所有的列都拼SQL
        AccountMapper.insertSelective(Account); //只是将不为空的列才拼SQL
    }

    @Override
    public void deleteById(Integer id) {
        AccountMapper.deleteByPrimaryKey(id);
    }

    @Override
    public void update(Account Account) {
        AccountMapper.updateByPrimaryKeySelective(Account);
    }
}

(9)AccountController编写

AccountController.java

@RestController
@RequestMapping("/account")
public class AccountController {

    @Autowired
    private AccountService accountService;

    /**
     * restful格式进行访问
     * 查询:GET
     * 新增: POST
     * 更新:PUT
     * 删除: DELETE
     */
    /**
     * 查询所有
     * @return
     */
    @GetMapping("/query")
    public List<Account> queryAll(){
        return accountService.queryAll();
    }

    /**
     * 通过ID查询
     */
    @GetMapping("/query/{id}")
    public Account queryById(@PathVariable Integer id){
        return accountService.findById(id);
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @DeleteMapping("/delete/{id}")
    public String delete(@PathVariable Integer id){
        accountService.deleteById(id);
        return "删除成功";
    }

    /**
     * 新增
     * @param Account
     * @return
     */
    @PostMapping("/insert")
    public String insert(Account Account){
        accountService.insert(Account);
        return "新增成功";
    }

    /**
     * 修改
     * @param Account
     * @return
     */
    @PutMapping("/update")
    public String update(Account Account){
        accountService.update(Account);
        return "修改成功";
    }
}

使用postman测试
查询
Spring Boot实战演练Demo_第31张图片
Spring Boot实战演练Demo_第32张图片
删除
Spring Boot实战演练Demo_第33张图片
新增Spring Boot实战演练Demo_第34张图片
修改
Spring Boot实战演练Demo_第35张图片

(10)Spring Boot项目部署

需求:将Spring Boot项目使用maven指令打成jar包并运行测试
1、修改端口号
端口号一般不使用默认的
application.yml

##服务器配置
server:
  port: 8090

2、添加打包组件

<build>
        <plugins>
            <plugin>
                
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>

    build>

需要添加打包组件将项目中的资源、配置、依赖包打到一个jar包中;可以使用maven的 package ;
Spring Boot实战演练Demo_第36张图片
双击packageSpring Boot实战演练Demo_第37张图片
Spring Boot实战演练Demo_第38张图片
jar包一般在项目根目录的 target文件下
Spring Boot实战演练Demo_第39张图片
3、部署运行
打开powershell 窗口(Windows10系统)

1、在当前文件夹,然后点击左上角的“文件”菜单。

Spring Boot实战演练Demo_第40张图片

2、接下来在打开的文件下拉菜单中找到“打开Windows Powershell”菜单项,点击“以管理员身份打开Windows Powershell”菜单项即可。

Spring Boot实战演练Demo_第41张图片
在windows下模拟Linux运行以下命令

java -jar 包名

java -jar .\springboottest-0.0.1-SNAPSHOT.jar
Spring Boot实战演练Demo_第42张图片
这个和在IDEA中启动项目类似
注意,此处有可能运行报错,原因为部署的环境和pom.xml中指定的JDK版本不一致
Spring Boot实战演练Demo_第43张图片

pom.xml

     <properties>
        <java.version>11java.version>
    properties>

解决办法:

  • 方法1:将pom.xml中的版本号修改为Linux中对应的版本。Clean后重新Package打包。
  • 方法2:将Linux中的jdk卸载,然后重新安装pom.xml中定义对应的jdk版本即可。

4、验证
Spring Boot实战演练Demo_第44张图片
至此,整个SpringBoot Demo演练完毕,

我已将源码上传,可以在资源链接中下载
https://download.csdn.net/download/u012660464/86510033

你可能感兴趣的:(Java,框架,JavaWeb,spring,boot,java,spring)