一、建立maven项目后引入依赖:
以下没有版本号的依赖表示在springboot父依赖中已锁定相应的版本号
必需依赖:
1.springboot父依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>
2.web依赖启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.mysql驱动
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
4.mybatis的启动器
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.3.0</version>
</dependency>
5.junit依赖启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
非必需依赖:
1.lombok
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
通过在类上添加注释的方式为其建立get,set方法,构造器等,以及开启构建者模式
@Data
@NoArgsConstructor //无参构造器
@AllArgsConstructor //全参构造器
@Builder //构建者设计模式
2.解决配置文件绑定到bean上的提示问题
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
二、建立项目结构
1.建立如下图所示的项目结构与相应的引导类(StudentService为个人项目业务端接口,可忽略)
项目结构:
引导类(类名通常为你的项目名加上Application):
@SpringBootApplication
@MapperScan(basePackages = "(你的组织名所对应的包).boot.mapper")
public class SpringbootmybatisdemoApplication {//所有的java代码都要放在这个类所在的包下面(将包下所有的组件类加入springboot管理),它取代了配置类的组件扫描功能,test类也要在相对应的位置
public static void main(String[] args) {
SpringApplication.run(SpringbootmybatisdemoApplication.class,args);
}
}
domain包存放数据库表所对应的实体类,mapper包存放持久层mapper接口,service包存放业务层接口及实现类,entity包存放统一返回类型的实体类,utils包存放工具类,web包存放控制器与统一异常处理类。
2.在引导类的包相对应的测试包在加入测试代码,比如加入mapper接口测试类:
3.在你的java包资源文件中加入static(前端资源(html,css,javascript,音频图片等)),mapper包为mapper接口映射文件,application.yml是配置文件(取代ssm中的配置类)
配置文件的编写
#tomcat配置(默认8080,非必需)
server:
port: 80
#数据库驱动配置(必需)
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&useSSL=false&allowPublicKeyRetrieval=true
username: root
password: 2474600586liu
#日志配置(公司项目中必需)
logging:
level:
组织包名: debug
#mybatis配置(必需)
mybatis:
configuration:
map-underscore-to-camel-case: true #开启驼峰映射
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启数据库操作日志
type-aliases-package: 组织包名.boot.domain.Student #开别名(效果为可以将映射文件中Student的全类名替换为Student,可以选择不要这行)
mapper-locations: classpath:mapper/*StudentMapper.xml #映射文件路径
三、注意事项
1.在持久层mapper接口上添加,可以防止出现引用代理对象爆红
@Mapper
@Repository
2.在业务层实现类上添加@Transactional,在只有读取数据库操作的方法上添加@Transactional(readOnly = true)可以提高效率
@Service
@Transactional
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Override
@Transactional(readOnly = true)
public Result findAll() {
List<Student> all = studentMapper.findAll();
return Result.success(all);
}
@Override
public Result insert(Student student) {
int inert = studentMapper.inert(student);
if(inert>0){
return Result.success();
}
else{
return Result.error("添加失败");
}
}
}
3.业务层尽量restful的代码风格,即相应的请求类型处理相应的操作,比如get请求对应查询,post请求对应插入,put请求对应修改,delete请求对应删除
@RestController
@RequestMapping("/student")
@Slf4j
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping
public Result findAll(){
Result all = studentService.findAll();
log.info("findall");
return all;
}
@PostMapping
public Result insert(@RequestBody Student student){
log.info("insert");
return studentService.insert(student);
}
@DeleteMapping("/{id}")
public Result delete(@PathVariable(name = "id") Long id){
log.info("delete");
return studentService.delete(id);
}
@PutMapping
public Result update(@RequestBody Student student){
log.info("update");
return studentService.update(student);
}
@GetMapping("/{id}")
public Result findById(@PathVariable(name = "id") Long id){
log.info("findbyid");
return studentService.findById(id);
}
}
4.在static粘贴引入前端时,需要使用maven的清理命令(clean)清理项目的target目录和通过构建过程生成的其他临时文件,否则可能会报错
标签:mapper,return,springboot,boot,id,学习,Result,注意事项,public From: https://www.cnblogs.com/swliujavajourney/p/17990781