回复
SpringBoot-Mybatis基础操作
qshy
发布于 2022-4-25 22:00
浏览
0收藏
作者 | springboot葵花宝典
来源 | 今日头条
什么是Mybatis?
mybatis是apache的一个开源项目ibatis,2010年正式改名为mybatis。他是一个Java的持久层框架,ibatis提供的持久层框架包含 SqL Maps和Data Access Objects(Daos)
Mybatis特点:
- Mybatis简单易学:可以通过官方文档,快速掌握和实现开发
- 支持动态sql编写
- 降低sql和代码的高耦合性,将业务层和数据访问层分开
为什么我们要介绍Mybatis呢?这是因为在国内很多公司都在使用Mybtais,我们今天就简单介绍一下Mybatis的基础操作增删改查。
代码实现
创建项目以后在pom.xml中添加mysql驱动和mybtis的相关依赖
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--mybatis依赖-->
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
注:
- mybatis-spring-boot-starter版本和springboot对应关系以及其他依赖关系,可以到mvn repository搜索查看
在application.yml中添加数据库配置
server:
port: 8899
spring:
datasource:
url: jdbc:mysql://localhost:3306/mybatis?useUnicode=true&serverTimezone=Asia/Shanghai&characterEncoding=utf-8&useSSL=false
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
- 在这里我们使用默认的数据源(数据源配置之后会单独进行讲解)
创建表中对应表和实体类
我们还是用之前创建的student表,具体sql可以查看Spring-Data-JPA多数据源配置章节,里面有具体实现Student的sql,现在我们只创建Student的实体类
@Data
public class Student implements Serializable {
/**
* ID
*/
private Long id;
/**
* 学生姓名
*/
private String name;
/**
* 性别默认男
*/
private String sex;
/**
* 年龄
*/
private Integer age;
/**
* 注册手机号
*/
private String mobile;
/**
* 注册邮箱
*/
private String email;
private Date createDate;
private Date updateDate;
/**
* 帐户是否可用(1 可用,0 删除用户)
*/
private Integer isEnabled;
private static final long serialVersionUID = 1L;
}
创建实体类对应的mapper
本次我们介绍的是直接在StudentMapper中实现sql,不适用其他xml实现mapper的方式(下一章节单独介绍)
public interface StudentMapper {
@Select("SELECT * FROM STUDENT WHERE ID = #{id}")
Student findById(@Param("id") Long id);
@Update("UPDATE STUDENT SET NAME=#{name},SEX=#{sex},AGE=#{age},EMAIL=#{email},MOBILE=#{mobile} WHERE id=#{id}")
void updateStudent(Student student);
@Insert("INSERT INTO STUDENT(NAME, SEX,AGE,EMAIL,MOBILE) VALUES(#{name}, #{sex}, #{age}, #{email}, #{mobile})")
int insert(@Param("name") String name,
@Param("sex") String sex,
@Param("age") Integer age,
@Param("email") String email,
@Param("mobile") String mobile
);
@Insert("INSERT INTO STUDENT(NAME, SEX,AGE,EMAIL,MOBILE) VALUES(#{name}, #{sex}, #{age}, #{email}, #{mobile})")
int insertByObject(Student student);
}
注:
- 在传递数据进行数据的增和改的时候有几种常用的尝试mybatis注解说明@Param格式例如mapper中的insert方法,很好理解使用对应传递格式 例如mappe中insertByObject方法的实现
创建Service接口
创建StudentService接口
public interface StudentService {
int insert( String name,
String sex,
Integer age,
String email,
String mobile
);
Student updateStudent(Student student);
int insertByObject(Student student);
Student findById( Long id);
}
实现Service接口的实现
创建StudentServiceImpl去实现StudentService
@AllArgsConstructor
@Service
public class StudentServiceImpl implements StudentService {
private StudentMapper studentMapper;
@Override
public int insert(String name, String sex, Integer age, String email, String mobile) {
int insert = studentMapper.insert(name, sex, age, email, mobile);
return insert;
}
@Override
public int insertByObject(Student student){
return studentMapper.insertByObject(student);
}
@Override
public Student updateStudent(Student student){
studentMapper.updateStudent(student);
return student;
}
@Override
public Student findById( Long id) {
return studentMapper.findById(id);
}
}
控制层的实现
创建StudentController去实现控制层
@Slf4j
@RequestMapping("/student")
@RestController
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("create")
public int create(String name, String sex, Integer age, String email, String mobile) {
int insert = studentService.insert(name, sex, age, email, mobile);
return insert;
}
@PostMapping("insert")
public int insertByObject(@RequestBody Student student){
return studentService.insertByObject(student);
}
@PostMapping("update")
public Student updateStudent(@RequestBody Student student) {
return studentService.updateStudent(student);
}
@GetMapping("/select/{id}")
public Student findByName(@PathVariable("id") Long id) {
return studentService.findById(id);
}
}
测试
使用postman测试一下分别测试一下接口:
- http://localhost:8899/student/select/11 GET方法
- http://localhost:8899/student/update POST方法
- http://localhost:8899/student/create POST方法
测试结果如下:
赞
收藏
回复
相关推荐