项目作者: 52JimXu

项目描述 :
SpringBoot+Mybatis-plus+Oracle/MySQL的CRUD
高级语言: Java
项目地址: git://github.com/52JimXu/SpringBoot-Mybatis-plus.git
创建时间: 2019-11-04T08:10:05Z
项目社区:https://github.com/52JimXu/SpringBoot-Mybatis-plus

开源协议:

下载


License
PRs Welcome
GitHub stars
GitHub forks

Mybatis-plus的使用,真香

自己学习了Oracle和mybatis-plus,不用用怎么行呢,用了的话,不写一篇博客怎么行呢,So,let’s go!

为了方便MySQL读者,我把MySQL也配置好了的

一、创建一个web工程没得说吧

二、导入依赖

第一次使用maven引Oracle驱动的注意了,maven厂库是没有ojdbc,所以要自己安装,还有,如果你的Oracle版本是10g,请使用ojdbc14.jar,如果你的版本是11g,请使用ojdbc6.jar,我的版本是11g,所以我用的ojdbc6.jar,然后我提供一个下载地址吧:ojdbc6,毕竟官网的速度不敢恭维!!!有了jar包就要安装到maven厂库了,可以将你下载的jar包用解压软件打开,MATE-INF里面有个MANIFEST.MF文件,用记事本打开就可以看到它的版本号,我这个是11.1.0.7.0,然后在jar包文件路径下打开cmd,执行:

  1. mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.1.0.7.0 -Dpackaging=jar -Dfile=ojdbc6.jar

看到BUILD SUCCESS就成功了
其中的Dversion=11.1.0.7.0就是查看的版本。
然后可以在maven厂库看见了

最近学习了Lombok,它可以减少实体类的代码,也就是getter,setter,toString的一系列操作,具体的类容嘛,自行百度
IDEA需要安装Lombok插件,Eclipse的话我没折腾过,不安装插件使用getter/setter,编辑器就会报错。
最后看看依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>com.oracle</groupId>
  7. <artifactId>ojdbc6</artifactId>
  8. <version>11.1.0.7.0</version>
  9. <scope>runtime</scope>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.projectlombok</groupId>
  13. <artifactId>lombok</artifactId>
  14. </dependency>
  15. <dependency>
  16. <groupId>com.baomidou</groupId>
  17. <artifactId>mybatis-plus-boot-starter</artifactId>
  18. <version>3.1.0</version>
  19. </dependency>
  20. <dependency>
  21. <groupId>mysql</groupId>
  22. <artifactId>mysql-connector-java</artifactId>
  23. <version>5.1.26</version>
  24. </dependency>

我把MySQL和Oracle都引进来了的。

然后配置文件

  1. # 监听端口
  2. server.port=8080
  3. server.address=127.0.0.1
  4. #Oracle
  5. spring.datasource.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
  6. spring.datasource.username=scott
  7. spring.datasource.password=tiger
  8. spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
  9. # MySql
  10. #spring.datasource.url=jdbc:mysql:///test
  11. #spring.datasource.username=root
  12. #spring.datasource.password=1234
  13. #spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  14. #打印执行的SQL语句
  15. logging.level.top.jimxu.mapper:debug

这里说一下遇到的坑吧,Oracle要连接必须开启两个服务,我开始只开了一个,就报了一个

  1. java.sql.SQLException: The Network Adapter could not establish the connection

具体的两个服务如图

然后打印执行SQL语句里面的 top.jimxu.mapper是我的包名,要改哦

接下来就贴代码吧

Application

  1. @SpringBootApplication
  2. @MapperScan("top.jimxu.mapper")
  3. public class Application {
  4. public static void main(String[] args) {
  5. SpringApplication.run(Application.class,args);
  6. }
  7. }

Entity

  1. @Data
  2. @TableName("users")
  3. public class User {
  4. @TableId("user_id")
  5. private int userId;
  6. private String userName;
  7. private int userAge;
  8. }

就这么一点点代码就好了,你说nice不nice,哈哈哈,不过这里还是说一下,userName会被Mybatis-plus的BaseMapper拆成user_name,同理,userAge就是user_age。

所以把表创建出来

Oracle

  1. CREATE TABLE "USERS" (
  2. user_id NUMBER NOT NULL ,
  3. user_name VARCHAR2(50) NOT NULL ,
  4. user_age NUMBER NOT NULL ,
  5. PRIMARY KEY (user_id)
  6. );

MySQL

  1. CREATE TABLE `USERS` (
  2. `user_id` int NOT NULL ,
  3. `user_name` varchar(50) NOT NULL ,
  4. `user_age` int NOT NULL ,
  5. PRIMARY KEY (`user_id`)
  6. );

Controller

  1. @RestController
  2. @RequestMapping("/user")
  3. public class UserController {
  4. @Autowired
  5. private UserService userService;
  6. @GetMapping("/{id}")
  7. public User selById(@PathVariable int id){
  8. return userService.findUserById(id);
  9. }
  10. @GetMapping()
  11. public List<User> selUser(){
  12. return userService.selectList(null);
  13. }
  14. @PostMapping()
  15. public void addUser(@RequestBody User user){
  16. userService.insertUser(user);
  17. }
  18. @PutMapping()
  19. public void updateUser(@RequestBody User user){
  20. userService.insertUser(user);
  21. }
  22. @DeleteMapping()
  23. public void delUser(User user){
  24. userService.deleteUser(user);
  25. }
  26. }

没错,RESTful风格的接口

Service接口

  1. public interface UserService extends IService<User>{
  2. int insertUser( User user );
  3. int updateUser( User user );
  4. int deleteUser( User user );
  5. User findUserById( int id );
  6. List<User> selectList(User user);
  7. }

继承了Mybatis-plus的IService接口,泛型是User

Service实现类

  1. @Service
  2. @AllArgsConstructor
  3. public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
  4. @Override
  5. public int insertUser(User user) {
  6. return baseMapper.insert(user);
  7. }
  8. @Override
  9. public int updateUser(User user) {
  10. return baseMapper.updateById(user);
  11. }
  12. @Override
  13. public int deleteUser(User user) {
  14. return baseMapper.deleteById(user.getUserId());
  15. }
  16. @Override
  17. public User findUserById(int id) {
  18. System.out.println(id);
  19. System.out.println(baseMapper.selectById(id));
  20. return baseMapper.selectById(id);
  21. }
  22. @Override
  23. public List<User> selectList(User user) {
  24. return baseMapper.selectList(null);
  25. }
  26. }

Mapper

  1. public interface UserMapper extends BaseMapper<User>{
  2. }

没错,写完了,不需要复杂的mapper.xml,BaseMapper提供的基础的CRUD,极大的简化了操作啊啊啊啊啊,只能说,牛逼。

来吧,运行起来,打开Postman测试咯

由于没有数据,那就先测试新增

  1. 请求方式选择POST URL localhost:8080/user
  2. 依次插入几条数据
  3. {"userId": 1,"userName": "张三","userAge": 16}
  4. {"userId": 2,"userName": "李四","userAge": 17}
  5. {"userId": 3,"userName": "王五","userAge": 18}

刷新数据库

OK!新增没得问题再测试一下查询吧

查询全部

通过id查询

大功告成!!!总的来说,确实好用啊

我把项目放到了GitHub,需要的小伙伴就去clone吧,别忘记start哦

链接:https://github.com/52JimXu/SpringBoot-Mybatis-plus