Springboot+Mybatis 学习笔记
Posted Panda_cv
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot+Mybatis 学习笔记相关的知识,希望对你有一定的参考价值。
Springboot+Mybatis实战笔记
目录结构
1. controller层: 控制层–>调用业务层方法来控制业务逻辑
__
Controller,从字面上理解是控制器,所以它是负责业务调度的,所以在这一层应写一些业务的调度代码,而具体的业务处理应放在service中去写。实际是等待获取网页请求,调用服务层service。__
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/addUser")
public JsonResponse addUser(@RequestBody User user){
int result = userService.addUser(user);
if ( result == 1){
return JsonResponse.success(user);
}else {
return JsonResponse.errorMsg(-1,"插入失败,请重新插入");
}
}
2. service层
service不单纯是对于dao的增删改查的调用,service是业务层,所以应该更切近于具体业务功能要求,所以在这一层,一个方法所体现的是一个可以对外提供的功能,比如购物商城中的生成订单方法,这里面就不简单是增加个订单记录那么简单,我们需要查询库存,核对商品等一系列实际业务逻辑的处理;
package com.cdut.managesystem.background.service;
import com.cdut.managesystem.background.dao.UserDao;
import com.cdut.managesystem.background.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class UserService {
@Autowired
private UserDao userDao;
public int addUser(User user){
user.setUserId(UUID.randomUUID().toString());
user.setCreateTime(DateAndTime.getNowTime());
int exist = userDao.addUser(user);
if (exist > 0){
return 1;
}else {
return 0;
}
}
public List<User> findAllUser(){
List<User> users = userDao.findAllUser();
return users;
}
public User findUser(User user){
return userDao.findUser(user);
}
}
** 在具体的实现类加入@Service @Autowired 没有new对象了 **
3. dao层: 持久层,主要与数据库交互
Dao层首先会创建Dao接口,接着就可以在配置文件中定义该接口的实现类;然后就可以在模块中调用Dao的接口进行数据业务的处理,而不用关注此接口的具体实现类是哪一个类,Dao层的数据源和数据库连接的参数都是在配置文件中进行配置的。
package com.cdut.managesystem.background.dao;
import com.cdut.managesystem.background.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface UserDao {
/**
*
* @param user
* @return 影响的行数
*/
int addUser(User user);
List<User> findAllUser();
User findUser(User user);
}
4. entity层: 实体层–>数据库在项目中的类
主要用于定义与数据库对象应的属性,提供get/set方法,tostring方法,有参无参构造函数。
package com.cdut.managesystem.background.entity;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
public class User {
private String userId;
private String userName;
private String password;
private String createTime;
}
5. resources下的mapper.userMap
resources\\mapper.userMap\\user.xml
<mapper namespace="com.cdut.managesystem.background.dao.UserDao">
<sql id="userTable">user</sql>
<insert id="addUser">
INSERT INTO
<include refid="userTable"></include>
VALUES (#{userId},#{userName},#{password},#{createTime})
</insert>
<select id="findAllUser" resultType="User">
SELECT
user_id AS userId,
user_name AS userName,
password AS password,
create_time AS createTime
FROM
<include refid="userTable"></include>
</select>
<select id="findUser" resultType="User">
SELECT
user_id AS userId,
user_name AS userName,
password AS password
FROM
<include refid="userTable"></include>
WHERE
user_name = #{userName}
AND
password = #{password}
</select>
</mapper>
连接数据库
resources\\applications.properties
## 数据源配置
spring.datasource.type=com.zaxxer.hikari.HikariDataSource
spring.datasource.data-username=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/manage_system?characterEncoding=UTF-8&serverTimezone=GMT%2b8
spring.datasource.username=root
spring.datasource.password=520myself1996
#配置服务端口
server.port=8082
6. controller层 和service层 注解@
7. @Component 与 @Service 区别
@Service 业务逻辑中服务层,跟需求有关。
@Component 组件,在很多地方调用,通用性比较强,可以是工具类,可能在控制器或者服务层调用, 跟需求没啥大关系。
8. @Autowired 与 @Resource 区别
UserService是基本的用户,然后定义两个实现类 AdminServiceImpl(超级管理员),
在UserActionController定义UserService接口,并不知道是哪个实现。这个时候我希望调用的是AdminServiceImpl,则因修改成@Resource(name = “adminServiceImpl”)
如果想要实现两类则需要加入2个@Resource( … ) 可以自动找到2个实现类。
9. @Qualifier
以上是关于Springboot+Mybatis 学习笔记的主要内容,如果未能解决你的问题,请参考以下文章