因为实习用的是MyBatis框架,所以写一篇关于SpringBoot整合MyBatis框架的总结。

一,Pom文件

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId>
<artifactId>example</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging> //这里设置为jar,因为我们会使用jar包部署运行 <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId> //Mybatis的jar包
<version>1.1.1</version>
</dependency> <dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId> //json数据格式和对象的转换jar包
<version>1.9.8</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId> //内嵌数据库
<artifactId>h2</artifactId>
<version>1.3.156</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> //lombok插件,方便model对象的处理
<version>1.16.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> //mysql驱动
<version>5.1.18</version>
</dependency> </dependencies> <build>
<finalName>example</finalName> //打包后的jar包名称 <plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId> //必须要的SpringBoot继承的maven插件,缺少了无法打包jar。
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-resources-plugin</artifactId> //因为jar包中可能存在很多其他的配置资源,例如mapper文件所以打包为jar包需要将其加入,所以需要此资源打包插件
<version>2.5</version>
<executions>
<execution>
<id>copy-xmls</id>
<phase>process-sources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins> <resources> //打包包含相应的资源文件
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.tld</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
<repositories>//设置仓库
<repository>
<id>spring-milestone</id>
<url>http://repo.spring.io/libs-release</url>
</repository>
</repositories> </project>

好了简单的SpringBoot整合Mybatis框架的基础环境已经搭建完成了,一个Pom文件搞定,接下来我们配置我们的配置文件。

二,配置文件

我们写在resources目录下的application.properties文件中。

