因为没有系统的学习过SpringBoot,在对照一个别人的SpringBoot项目,进行简单的搭建及使用。

1.首先创建SpringBoot项目之后,这里会有默认的启动类,基本不需要配置,在类的上边有注解,其中我使用到了有三个分别为

@SpringBootApplication
@ComponentScan(basePackages = {"stdu.rg.*"})
@MapperScan("stdu.rg.mapper")

第一个是创建默认生成的,第二个是扫描项目下的包,第三个是配置mybatis映射的。

2.其次就是导包,SpringBoot是在Maven项目的基础上,所以,所有的包可以通过pom.xml文件导入

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--druid链接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency> <!-- <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>--> <!-- 辅助字符串处理类-->
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
</dependency> <dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
<version>1.0.2.RELEASE</version>
</dependency> <!--html页面解析,配置主要用于放宽对html页面审查-->
<dependency>
<groupId>net.sourceforge.nekohtml</groupId>
<artifactId>nekohtml</artifactId>
<version>1.9.22</version>
</dependency>
<!-- 热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency> <!--test-->
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.0.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency> <!--整合日志-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</dependency> </dependencies> <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin> <plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
<overwrite>true</overwrite>
<verbose>true</verbose>
</configuration>
</plugin>
</plugins> </build>

这些内容需要放在project标签内,与modelVersion,groupId等标签内容并列

3.配置文件

  在main/resources文件目录下,有名为application的文件,在这个文件中配置了关于sql连接以及Mybatis的一些简单设置。

  

