因为没有系统的学习过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. php配置php-fpm启动参数及配置详

    php-fpm 启动参数及重要配置详解 约定几个目录 /usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/ ...

  2. OpenStack组件——Neutron网络服务(2)

    1.虚拟机获取 ip 1)用 namspace 隔离 DHCP 服务 Neutron 通过 dnsmasq 提供 DHCP 服务,而 dnsmasq 通过 Linux Network Namespac ...

  3. webdriervAPI(By声明定位方法)

    from  selenium  import  webdriver from  selenium.webdriver.common.by  import  By 导入By方法 driver  =  w ...

  4. Oracle 多行拼接函数 :[Err] ORA-00904: "WM_CONCAT": 标识符无效

    SELECT LISTAGG(GOODSNAME,';') WITHIN GROUP (ORDER BY GOODSNAME) AS sd WM_CONCAT()  方法被替代成:LISTAGG(GO ...

  5. python 爬虫 urllib模块 url编码处理

    案例:爬取使用搜狗根据指定词条搜索到的页面数据(例如爬取词条为‘周杰伦’的页面数据) import urllib.request # 1.指定url url = 'https://www.sogou. ...

  6. spring5源码分析系列(三)——IOC容器的初始化(一)

    前言: IOC容器的初始化包括BeanDefinition的Resource定位.载入.注册三个基本过程. 本文以ApplicationContext为例讲解,XmlWebApplicationCon ...

  7. Java 虚拟机的运行模式

    这几天在读周志明老师的<深入理解JVM虚拟机> 讲到了 java的运行模式, 有mixed 模式 interpret模式还有compile模式.效果如下面所示 java -version ...

  8. C++ 的关键字(保留字)完整介绍

    转载至:https://www.runoob.com/w3cnote/cpp-keyword-intro.html 1. asm asm (指令字符串):允许在 C++ 程序中嵌入汇编代码. 2. a ...

  9. 多个div排列在同一行而不换行

    有时候,我们可能会产生多个div标签横向排列而不换行的需求,具体有以下几种实现方法: 1. 同级div设置display:inline-block,父级div强制不换行例如: <html> ...

  10. Android SDK安装与环境配置

    一.单独下载只有sdk的包,SDK不包括在Android Studio里,适用于不需要Android Studio的用户,其他可自行去官网下载. 1:Android SDK (https://www. ...