spring.datasource.url=jdbc:mysql://localhost:3306/数据库名称?useUnicode=true&characterEncoding=UTF8
spring.datasource.username=用户名
spring.datasource.password=用户密码
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.mapper-locations=classpath*:/mapper/*Mapper.xml //mapper文件的路径
mybatis.type-aliases-package=map.model //mapper文件中的前缀
server.port=监听端口号,不设置默认8080

ok,现在环境已经彻底搭建完成我们可以编写自己的代码了。

三,编写代码

Model对象

@Data//@Data lombok插件的注解自动添加get set方法
public class ExampleModel {
private Long id;
private String name; }
//一个简单的model对象

Dao层

这里需要注意的是,推荐公司使用的一种做法,因为很多的Dao对象都是简单的增删改查功能,所以我们抽象出一个最基本的父类,这个父类实现最基本的增删改查功能,每个新的Dao对象可以继承这个类,然后自定义实现特殊的数据库访问功能,我们可以把这个基本的父类成为MyBatisHelper并用上泛型,具体实现如下:

@Data
public class MybatisHelper<T> {
@Autowired
private SqlSession sqlSession; //这里自动注入mybatis的SqlSession private String nameSpace; public MybatisHelper(String nameSpace) {
this.nameSpace = nameSpace;
} public String getSqlName(String sqlName) {
return nameSpace +"."+ sqlName;
} public Integer create(String name, T obj) {
return sqlSession.insert(getSqlName(name), obj);
} public Boolean update(String name, T obj) {
return Boolean.valueOf(sqlSession.update(getSqlName(name), obj) > 0);
} public T findById(String name, Long id) {
return sqlSession.selectOne(getSqlName(name), id);
} public Boolean delete(String name, Long id) {
return Boolean.valueOf(sqlSession.delete(getSqlName(name), id) > 0);
} public List<T> findAll(String name){return sqlSession.selectList(getSqlName(name));} }

需要说明的是因为sqlSession的执行回去寻找相应的mapper文件,所以namespace+方法名称很重要,这个一定要注意不要弄错了,弄错了就会无法正确调用。

然后我们的Dao层实现继承此类

@Component
public class ExampleModelDao extends MybatisHelper<ExampleModel>{
public ExampleModelDao() {
super("example.dao.");
}
//todo 自定义操作
public Integer findDataCounts(){
return getSqlSession().selectOne(getSqlName("findDataCounts"));//他会寻找example.dao.findDataCounts对应的方法执行
}
}

这样是不是很简单,也能大量复用很省事,关于service层我就不写了很简单。

四,mapper文件

<?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="example.dao">//这里很重要就是前缀
<resultMap id="ExampleModelMap" type="ExampleMode">
<id column="id" property="id"/>
<result column="name" property="name"/>
</resultMap> //自定义resultMap对象,利于对象的操作 <sql id="tb"> //数据表标签
example_data
</sql> <sql id="value_exclude_id"> //除了主键以为的字段集合标签
name
</sql> <sql id="vls"> //插入属性的字段集合标签
id,name
</sql> <sql id="insert_value">//插入输入进来的字段值标签
#{name}
</sql> <insert id="create" parameterType="ExampleModel">
INSERT INTO <include refid="tb"/> (<include refid="value_exclude_id"/>) VALUES (<include refid="insert_value"/>)
</insert>//一看就明白了创建一个对象 <select id="findById" parameterType="long" resultMap="ExampleModelMap">//返回我们定义的resultMap
SELECT <include refid="vls"/> FROM <include refid="tb"/> WHERE id = #{id}
</select> <select id="findAll" resultMap="ExampleModelMap">
SELECT <include refid="vls"/> FROM <include refid="tb"/>
</select> <select id="findDataCounts" resultType="int">
SELECT count(1) FROM <include refid="tb"/>
</select>//自定义的操作 </mapper>

ok,对应的mapper文件已经有了,我们就可以调用了,调用很简单一般写在service层中调用,下面我们去编写对应的controller。

五,控制器编写

推荐使用restful风格,因此我们控制器编写代码如下:

@RestController
@CrossOrigin //这个是ajax跨域请求允许的注解,不用可以去掉
public class DigMapDataController { @Autowired
private ExampleService exampleService;//service对象 @RequestMapping(value = "/create", method = RequestMethod.POST)
public String create(@requestBody ExampleModel exampleModel) {
return String.valueOf(exampleService.create(exampleModel));
}
//@requestBody注解会接受前端的JSON数据并配合jackson自动转换为相应的对象 @RequestMapping(value = "/find/count",method = RequestMethod.GET)
public Integer findCounts() {
return exampleService.findDataCounts(); } }

一个简单的控制器就编写完成了,这个时候我们可以启动应用进行数据访问了,是不是很简单。

六,应用的部署

直接在终端中使用命令,将应用打包为jar文件

1.maven  [clean]  package ;打包后的文件在target目录下

2.java -jar example.jar ; 运行我们的jar包程序

ok 大功告成!

下一章,我会总结一些关于mapper文件的特殊技巧。

SpringBoot+MyBatis简单数据访问应用的更多相关文章

  1. springboot mybatis保存数据中文保存成???

    springboot mybatis保存数据中文保存成??? 解决方法: 数据库存连接配置后面加characterEncoding=UTF-8 如下例: spring.datasource.url=j ...

  2. SpringBoot:Mybatis + Druid 数据访问

    西部开源-秦疆老师:基于SpringBoot 2.1.7 的博客教程 秦老师交流Q群号: 664386224 未授权禁止转载!编辑不易 , 转发请注明出处!防君子不防小人,共勉! 简介 对于数据访问层 ...

  3. 【SpringBoot实战】数据访问

    前言 在开发中我们通常会对数据库的数据进行操作,SpringBoot对关系性和非关系型数据库的访问操作都提供了非常好的整合支持.SpringData是spring提供的一个用于简化数据库访问.支持云服 ...

  4. SpringBoot起飞系列-数据访问(九)

    一.前言 前边我们已经学些了开发的基本流程,最重要的一步来了,怎么样和数据库交互才是最重要的,毕竟没有数据那就相当于什么也没做,本文我们来学习使用springboot整合jdbc.mybatis.jp ...

  5. springboot+mybatis实现数据分页(三种方式)

    项目准备 1.创建用户表 2.使用spring初始化向导快速创建项目,勾选mybatis,web,jdbc,driver 添加lombok插件 <?xml version="1.0&q ...

  6. 简单数据访问类,生成简单SQL,自动转换成java对象

    import java.util.HashMap; import java.util.List; import java.util.Map; import org.slf4j.Logger; impo ...

  7. SpringBoot之旅第五篇-数据访问

    一.引言 大部分系统都离不开数据访问,数据库包括SQL和NOSQL,SQL是指关系型数据库,常见的有SQL Server,Oracle,MySQL(开源),NOSQL是泛指非关系型数据库,常见的有Mo ...

  8. MyBatis框架的XML数据访问Dao层接口的组合使用

    MyBatis 的前生为Apache的开源项目iBatis.其优势在于灵活,几乎可以替代JDBC,同时提供了编程接口.目前MyBatis的数据访问Dao层不需要实现类,也不需要像JDBC那样拼接Hql ...

  9. java框架之SpringBoot(9)-数据访问及整合MyBatis

    简介 对于数据访问层,无论是 SQL 还是 NOSQL,SpringBoot 默认采用整合 SpringData 的方式进行统一处理,添加了大量的自动配置,引入了各种 Template.Reposit ...

随机推荐

  1. Linux SSH免登录配置总结(转)

    转载请出自出处:http://eksliang.iteye.com/blog/2187265 一.原理 我们使用ssh-keygen在ServerA上生成私钥跟公钥,将生成的公钥拷贝到远程机器Serv ...

  2. 《Oracle RAC性能优化》

    一 RAC环境 RAC架构,2节点信息 节点1 SQL> show parameter instance NAME                                 TYPE    ...

  3. Windows 和 Linux 的文件名

    Windows中文件名是区分大小写的,而Linux不区分. 在开发中,发现在Windows可以执行通过,在Linux可能由于文件名不一致而失败.

  4. mariadb多源复制 muiltil source replication

    环境:centos-6.5      Mariadb:10.1.13-MariaDB 多源复制:企业数据库中写的需求较大,以至于I/O负载比较大,那么就必须把写的操作分摊到多台主服务器上进行,然后在将 ...

  5. PHP压缩与解压Zip(PHPZip类)

    <?php     class PHPZip     {         private $ctrl_dir     = array();         private $datasec    ...

  6. WordPress文章自动提取tag并添加链接

    我们在编写文章时,经常需要添加一些标签关键词的链接,这样不仅可以优化我们的内链,对用户来说也可以参照相关的文章,如果对文章的关键字进行手动添加链接,那样对我们来说太麻烦了,而且在标签关键词很多的情况下 ...

  7. POJ 3253 Fence Repair(简单哈弗曼树_水过)

    题目大意:原题链接 锯木板,锯木板的长度就是花费.比如你要锯成长度为8 5 8的木板,最简单的方式是把21的木板割成13,8,花费21,再把13割成5,8,花费13,共计34,当然也可以先割成16,5 ...

  8. ionic调用摄像头

    须知ionic是借助于cordova来实现与底层硬件的交互的 我假设你已经全局安装了cnpm.ionic.cordova,并且配置好了安卓环境 我以下demo是建立在官方提供的模板上进行的ionic ...

  9. 3.1.7. Cross validation of time series data

    3.1.7. Cross validation of time series data Time series data is characterised by the correlation bet ...

  10. hdu2609 How many

    地址:http://acm.hdu.edu.cn/showproblem.php?pid=2609 题目: How many Time Limit: 2000/1000 MS (Java/Others ...