server:
port: 8080
spring:
datasource:
name: test
type: com.alibaba.druid.pool.DruidDataSource
druid:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/dataRetrospection //数据库连接url
username: root                       //连接用户名,密码
password: root thymeleaf:
mode: LEGACYHTML5
prefix: classpath:templates/
suffix: .html
http:
multipart:
max-file-size: 10Mb
max-request-size: 100Mb
mvc:
throw-exception-if-no-handler-found: true mybatis: mapper-locations: classpath:maper/*Mapper.xml //Mybatis的映射文件所在路径,本质上就是sql语句
type-aliases-package: stdu.rg.model //实体类,相当于数据库的表
logging:
level:
com.example.mapper: debug

4.配置使用Mybatis

配置文件内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包-->
<classPathEntry location="H:\文件\例子\generatorSqlmapCustom\lib\mysql-connector-java-5.1.28-bin.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressDate" value="true"/> <property name="configLocation" value="maper/mybatis.xml"></property>
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--数据库链接URL,用户名、密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/dataRetrospection" userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- 生成模型的包名和位置-->
<javaModelGenerator targetPackage="stdu.rg.model" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
<property name="trimStrings" value="true"/>
</javaModelGenerator>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="maper" targetProject="src/main/resources">
<property name="enableSubPackages" value="true"/>
</sqlMapGenerator>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER" targetPackage="stdu.rg.mapper" targetProject="src/main/java">
<property name="enableSubPackages" value="true"/>
</javaClientGenerator>
<!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名-->
<table tableName="equipment" domainObjectName="Equipment" enableCountByExample="false"
enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false"
selectByExampleQueryId="false"></table>
</context>
</generatorConfiguration>

根据提前设置好的,将生成的不同文件放在不同的包下,并执行配置逆向工程方法

public void generator() throws Exception{

        List<String> warnings = new ArrayList<String>();
boolean overwrite = true;
//指定 逆向工程配置文件
File configFile = new File("D:\\JavaWorkspace\\Ashijian\\DataRetrospection-1\\src\\main\\resources\\generator\\generatorConfig.xml"); //配置文件所在路径
ConfigurationParser cp = new ConfigurationParser(warnings);
Configuration config = cp.parseConfiguration(configFile);
DefaultShellCallback callback = new DefaultShellCallback(overwrite);
MyBatisGenerator myBatisGenerator = new MyBatisGenerator(config,
callback, warnings);
myBatisGenerator.generate(null); }

调用这个方法即可生成相应的类,文件目录如下

5.接口类,及注入

  编写Service接口,用来对Model进行操作,

  

  对接口进行实现  (注:类前边的Service的注解很重要),所调用的getall方法在xml文件中有对应id的sql语句

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import stdu.rg.mapper.EquipmentMapper;
import stdu.rg.model.Equipment;
import stdu.rg.service.EquipmentService; @Service("EquipmentService")
public class EquipmentServiceImpl implements EquipmentService{ @Autowired
private EquipmentMapper equipmentMapper; @Override
public List<Equipment> getall() {
// TODO Auto-generated method stub
return equipmentMapper.getall();
} }

这样基本的配置及数据库相关表格类已经生成完毕,下一步就是操作,将数据进行简单的展示,及页面跳转。

6.在resource下目录如下,static文件下是项目的css,js等文件,templates为html页面,maper是Mybatis的类似于sql语句文件。该文件夹的名字需要与application的配置相同。

6.这里使用的是ConllController类,控制层。

首先是页面跳转问题,<a  href="#" th:href="@{/page/select}">查询</a>

由a标签设置路径,可查找page开头的,下面的方法为page之后的路径,return字符串即为目标页面的名字。

@Controller
@RequestMapping(value = {"/page"})
public class PageController {
@Autowired
private EquipmentService equipmentService; @RequestMapping(value = {"index"})
public String index() {
return "index";
}
}

同样的可以在方法内写其他方法,完成页面传值及处理。这里我使用的返回值类型为ModelAndView,addObject可以存放任何Object类,setviewname为目标页面名。

@RequestMapping(value = {"select"})
public ModelAndView select() {
List<Equipment> equipments=equipmentService.getall();
for(int i=0;i<equipments.size();i++) {
System.out.println(equipments.get(i).getId());
}
ModelAndView ma=new ModelAndView();
ma.addObject("equipments",equipments);
ma.setViewName("select"); return ma; }

7.页面接收及跳转问题完成,下一步就是展示,使用简单的table表格进行展示。

<table border="1">

    <tr  th:each="equipment : ${equipments}">
<td th:text="${equipment.id}">Onions</td>
<td th:text="${equipment.time}">Onions</td>
<td th:text="${equipment.lng}">Onions</td>
<td th:text="${equipment.lat}">Onions</td>
<td th:text="${equipment.type}">Onions</td>
<td th:text="${equipment.varieties}">Onions</td>
<td th:text="${equipment.price}">Onions</td>
<!-- <td> <a th:href="@{'/page/delete?username='+${user.username}}">删除</a></td> -->
</tr> </table>

这是循环遍历list并取出其中内容展示简单代码。

8.这些过程全部完成之后就可以启动创建项目时的启动类,访问页面localhost:8080/page/index

遇到的问题:

  1.逆向工程配置使用的jar包为

  2.这些jar包与pom配置的包有冲突,所以执行完逆向工程需要将这jar包移出去,如果不移除,启动类是无法正常运行的。具体原因是因为包版本问题。缺少一些方法。

  3.有些文件夹命名一定要与标准相同,否则容易出错。

  4.包名与配置文件的要相对应。

以上是这次配置全部过程。本质上对其运行原理还是有些不理解,只是对照一个项目搭建的,下一步还是需要进一步了解其内容。

对Spring Boot 及Mybatis简单应用的更多相关文章

  1. 使用intelliJ创建 spring boot + gradle + mybatis站点

    Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gradle + mybatis在intellij下的入门文章,碰巧.Net同事问到,我想我也可以写 ...

  2. Spring Boot整合Mybatis并完成CRUD操作

    MyBatis 是一款优秀的持久层框架,被各大互联网公司使用,本文使用Spring Boot整合Mybatis,并完成CRUD操作. 为什么要使用Mybatis?我们需要掌握Mybatis吗? 说的官 ...

  3. Spring boot整合Mybatis

    时隔两个月的再来写博客的感觉怎么样呢,只能用“棒”来形容了.闲话少说,直接入正题,之前的博客中有说过,将spring与mybatis整个后开发会更爽,基于现在springboot已经成为整个业界开发主 ...

  4. Spring boot教程mybatis访问MySQL的尝试

    Windows 10家庭中文版,Eclipse,Java 1.8,spring boot 2.1.0,mybatis-spring-boot-starter 1.3.2,com.github.page ...

  5. spring boot 实现mybatis拦截器

    spring boot 实现mybatis拦截器 项目是个报表系统,服务端是简单的Java web架构,直接在请求参数里面加了个query id参数,就是mybatis mapper的query id ...

  6. spring boot 整合 mybatis 以及原理

    同上一篇文章一样,spring boot 整合 mybatis过程中没有看见SqlSessionFactory,sqlsession(sqlsessionTemplate),就连在spring框架整合 ...

  7. 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法

    spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...

  8. spring boot + gradle + mybatis

    使用intelliJ创建 spring boot + gradle + mybatis站点   Spring boot作为快速入门是不错的选择,现在似乎没有看到大家写过spring boot + gr ...

  9. Spring Boot整合Mybatis完成级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

随机推荐

  1. 自然语言处理工具HanLP-N最短路径分词

    本篇给大家分享baiziyu 写的HanLP 中的N-最短路径分词.以为下分享的原文,部分地方有稍作修改,内容仅供大家学习交流! 首先说明在HanLP对外提供的接口中没有使用N-最短路径分词器的,作者 ...

  2. 大数据之Hadoop完全分布式集群搭建

    1.准备阶段 1.1.新建三台虚拟机 Hadoop完全分市式集群是典型的主从架构(master-slave),一般需要使用多台服务器来组建.我们准备3台服务器(关闭防火墙.静态IP.主机名称).如果没 ...

  3. plpython 中文分词Windows 版

    windows 下安装版本匹配python-3.4.3.amd64.msipostgresql-10.1-2-windows-x64.exe create language plpython3u;se ...

  4. # 「银联初赛第一场」自学图论的码队弟弟(dfs找环+巧解n个二元一次方程)

    「银联初赛第一场」自学图论的码队弟弟(dfs找环+巧解n个二元一次方程) 题链 题意:n条边n个节点的连通图,边权为两个节点的权值之和,没有「自环」或「重边」,给出的图中有且只有一个包括奇数个结点的环 ...

  5. Java设计模式七种写法

    懒汉模式-线程不安全 public class Singleton { private static Singleton instance; private Singleton (){ } publi ...

  6. 2016 计蒜之道 初赛 第一场 D 青云的机房组网方案 (虚树)

    大意: 给定树, 点$i$的点权为$a_i$, 求$\sum\limits_{a_i \perp a_j}dis(i,j)$ 中等难度可以枚举每条边的贡献, 维护子树内每个数出现次数$a$, 转化为求 ...

  7. 给Repater增加等号

    //不改变数据结构的情况下,增加行号.对Application服务器压力增大,减少DB服务器压力.    protected void repShow_ItemDataBound(object sen ...

  8. springboot 配合多个cachemanager

    springboot集成 redis需要引入 官方推进用lettuce连接池,Lettuce的连接是基于Netty的,连接实例(StatefulRedisConnection)可以在多个线程间并发访问 ...

  9. 如何在Python中快速画图——使用Jupyter notebook的魔法函数(magic function)matplotlib inline

    如何在Python中快速画图--使用Jupyter notebook的魔法函数(magic function)matplotlib inline 先展示一段相关的代码: #we test the ac ...

  10. 关于redis的几件小事(五)redis保证高并发以及高可用

    如果你用redis缓存技术的话,肯定要考虑如何用redis来加多台机器,保证redis是高并发的,还有就是如何让Redis保证自己不是挂掉以后就直接死掉了,redis高可用 redis高并发:主从架构 ...