超全流程-idea对springboot+ssm的部署实现增删改查

由于前段时间完成期末项目,在期末学科里也学到很多,但这里不书写接近2个月没有更新博客,
因为之前有过较为成熟的ssh框架运用以及理解的经验,我打算在寒假学习一下ssm,联合springboot,
学习内部采用的springmvc+spring+mybatis的springboot项目
直接省略了ssm本来繁多的xml配置,基本使用注解方式。
完成相同功能的代码更少,但是基本见不到太多的原理性的,仅适合快速开发与学习。

好开始吧。

环境准备:
idea2019-3.1+jdk8
maven3.6(已经配置完成)
目的:
创建一个ssm+springboot的项目。

**

一、首先创建一个springboot项目(有maven):

**
1.new Project–>spring Initialzr出现:
超全流程-idea对springboot+ssm的部署实现增删改查_第1张图片
2.然后在下面填写项目相关信息:
项目是基于maven的,
Group表示为你的包名:com…**.

超全流程-idea对springboot+ssm的部署实现增删改查_第2张图片
3.下一步:
选择项目需要的组件:

web–》 spring–》web
web–》SQL–》mybatis
如图

超全流程-idea对springboot+ssm的部署实现增删改查_第3张图片
然后next到底就完成了项目的创建。。

第一次安装需要等待maven将jar包下载。{注意配maven的本地仓库位置}
**

二、springboot(ssm)目录结构:

**
首先是经典的mvc的目录创建方法。
包含:
dao
service
controller
bean(实体类)

其次含有ssm的
java源代码目录
资源目录(resources)
mapper.xml配置文件位置,
springboot配置文件位置,
其他目录
单元测试位置
工具包
pom.xml(maven依赖配置)

完整的目录结构如下:
超全流程-idea对springboot+ssm的部署实现增删改查_第4张图片

三、最重要的一步:ssm框架的搭建

基于上述目录有:
实现对user的增删改查。
启动类:

package com.j.ssm;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@SpringBootApplication
@EnableTransactionManagement //开启事务管理
@MapperScan("com.j.ssm.dao")
public class SsmApplication {

    public static void main(String[] args) {
        SpringApplication.run(SsmApplication.class, args);
    }

}

UserBean实体类:

package com.j.ssm.bean;

/**
 * user实体类
 *
 * @author joker
 */
public class UserBean {
    public Integer id;
    public String name;
    public int age;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public UserBean() {
    }
}

controller控制层

package com.j.ssm.controller;

import com.j.ssm.bean.UserBean;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

/**
 * user控制层--使用springmvc
 *
 * @author joker
 */
//相当于@Controller+@ResponseBody两个注解的结合
//json交互--仅
@RestController
@RequestMapping("/U")
public class UserControl extends BaseControlImpl<UserBean> {
    /**
     * 保存user信息
     *
     * @return
     */
    @Override
    //    ,produces = "application/json;charset=utf-8"
    @RequestMapping(value = "/saveU", method = RequestMethod.POST)
    public void save() {
        super.save();
    }

    /**
     * 删除user信息
     *
     * @return
     */
    @Override
    @RequestMapping(value = "/deleteU", method = RequestMethod.POST)
    public void delete() {
        super.delete();
    }

    /**
     * 更新user信息
     *
     * @return
     */
    @Override
    @RequestMapping(value = "/updateU", method = RequestMethod.POST)
    public void update() {
        super.update();
    }
}

service:

package com.j.ssm.serviceimpl;

import com.j.ssm.bean.UserBean;
import org.springframework.stereotype.Service;

/**
 * userService层--使用mybatis
 * @author joker
 */
@Service
public class UserServiceImpl extends BaseServiceImpl<UserBean>{
    @Override
    public String saveS() {
        super.object=new UserBean();
        return super.saveS();
    }

    @Override
    public String deleteS(Integer idInteger) {
        return super.deleteS(idInteger);
    }

    @Override
    public String updateS(Integer idInteger) {
        super.object=new UserBean();
        return super.updateS(idInteger);
    }
}

dao层:(基于注解)
否则仅需要借口方法与对于的mapper.xml,在下面有介绍。

