序言:
"orm框架的本质是简化编程中操作数据库的编码,发展到现在基本上就剩两家了,
一个是宣称可以不用写一句SQL的hibernate,
一个是可以灵活调试动态sql的mybatis,
两者各有特点,在企业级系统开发中可以根据需求灵活使用。
发现一个有趣的现象:传统企业大都喜欢使用hibernate,互联网行业通常使用mybatis。
hibernate特点就是所有的sql都用Java代码来生成,不用跳出程序去写(看)sql,有着编程的完整性,发展到最顶端就是spring data jpa这种模式。
mybatis初期使用比较麻烦,需要各种配置文件、实体类、dao层映射关联、还有一大推其它配置。当然mybatis也发现了这种弊端,初期开发了generator可以根据表结果自动生产实体类、配置文件和dao层代码,可以减轻一部分开发量;后期也进行了大量的优化可以使用注解了,自动管理dao层和配置文件等,发展到最顶端就是今天要讲的这种模式了,mybatis-spring-boot-starter就是springboot+mybatis可以完全注解不用配置文件,也可以简单配置轻松上手。"
本文主要讲使用mybatis的xml配置文件版本
1)修改build.gradle,引入mybatis-spring-boot-starter
buildscript {
ext {
springBootVersion = '2.1.1.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenLocal()
maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
dependencies {
compile('org.springframework.boot:spring-boot-starter-web',
"org.mybatis.spring.boot:mybatis-spring-boot-starter:1.1.1",
"mysql:mysql-connector-java"
)
testImplementation('org.springframework.boot:spring-boot-starter-test')
}
2) 建文件夹层级和对应类
3)修改application.properties 文件
mybatis.type-aliases-package=com.example.helloword.entity
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3309/testdb?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=username
spring.datasource.password=password
mybatis.config-location=classpath:mybatis/mybatis-config.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml
4)mybatis-config.xml 文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
</configuration>
5) 新建DocDataEntity
(题外:Lombok了解下)
public class DocDataEntity implements Serializable {
private Long id;
private String root;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getRoot() {
return root;
}
public void setRoot(String root) {
this.root = root;
}
}
6)DocDataMapper
@Mapper
public interface DocDataMapper {
List<DocDataEntity> getAll();
}
7)DocDataMapper.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.example.helloword.mapper.DocDataMapper" >
<resultMap id="BaseResultMap" type="com.example.helloword.entity.DocDataEntity" >
<id column="id" property="id" jdbcType="BIGINT" />
<result column="root" property="root" jdbcType="VARCHAR" />
</resultMap>
<sql id="Base_Column_List" >
id,root
</sql>
<select id="getAll" resultMap="BaseResultMap" >
SELECT
<include refid="Base_Column_List" />
FROM doc_api
</select>
</mapper>
8)DocDataController
@RestController
@RequestMapping(value = "/data")
public class DocDataController {
@Autowired
private DocDataMapper docDataMapper;
@RequestMapping("/getDoc")
public List<DocDataEntity> getUsers() {
List<DocDataEntity> users = docDataMapper.getAll();
return users;
}
}