springboot整合mybatis

model类 Liujinhe.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package org.jetos.neu.demooo.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.sql.Timestamp;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class LiuJinHe {

private int id;
private String name;
private int age;
private String usage;
private Timestamp createTime;
}

建表 Liujinhe

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
CREATE DATABASE IF NOT EXISTS mydb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
USE mydb;
CREATE TABLE LiuJinHe (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT NOT NULL,
`usage` VARCHAR(255) NOT NULL,
create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

INSERT INTO LiuJinHe (name, age, `usage`, category_id) VALUES
('光速小飞侠', 25, '能够瞬间解读任意文学作品的潜台词,适合文学研讨会使用', 1),
('乐器魔术师', 30, '擅长通过各种乐器演奏曲子,可以演奏从古典到流行的任何风格', 2),
('天空涂鸦家', 22, '能够在高空中创作巨型壁画,适合公共艺术项目', 3),
('音符猎人', 27, '专门用于捕捉自然界中的声音,适合音乐创作和音效设计', 4),
('全能修理工', 35, '能够修复从古董手表到飞行器的任何设备,适合工匠和收藏家使用', 1),
('代码舞者', 28, '可以编写自动生成艺术作品的代码,适合数字艺术创作', 2),
('故事编织者', 24, '可以编写复杂的多线叙事小说,适合文学创作者', 3),
('光影雕塑家', 29, '通过操控光线与阴影来创造动态雕塑,适合现代艺术展览', 4),
('时间旅行者', 26, '能够为历史研究者再现真实历史场景,适合考古学和历史学领域', 5),
('梦境探险家', 31, '能够进入并探索他人的梦境,适合心理学研究和艺术创作', 5),
('百科全书人', 40, '能够瞬间回答任何学术问题,适合大学和科研机构', 1),
('色彩音符', 23, '可以根据音符自动生成相应的色彩搭配,适合设计师使用', 4),
('言语雕刻家', 34, '通过文字精确雕刻情感,适合诗人和作家使用', 3),
('旋律造梦者', 28, '可以在睡眠中创作出梦幻般的旋律,适合音乐制作人', 2),
('机械灵魂', 35, '能将机械赋予灵魂,适合机械装置艺术和工业设计', 1),

LiujinheMapper

1
2
3
4
5
6
7
8
9
10
11
12
package org.jetos.neu.demooo.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.jetos.neu.demooo.model.LiuJinHe;

@Mapper
public interface LiuJinHeMapper {

@Select("select * from mydb.LiuJinHe where id = #{id}")
public LiuJinHe findById(int id);
}

liujinheService

1
2
3
4
5
6
7
8
9
10
package org.jetos.neu.demooo.service.impl;

import org.jetos.neu.demooo.model.LiuJinHe;
import org.springframework.stereotype.Service;

public interface LiuJinHeService {

public LiuJinHe findById(int id);

}

liujinheServiceImpl

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package org.jetos.neu.demooo.service.impl;

import org.jetos.neu.demooo.mapper.LiuJinHeMapper;
import org.jetos.neu.demooo.model.LiuJinHe;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class LiuJinHeServiceImpl implements LiuJinHeService {

private LiuJinHeMapper liuJinHeMapper;

public LiuJinHeServiceImpl(LiuJinHeMapper liuJinHeMapper) {
this.liuJinHeMapper = liuJinHeMapper;
}
@Override
public LiuJinHe findById(int id) {
return liuJinHeMapper.findById(id);
}
}

liujinheController

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package org.jetos.neu.demooo.controller;

import org.jetos.neu.demooo.model.LiuJinHe;
import org.jetos.neu.demooo.service.LiuJinHeService;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class LiuJinHeController {

private LiuJinHeService liuJinHeService;

public LiuJinHeController(LiuJinHeService liuJinHeService) {
this.liuJinHeService = liuJinHeService;
}

@RequestMapping("/findById")
public LiuJinHe findById(int id) {
return liuJinHeService.findById(id);
}

}

遇到问题:SELECT command denied to user ‘myuser‘@’172.22.0.1’ for table ‘LiuJinHe’

  • 用户没有权限,删除compose.yml中mysql的envi的用户名和密码,只保留根用户密码

Bean扫描及注册

启动类所在的包是根包,Spring Boot会自动扫描根包下及其子包下的所有类,查找带有@Component@Service@Repository@Controller等注解的类,并将它们注册为Bean。
如果要注册的Bean对象来自于第三方库,是不能添加注解的,这时可以使用@Bean@Import等注解来注册Bean。