package com.j.ssm.dao;

import com.j.ssm.bean.UserBean;

import org.apache.ibatis.annotations.*;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * userDao层--使用mybatis
 *
 * @author joker
 */

//@MapperScan   //声明是一个Mapper,与springbootApplication中的@MapperScan二选一写上即可
@Repository
public interface UserMapper extends BaseMapperImpl<UserBean> {
    @Override
    @Insert("INSERT INTO `tb_user` (`NAME`, `AGE`) VALUES (#{name},#{age})")
    @ResultType(UserBean.class)
    int saveD(UserBean userBean);

    @Override
    @Delete("DELETE FROM `tb_user` WHERE `ID`=#{id}")
    int deleteD(Integer id);

    @Override
    @Update("UPDATE `tb_user` SET  `NAME`=#{name}, `AGE`=#{age} WHERE `ID`=#{id}")
    int updateD(UserBean userBean);

}

做测试dao层:

package com.j.ssm.dao;

import com.j.ssm.SsmApplication;
import com.j.ssm.bean.UserBean;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

//springboot测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SsmApplication.class)
class UserMapperTest{
    @Autowired
    protected UserMapper userMapper;
    /**
     * 测试mapper--insert----xml方式----注解方式
     */
    @Test
    void saveD() {
        System.out.println("start-mapper");
        UserBean userBean=new UserBean();
        userBean.setAge(21);
        userBean.setName("test-注解");
        int a=userMapper.saveD(userBean);
        System.out.println("test-mapper-success---------"+a);
    }
}

然后是mapper.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.j.ssm.dao.UserMapper">
    <!--    <select id="save" resultType="com.j.ssm.bean.UserBean">-->
    <!--     SELECT  id,name,age FROM  student WHERE  id=#{id}-->
    <!--    </select>-->
    <!--    程序id-*-*-主键-自增-->
<!--    parameterType="com.j.ssm.bean.UserBean"-->
<!--    parameterType="com.j.ssm.bean.UserBean"-->
    <insert id="saveD"  statementType="PREPARED"
            keyProperty="id" useGeneratedKeys="true">
        INSERT INTO `tb_user` (`NAME`, `AGE`) VALUES (#{name},#{age});
    </insert>

</mapper>

application.properties(完成对mybatis,内置tomcat配置)

#数据库连接
spring.datasource.url=jdbc:mysql://localhost:3306/ssmsp?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
#这已经过时了。 新的驱动程序类是‘ com.mysql.cj.jdbc.driver'。 驱动程序通过 spi 自动注册,手动加载驱动程序类通常是不必要的。
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.jpa.database = mysql
##日志配置
#logging.level.org.springframework=DEBUG
#spring.output.ansi.enabled=DETECT
##logging.path=E:\warehouse
#logging.pattern.console=%d{yyyy/MM/dd-HH:mm:ss} [%thread] %-5level %logger- %msg%n
#logging.pattern.file=%d{yyyy/MM/dd-HH:mm} [%thread] %-5level %logger- %msg%n
#tomcat配置
server.port=8080
#server.context-path=/springboot
#spring.resources.static-locations=classpath:/templates/
#server.servlet-path=/springboot
#mybatis配置
#mybatis.mapper-locations=classpath*:mapper/*.xml     #选择注解模式。
mybatis.type-aliases-package=com.j.ssm.bean




web.xml
这是springmvc在某些非controller三层的地方获取request的方法

	<listener>
		<listener-class>
			org.springframework.web.context.request.RequestContextListener
		</listener-class>
	</listener>

封装的方法

 /**
     * 获取request
     *
     * @return HttpServletRequest
     */
    public static HttpServletRequest myGetRequest() {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        return requestAttributes.getRequest();
    }

    /**
     * 获取response
     *
     * @return HttpServletResponse
     */
    public static HttpServletResponse myGetResponse() {
        ServletRequestAttributes requestAttributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
        return requestAttributes.getResponse();
    }

还有泛型类的编写,放到下篇文章写。

你可能感兴趣的:(超全流程-idea对springboot+ssm的部署实现增删改查)