org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.0.1
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.1.1
mybatis-spring
org.mybatis
org.mybatis
mybatis-spring
1.3.2
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-devtools
true
tk.mybatis
mapper-spring-boot-starter
tk.mybatis
mapper
4.0.0
org.projectlombok
lombok
log4j
log4j
1.2.17
com.google.code.gson
gson
2.8.5
org.jdom
jdom2
2.0.6
org.springframework.boot
spring-boot-maven-plugin
然后再配置 application.properties 这个地方也有朋友喜欢用 yml 但是不巧这里就先只配置了 properties 的
自定义端口号 默认为 8080
server.port = 8080
添加 MySQL 数据库配置 127.0.0.1 作用和
localhost 一样
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/boot_dome?serverTimezone=UTC&characterEncoding=UTF-8&useUnicode=true
用户名
spring.datasource.username=root
密码
spring.datasource.password=root
驱动
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Thymeleaf 配置 模板支持 HTML XML Text JavaScript
spring.thymeleaf.mode=HTML5
编码,可不用配置
spring.thymeleaf.encoding=utf-8
内容类别,可不用配置
spring.thymeleaf.content-type=text/html
开发配置为 false 避免修改模板还要重启服务器
spring.thymeleaf.cache=false
配置模板路径,默认是 templates 可以不用配置
spring.thymeleaf.prefix=classpath:/templates/
这俩都配置好了之后,最起码可以保证项目能运行了。。哦哦哦不对。。还有一个地方
也是最重要的一部分!!!就是我们项目的主类!!一般新建的项目是这个样子的
然后我们再给他加上几个注解:
@ComponentScan(basePackages = “com.cs.mybatis.*”) // 扫描主程序文件
@MapperScan(“com.cs.mybatis.mapper”) // 扫描这个包下的 Mapper 文件
@ServletComponentScan // 使用该注解后,Servlet Filter Listener 可以直接通过
最后建一个测试类,测试一下是否可以访问成功,写好测试方法之后,点击右上角绿色的三角按钮启动,上边也介绍了,SpringBoot 有内置的 Tomcat 所以不用我们来配置
/**
-
@ClassName TestController
-
@Author linluochen
-
@Date 2019/4/19 16:09
-
@Version 1.0
**/
@Controller // 声明这是一个 Controller 表示此类用于负责处理 Web 请求
public class TestController {
@RequestMapping(“Test”) // 如果参数链接的请求的参数相同则调用此方法
@ResponseBody // 表示这个的返回值只一个文本不是一个视图路径 通常用于接收 AJAX 请求
public String Test(){
System.out.println(“来了老弟?”);
return “Hello World”;
}
}
页面输出结果为,同时查看控台也会有提示,这里就不贴图了。。
到这里,第一部分搭建项目就算完成了下面就是集成 MyBatis 进行增删改查
----------------------------------------------------------- 分界线 -----------------------------------------------------------------------
首先我们右键 New 一个 Package 包
然后创建好,model,mapper,service,serviceimpl 大概结构就是这个样子
model 用来存放实体类
mapper 和 service 用来放接口
serviceimpl 业务逻辑层,简单来说就是实现接口业务的地方
首先,现在数据库创建一个表:
create table teacher(
id int(11) primary key auto_increment, // 主键,自增
name varchar(30) ,
age int(11)
)
然后创建 Model 层:
package com.cs.mybatis.model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper=false)
@Table(name=“teacher”) // 数据库名对应
public class Teacher implements Serializable {
// 序列化
private static final long serialVersionUID = 1L;
/**
- ID
*/
@Id // 声明主键
@Column(name = “id”) // 与数据库字段名对应
private Integer id;
/**
- 名字
*/
@Column(name = “name”)
private String name;
/**
- 年龄
*/
@Column(name = “age”)
private Integer age;
public Teacher(){
}
public Teacher(
Integer id
){
this.id = id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getId() {
return this.id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public void setAge(Integer age) {
this.age = age;
}
public Integer getAge() {
return this.age;
}
}
Mapper 层,这个地方我们集成了一下 Tk_MyBatis 相当于一个持久层 API 用过 Jpa 的朋友应该知道这个是啥意思,一般不是特别复杂的 sql 就不用在 Mapper 层写了,Tk 就可以搞定,当然如果是复杂的 sql 例如多表联合查询等还是要在Mapper操作的,如果实在不懂用法的话,可以给我留言评论,或者加我QQ,我会在最底部留下的
想了解详细用法的朋友可以看官方文档:https://github.com/abel533/Mapper/wiki/6.example 这里我们不做过多的介绍
package com.cs.mybatis.mapper;
import com.cs.mybatis.base.BaseMapper;
import com.cs.mybatis.model.Teacher;
import org.springframework.stereotype.Component;
@Component
public interface TeacherMapper extends BaseMapper { // 这个地方我们调用的 Tk_MyBatis 持久层 API
}
Service 层,这个就照常写就可以了
/*
-
Powered By [rapid-framework]
-
Web Site: http://www.rapid-framework.org.cn
-
Google Code: http://code.google.com/p/rapid-framework/
*/
package com.cs.mybatis.service;
import com.cs.mybatis.model.Teacher;
import java.util.List;
public interface TeacherService{
/**
-
@title: 查询全部
-
@auther: linluochen
-
@date: 2019/5/5 10:28
*/
List selectAll();
/**
-
@title: 增加
-
@param: teacher
-
@auther: linluochen
-
@date: 2019/5/5 10:30
*/
Integer insertSelective(Teacher teacher);
}
ServiceImpl 实现类,这个地方调用我们的 Mapper 虽然我们 Mapper 没有写东西,但是由于我们的 Mapper 继承了 Tk_MyBatis 里面的属性,所以可以直接调用简单的单表查询的方法
/*
-
Powered By [rapid-framework]
-
Web Site: http://www.rapid-framework.org.cn
-
Google Code: http://code.google.com/p/rapid-framework/
*/
package com.cs.mybatis.service.impl;
import com.cs.mybatis.mapper.TeacherMapper;
import com.cs.mybatis.model.Teacher;
import com.cs.mybatis.service.TeacherService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class TeacherServiceImpl implements TeacherService {
@Autowired // 自动装配 Bean
TeacherMapper teacherMapper;
/**
-
@title: 查询全部
-
@auther: linluochen
-
@date: 2019/5/5 10:25
*/
@Override
public List selectAll() {
return teacherMapper.selectAll();
}
/**
-
@title: 新增
-
@param: teacher
-
@auther: linluochen
-
@date: 2019/5/5 10:25
*/
@Override
public Integer insertSelective(Teacher teacher) {
return teacherMapper.insertSelective(teacher);
}
}
写完这些之后,我们去测试一下能不能用,在左侧有一个 test 文件夹,然后打开,如下图
打开后在里面写入要测试的方法,这个类呢,是我们的测试类,所有的可执行操作都可以在这个里面进行测试,不过多解释,注解已经写得很清楚了,然后写完之后运行我们写的测试方法,在左侧会有一个绿色的三角标志,然后点击运行
package com.cs.mybatis;
import com.cs.mybatis.model.Teacher;
import com.cs.mybatis.service.TeacherService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;