- 作 者:是江迪呀
- ✒️本文关键词:
Springboot
、数据库
、Git
、项目
- ☀️每日 一言:
野心是对梦想最好的致敬!
上回我们已经成功的创建了一个SpringBoot的单体项目并测试启动并了,但是光有个空架子是什么都做不了的,下面我们就集成MySQL
和Mybatis-plus
。
common
:顾名思义,公用的、共享的;用于存放一些常量、枚举。config
:用于存放一些配置文件,比如预加载的类、Bean等。controller
:控制层,用于存放接口。entity
:用于存放实体类(实体类:和数据库字段一一对应的类)。mapper
:用来存放和xml文件对应的mapper接口。model
:用于存放入参和出参的类。service
:用来存放service层和它的实现类。utils
:用来存放工具类。resources/mapper
:用来存放xml文件。 <dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.32version>
dependency>
根据自己的MySQL数据库版本来使用合适的数据库连接驱动。我数据库是5.6版本的所以使用5.1.32版本的驱动。
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.21version>
dependency>
这里我们使用德鲁伊的连接池,其实不使用连接池也是可以的,但是强烈建议要使用,连接池的作用如下:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test
driver-class-name: com.mysql.jdbc.Driver
username: xx
password: xx
type: com.alibaba.druid.pool.DruidDataSource
上面我们添加了MySQL,万事俱备只欠东风,这个东风就是持久层框架——Mybatis-plus。它具有一下的特点:
<dependency>
<groupId>com.baomidougroupId>
<artifactId>mybatis-plus-boot-starterartifactId>
<version>3.5.0version>
dependency>
mybatis-plus:
# xml格式的mapper文件路径
mapper-locations: classpath*:mapper/*.xml
configuration:
map-underscore-to-camel-case: true
log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
现在我们写一个demo来说明,不同的class
应该存在哪个文件夹下面,以及如何使用mybatis-plus。
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`name` varchar(100) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@TableName("user")
public class user {
@TableId
private Long id;
private String name;
private Integer age;
public user() {
}
public user(Long id, String name, Integer age) {
this.id = id;
this.name = name;
this.age = age;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
UserMapper:
package com.shijiangdiya.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.catalina.User;
@Mapper
public interface UserMapper extends BaseMapper<User> {
/**
* 查询用户信息
* @return
*/
List<UserVO> queryUserInfo();
}
@Mapper
,后面需要根据这个注解进行扫描。UserMapper.xml:
DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.shijiangdiya.mapper.UserMapper">
<select id="queryUserInfo" resultType="com.shijiangdiya.model.user.UserVO">
select
name,
age
from user
select>
mapper>
一定要注意,其中namespace的值就是UserMapper的路径。如何判断二者连接起来了呢?
UserService:
package com.shijiangdiya.service;
import com.baomidou.mybatisplus.service.IService;
import com.shijiangdiya.entity.user.User;
import com.shijiangdiya.model.user.UserVO;
import java.util.List;
public interface UserService extends IService<User> {
List<UserVO> queryUserInfo();
}
UserServiceImpl:
package com.shijiangdiya.service.impl;
import com.baomidou.mybatisplus.service.impl.ServiceImpl;
import com.shijiangdiya.entity.user.User;
import com.shijiangdiya.mapper.UserMapper;
import com.shijiangdiya.model.user.UserVO;
import com.shijiangdiya.service.UserService;
import java.util.List;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
@Override
public List<UserVO> queryUserInfo() {
return baseMapper.queryUserInfo();
}
}
package com.shijiangdiya.controller;
import com.shijiangdiya.model.user.UserVO;
import com.shijiangdiya.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/users")
public List<UserVO> users(){
return userService.queryUserInfo();
}
}