10、springboot整合ssm

-1、ssm基础完结,纵观前十篇,写的都是比较简单而常用的整合方式,下面将会继续深入学习spring以及全家桶。

0、springboot简介:

知乎: https://zhuanlan.zhihu.com/p/24957789

拜读大神文章可能比较好: http://tengj.top/tags/Spring-Boot/

1、新建springBoot项目:

如何创建一个springBoot项目呢?有两种方式,第一种是直接在idea上创建:

第二种方式是上官方网站上 https://start.spring.io/ 直接下载:

两种方式创建完之后的结构是:

2、注意到,我创建的时候引入了web,就是直接整合了springMvc,现在就可以简单地进行测试了:

写了一个controller进行测试:

@RestController
@RequestMapping("/test")
public class TestController {
    @RequestMapping("")
    public String test(){
        return "hello spring-boot";
    }
}

启动主函数,输入网址 http://localhost:8080/test 页面显示 hello spring-boot。好了,真核springMvc就完毕了。就是这么简单,这里简单说明一下这个程序,不同的地方是用了 @RestController 可以直接向前台页面传递json或者字符串等数据,不需要 @ResponseBody了。

3、关于配置文件

我们一般不适用默认的 application.properties ,而是将他的后缀改为 application.yml ,这样写起来的格式会简洁很多。

我可以在里面配置端口:

server:
  port: 8888

这样,重启后只能访问8888端口了。

4、整合Mybatis:

首先引入依赖:


<dependency>
    <groupId>mysqlgroupId>
    <artifactId>mysql-connector-javaartifactId>
dependency>

<dependency>
    <groupId>org.mybatis.spring.bootgroupId>
    <artifactId>mybatis-spring-boot-starterartifactId>
    <version>1.2.0version>
dependency>

<dependency>
    <groupId>com.alibabagroupId>
    <artifactId>fastjsonartifactId>
    <version>1.2.12version>
dependency>

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

<dependency>
    <groupId>org.mybatis.generatorgroupId>
    <artifactId>mybatis-generator-coreartifactId>
    <version>1.3.2version>
dependency>

application.yml配置如下:

server:
  port: 8888
#Spring
spring:
    application:
        name: test
#profile
    profiles:
        active: dev
#datasource
    datasource:
        # druid
        type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        filters: stat
        maxActive: 20
        initialSize: 1
        maxWait: 60000
        minIdle: 1
        timeBetweenEvictionRunsMillis: 60000
        minEvictableIdleTimeMillis: 300000
        validationQuery: select 'x'
        testWhileIdle: true
        testOnBorrow: false
        testOnReturn: false
        poolPreparedStatements: true
        maxOpenPreparedStatements: 20

#mybatis
mybatis:
    mapper-locations: classpath:com/oursnail/**/**.xml
    type-aliases-package: classpath:com.oursnail.**.entity

主要是配置了用测试环境下的数据库还是生产环境下的数据库,所以我们还需要定义一个application-dev.yml,专门配置一下数据库连接。

spring:
  datasource:
     name: dev
     url: jdbc:mysql://localhost:3306/test
     username: root
     password: root

还有就是数据源本身的一些设置,这个暂时不用理会。 最后就是mybatis扫描的包的位置。按照我的目录结构来看,xml和entity在这样的路径下面,所以个人按照个人的继续配置即可。

好了,Mybatis就配置成功了。

5、下面随便整一张表,比如我这里整了一张 t_test 表,里面就是三个字段:一个是自动递增的主键 id ,一个 name ,一个 age ,当然这个起成 t_user 可能更加合适点吧。

6、我刚才在pom下面配置了自动生成代码插件,当然这个插件具体怎么用,我已经说明过了,请关注我前面基础整合的文章。

好了,自动生成实体类和xml以及dao基础接口了,下面就是测试几个方法。

7、TestService:

@Service
public class TestServiceImpl implements TestService{
    @Autowired
    private TestMapper testMapper;

    //根据id获取用户
    @Override
    public Test showTest(int id) {
        return testMapper.selectByPrimaryKey(id);
    }

    //获取所有用户
    @Override
    public List tests() {
        return testMapper.selectAll();
    }

    //测试添加一个用户的功能
    @Override
    public void testAdd(Test test) {
        testMapper.insertSelective(test);
    }


    //测试添加相同id用户,看事务能不能起作用
    @Transactional
    @Override
    public void testTra() {
        Test test1 = new Test();
        test1.setId(4);
        test1.setName("hh");
        test1.setAge(12);
        testMapper.insertSelective(test1);

        Test test2 =  new Test();
        test2.setId(4);
        test2.setName("swg");
        test2.setAge(22);
        testMapper.insertSelective(test2);

    }
}

8、controller:

@RestController
@RequestMapping("/test")
public class TestController {
    @Autowired
    private TestService testService;

    @RequestMapping("/getTestById/{id}")
    public Test getTest(@PathVariable int id){
        Test test = testService.showTest(id);
        return test;
    }

    @RequestMapping("/tests")
    public List tests(){
        List tests = testService.tests();
        return tests;
    }

    @RequestMapping("/addNew")
    public void testAdd(){
        Test test1 = new Test();
        test1.setName("王五");
        test1.setAge(32);
        testService.testAdd(test1);
    }

    @RequestMapping("/testTra")
    public void testTra(){
        testService.testTra();
    }
}

9、页面可以输入对应的路径进行测试,可以先测试添加用户的方法,要不然咋显示呢?

但是直接启动是报错的,提示我们无法找到mapper依赖,查看编译文件,都是编译进去的。这就很奇怪了。最后,我在mapper接口上增加一个注解:

@Mapper

10、springboot整合ssm完毕,源码下载.

11、与Thymeleaf整合

项目结构:

引入依赖:

<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-thymeleafartifactId>
dependency>

创建实体类:

public class User {
    private int id;
    private String username;
    private int age;
    private String url;
    ...省略get set方法
}

controller:

@RestController
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/users")
    public ModelAndView users(){
        ModelAndView mv = new ModelAndView("/index");
        List users = new ArrayList();

        User user = new User(1,"sss",12,"www.oursnail.xin");
        users.add(user);

        user = new User(2,"dd",21,"www.oursnail.xin");
        users.add(user);

        user = new User(3,"das",13,"www.oursnail.xin");
        users.add(user);

        mv.addObject("users",users);
        return mv;
    }
}

页面放在templates下,index.html:


<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>learn Resourcestitle>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
head>
<body>

<div style="text-align: center;margin:0 auto;width: 1000px; ">
    <h1>springboot 学习h1>
    <table width="100%" border="1" cellspacing="1" cellpadding="0">
        <tr>
            <td>idtd>
            <td>姓名td>
            <td>年龄td>
            <td>链接td>
        tr>
        
        <tr th:each="user : ${users}">
            <td th:text="${user.id}"/>
            <td th:text="${user.username}"/>
            <td th:text="${user.age}"/>
            <td><a th:href="${user.url}" target="_blank">点我a>td>
        tr>
    table>
div>
body>
html>

12、与jsp整合

看看就行了吧,我觉得Jsp真的不应该再出现在springboot里面了。。。

推荐 http://tengj.top/2017/03/13/springboot5/

13、热部署

参照 http://tengj.top/2017/06/01/springboot10/

你可能感兴趣的:(ssm框架)