SpringBoot整合Mybatis
SpringBoot整合Mybatis
一、pom导入mybatis启动器
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.4</version>
</dependency>
二、配置文件
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
username: root
password: 12345678
mybatis:
type-aliases-package: com.example.mybatis.pojo # 所有POJO类所在包路径
mapper-locations: classpath:mapper/*.xml # mapper映射文件路径
三、demo
1、demo工程结构
2、/pojo/User.java
package com.example.mybatis.pojo;
public class User {
private Integer id;
private String user_name;
private String login_name;
public User() {
}
public User(Integer id, String user_name, String login_name) {
this.id = id;
this.user_name = user_name;
this.login_name = login_name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public String getLogin_name() {
return login_name;
}
public void setLogin_name(String login_name) {
this.login_name = login_name;
}
}
3、/mapper/UserMapper.java
package com.example.mybatis.mapper;
import com.example.mybatis.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper // 表明这是一个Mapper类,可以被mybatis扫描到
@Repository
public interface UserMapper {
List<User> queryAll();
void add(User user);
void update(User user);
void delete(Integer id);
}
-
@Mapper 表明这是一个Mapper类,可以被mybatis扫描到
-
我们也可以不使用@Mapper这个注解,我们在启动类XxxApplication中添加@MapperScan("mapper包路径")注解也是一样的作用。
package com.example.mybatis; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("com.example.mybatis.mapper") public class MybatisApplication { public static void main(String[] args) { SpringApplication.run(MybatisApplication.class, args); } }
4、classpath:mapper/UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- UserMapper类映射好 -->
<mapper namespace="com.example.mybatis.mapper.UserMapper">
<!-- id映射UserMapper类中的方法名,resultType:返回值类型 -->
<select id="queryAll" resultType="User">
select * from sys_user
</select>
<!-- parameterType:参数类型 -->
<insert id="add" parameterType="User">
insert into sys_user(id, user_name, login_name) values (#{id}, #{user_name}, #{login_name})
</insert>
<update id="update" parameterType="User">
update sys_user set user_name=#{user_name}, login_name=#{login_name} where id=#{id}
</update>
<delete id="delete" parameterType="User">
delete from sys_user where id=#{id}
</delete>
</mapper>
5、/controller/UserController.java
最后简单写了个controller类,使用rest接口测试下:
package com.example.mybatis.controller;
import com.example.mybatis.mapper.UserMapper;
import com.example.mybatis.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@RequestMapping("query")
public List<User> queryAll(){
return userMapper.queryAll();
}
@RequestMapping("add")
public String add(){
userMapper.add(new User(100, "jim", "login"));
return "add Ok";
}
@RequestMapping("update/{id}")
public String update(@PathVariable Integer id){
userMapper.update(new User(id, "jim2", "login2"));
return "update Ok";
}
@RequestMapping("delete/{id}")
public String delete(@PathVariable Integer id){
userMapper.delete(id);
return "delete Ok";
}
}