注意:配置完springboot后,记得clean package
问题:
找不到或无法加载主类 com.itheima.Application,原因: java.lang.ClassNotFoundException
环境要求:
java8及以上
maven3.3及以上。
springboot 整合mybatis
pom.xml文件
<!-- 导入父项目 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
<dependencies>
<!-- web场景 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- tx事务,自带数据库连接池 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 第三方的mybtis场景的启动器 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
<!-- 整合junit的 junit5的 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- thymeleaf解析器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<!-- 开发工具 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<!-- 分页的插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
<!-- 都可 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
</dependencies>
<properties>
<java.version>1.8</java.version>
<mysql.version>5.1.43</mysql.version>
</properties>
<!-- 打包插件 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
创建包:
main/java
com.itheima
- application.jajva
- config
- controller
- service
- serviceImpl
- mapper
- pojo
main/resources
- mapper
- **Mapper.xml
- application.yml
用注解 的形式写也可。
静态资源
放在static等包中
springboot的启动类
@SpringBootApplication
@MapperScan("com.itheima.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
使用Druid连接池对象
@Configuration
public class jdbcConfig {
@Bean
@ConfigurationProperties(prefix = "jdbc")
public DataSource getDataSource(){
return new DruidDataSource();
}
}
application.yml
server:
port: 8080
servlet:
context-path: /app
mybatis:
mapper-locations: classpath:mapper/*.xml
# 这个看如何配置前缀了 ,一般都跟默认的数据库连接池的前缀一样。
jdbc:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/test
username: root
password: root
# 日志
logging:
level:
com.heima: debug
org.springframework: info
使用事务starter中依赖的数据库连接池
application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: root
controller , service ,mapper 跟ssm中一样。
idea 中注入 mapper的代理对象,会报红,但是实际上运行是没有错的。
看不惯,添加mapper的@Repository注解即可。
mapper.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">
配置springboot的日志:
logging:
level:
com.itheima: debug
org.springframework: info
com.itheima 是所在的项目名称
关于分页插件的
jar的坐标如上:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.1.6</version>
</dependency>
PageHelperConfig
import com.github.pagehelper.PageHelper;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;
@Configuration
public class PageHelperConfig {
@Bean
public PageHelper getPageHelper(){
PageHelper pageHelper = new PageHelper();
Properties properties = new Properties();
properties.setProperty("helperDialect","mysql");
properties.setProperty("reasonable","true");
properties.setProperty("supportMethodsArguments","true");
properties.setProperty("params","count=countSql");
pageHelper.setProperties(properties);
return pageHelper;
}
}
简单的使用:
PageHelper pageHelper = new PageHelper();
pageHelper.startPage(1,5);
List<User> userList = userService.findAll();
详细的分页:
分页插件配置
分页插件的简单使用:
springboot配置拦截器 和文件上传
Springboot 整合thymeleaf使用
使用Rest映射 get,post,delete,put
springboot中,静态资源的配置
springboot2 单元测试
springboot 整合redis
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
application.yml
spring:
redis:
host: localhost
port: 6379
这是默认的配置
springboot整合junit4的用法:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import java.util.Set;
@RunWith(SpringRunner.class)
@SpringBootTest
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate; // 导入后,自动装配的。
@Test
public void test(){
//string字符串
//redisTemplate.opsForValue().set("str", "heima");
redisTemplate.boundValueOps("str").set("heima");
System.out.println("str = " + redisTemplate.opsForValue().get("str"));
//hash散列
redisTemplate.boundHashOps("h_key").put("name", "黑马");
redisTemplate.boundHashOps("h_key").put("age", 13);
/获取所有域对应的值
Set set = redisTemplate.boundHashOps("h_key").keys();
System.out.println("hash散列所有的域:" + set);
List list = redisTemplate.boundHashOps("h_key").values();
System.out.println("hash散列所有的域值:" + list);
//list列表
redisTemplate.boundListOps("l_key").leftPush("c");
redisTemplate.boundListOps("l_key").leftPush("b");
redisTemplate.boundListOps("l_key").leftPush("a");
list = redisTemplate.boundListOps("l_key").range(0, -1);
System.out.println("列表的值:" + list);
//set集合
redisTemplate.boundSetOps("set_key").add("a", "b", "c");
set = redisTemplate.boundSetOps("set_key").members();
System.out.println("集合的元素:" + set);
//sorted set有序集合
redisTemplate.boundZSetOps("z_key").add("a", 30);
redisTemplate.boundZSetOps("z_key").add("b", 20);
redisTemplate.boundZSetOps("z_key").add("c", 10);
set = redisTemplate.boundZSetOps("z_key").range(0, -1);
System.out.println("有序集合的元素:" + set);
}
}
redis忘记的话:
redis的笔记
springboot 整合通用mapper
目标:配置通用Mapper组件到Spring Boot项目中并使用Mapper接口
分析:
通用Mapper:可以实现自动拼接sql语句;所有的mapper都不需要编写任何方法也就是不用编写sql语句。可以提高开发效率。
- 添加启动器依赖;
- 改造UserMapper继承Mapper;
- 修改启动引导类Application中的Mapper扫描注解;
- 修改User实体类添加jpa注解;
- 改造UserService实现业务功能;
小结:
在启动引导类上面的mapper扫描注解 一定要修改为 通用mapper的扫描注解
6. 编写项目的顺序
主要的步骤:
.创建项目,添加pom文件
创建对应的实体类,指定@Table注解
创建对应的mapper类继承Mapper<T>接口,注入到spring容器中
在 Application.java中添加@MapperScanner("....") 注解
- 创建数据库表
- 创建项目,添加pom文件
- 创建好包,编写springboot 的入口类
- 编写application.yml的配置文件
- 创建对应的实体类,指定@Table注解
- 创建对应的mapper类继承Mapper接口,注入到spring容器中
- 在 Application.java中添加@MapperScanner("…") 注解
- 编写service层
- 编写controller层
- 访问
0.创建项目,目录结构
1. 构建数据库中的表,和对应的实体类
User
import javax.persistence.Id;
import javax.persistence.Table;
@Table(name = "user") // 注意这里!!!
public class User {
@Id
private int id;
private String name;
private String gender;
private int age;
private String address;
private String qq;
private String email;
2. 配置pom.xml文件,创建项目启动类,创建配置文件
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.1.5.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 版本必须指定 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
<scope>runtime</scope>
</dependency>
<!-- 事务 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
</dependencies>
<!-- jdk版本 -->
<properties>
<java.version>1.8</java.version>
</properties>
启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan(basePackages = "com.itheima.mapper") //basePackages可写可不写!!!
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
application.yml
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: root
# 就配置了一个数据库
3. 创建mapper类,service类
mapper
import com.itheima.domain.User;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;
@Repository // 这个注解必须要哈!!!
public interface UserMapper extends Mapper<User> {
}
service
import com.itheima.domain.User;
import com.itheima.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
@Autowired
private UserMapper userMapper;
public List<User> findALL(){
return userMapper.selectAll();
}
}
4. 创建Controller
import com.itheima.domain.User;
import com.itheima.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/hello/{id}") // resful风格
@ResponseBody
public String findAll(@PathVariable int id){
System.out.println(id);
List<User> userList = userService.findALL();
System.out.println(userList);
return ""+ userList;
}
}
5. 启动项目
访问http://localhost:8080/hello/1
springboot 整合mybatis 和通用mapper
前提:需要导入对应的jar包
- pojo中一定要使用:@Table() 注解 表明是哪一个数据表
- 在主方法类中,配置扫描路径
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan( basePackages = {"com.itheima.mapper","com.itheima.mappers"}) // 通用mapper扫描的包
@org.mybatis.spring.annotation.MapperScan("com.itheima.mappers") //mybatis扫描的包
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class,args);
}
}
- mapper接口中继承
@Repository
public interface UserMapper extends tk.mybatis.mapper.common.Mapper<User> {
@Select("select * from user where id = #{id}")
public User findOneById(int id); // 自定义的方法,也可以使用继承过来的方法。
}
springboot 使用mybatis的逆向工程
springboot 配置shiro