org.springframework.boot
spring-boot-starter-jdbc
org.springframework.boot
spring-boot-starter-web
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
mysql
mysql-connector-java
runtime
org.springframework.boot
spring-boot-starter-test
test
org.projectlombok
lombok
1.16.14
配置mybatis
配置的内容分别为:数据库地址,数据库名称,数据库密码,数据库驱动
#mybatis
spring.datasource.url=jdbc:mysql://localhost:3306/db?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
目录结构:
实体建模:
这个例子很简单,一个实体User,具有name,id,进行增删改查;
4.1 新建com.mybatis.entity包- 新建User,实体类
@Data:依赖于lombok插件,相当于@GETTER @SETTER,简化了set get方法;
@Data
public class User {
private String name;
private Integer id;
public static void main(String[] args) {
}
}
4.2 新建com.mybatis.mapper包-新建interface-UserMapper类,mapper层,对数据库进行数据持久化操作,他的方法语句是直接针对数据库操作的
@Mapper
public interface UserMapper {
//查询
@Select("SELECT * FROM MYBATIS WHERE NAME=#{name}")
User findByName(@Param("name") String name);
//查询所有
@Select("SELECT * FROM MYBATIS")
List findUsersList();
//插入
@Insert("INSERT INTO MYBATIS ( NAME, ID) VALUES ( #{name}, #{id})")
int insert(@Param("name") String name, @Param("id") Integer id);
}
4.3 新建com.mybatis.service-UserService服务类,service层,存放业务逻辑处理,也是一些关于数据库处理的操作,但不是直接和数据库打交道,他有接口还有接口的实现方法,在接口的实现方法中需要导入mapper层
@Service
@Slf4j
public class UserService {
@Autowired
private UserMapper userMapper;
@Transactional
public int insetUser(String name, Integer id) {
int insetUserResult = userMapper.insert(name,id);
log.info("##########insetUserResult########",insetUserResult);
return insetUserResult;
}
@Transactional
public User findName(String name) {
User findResutName = userMapper.findByName(name);
return findResutName;
}
}
4.4 新建com.mybatis.controller -UserController,控制器,需要导入service层,因为service中的方法是我们使用到的,controller通过接收前端传过来的参数进行业务操作,在返回一个指定的路径或者数据表。这边是简单的,默认get的方式,@RestController返回json
@RestController
public class UserController {
@Autowired
UserService userService;
@RequestMapping("/insetser")
public Integer insertUser(String name, Integer id) {
return userService.insetUser(name,id);
}
@RequestMapping("/name")
public User getName(String name) {
return userService.findName(name);
}
}
mapper层注解的时候可以添加@Mapper 注解,也可以在运行的main方法中加扫描mapper的注解,这样就不需要在每个mapper层加注解了;