springboot整合mybatis
-
新建一个项目,记得勾选web、sql相关
-
额外导入两个依赖
<!--mybatis-springboot--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <!--lombok--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.12</version> <scope>provided</scope> </dependency>
-
配置数据源
spring.datasource.username=root spring.datasource.password=1227 spring.datasource.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # 别名 mybatis.type-aliases-package=com.ryan.pojo
-
连接数据库
-
编写pojo类
package com.ryan.pojo; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @Data @AllArgsConstructor @NoArgsConstructor public class User { private int id; private String username; private String gender; private String address; }
-
编写mapper接口,并添加@Mapper注解
package com.ryan.mapper; import com.ryan.pojo.User; import org.apache.ibatis.annotations.*; import org.springframework.stereotype.Component; import java.util.List; //使用 @Mapper,最终 Mybatis 会有一个拦截器,会自动的把 @Mapper 注解的接口生成动态代理类。 // 这点可以在 MapperRegistry 类中的源代码中查看。 //@Mapper 注解针对的是一个一个的类,相当于是一个一个 Mapper.xml 文件。 // 如果一个接口一个接口的使用 @Mapper,太麻烦了,于是 @MapperScan 就应用而生了。可以在application类中使用 // @MapperScan 配置一个或多个包路径,自动的扫描这些包路径下的类,自动的为它们生成代理类。 @Mapper//一般都是使用在接口上 public interface UserMapper { @Select("select * from mybatis.user") List<User> queryUserList(); @Select("select * from mybatis.user where id = #{id}") User queryUserById(@Param("id") int id); @Insert("insert into user(id,username,gender,address) values(#{id},#{username},#{gender},#{address})") int addUser(User user); @Delete("delete from mybatis.user where id = #{id}") int deleteUserById(@Param("id") int id); @Update("update mybatis.user set username=#{username},address=#{address} where id=#{id}") int updateUser(User user); }
-
编写service层
package com.ryan.serviece; import com.ryan.pojo.User; import org.apache.ibatis.annotations.*; import java.util.List; public interface UserService { List<User> queryUserList(); User queryUserById(int id); int addUser(User user); int deleteUserById(int id); int updateUser(User user); }
package com.ryan.serviece; import com.ryan.mapper.UserMapper; import com.ryan.pojo.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper;//此处报错,程序本身没有问题,是idea的问题 public void setUserMapper(UserMapper userMapper) { this.userMapper = userMapper; } @Override public List<User> queryUserList() { return userMapper.queryUserList(); } @Override public User queryUserById(int id) { return userMapper.queryUserById(id); } @Override public int addUser(User user) { return userMapper.addUser(user); } @Override public int deleteUserById(int id) { return userMapper.deleteUserById(id); } @Override public int updateUser(User user) { return userMapper.updateUser(user); } }
-
编写controller层
package com.ryan.controller; import com.ryan.pojo.User; import com.ryan.serviece.UserServiceImpl; 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 UserServiceImpl userService; @RequestMapping("/queryUserList") public List<User> queryUserList(){ List<User> users = userService.queryUserList(); return users; } @RequestMapping("/queryUserById/{id}") public User queryUserById(@PathVariable("id") int id){ User user = userService.queryUserById(id); return user; } @RequestMapping("/addUser") public String addUser(User user){ user.setId(11); user.setUsername("ryan222"); user.setGender("男"); user.setAddress("天河"); userService.addUser(user); return "insert ok"; } @RequestMapping("/deleteUserById/{id}") public String deleteUserById(@PathVariable("id") int id){ userService.deleteUserById(id); return "delete ok"; } @RequestMapping("/updateUser") public String updateUser(User user){ user.setId(8); user.setUsername("ryan1111"); user.setAddress("shanghai"); userService.updateUser(user); return "update ok"; } }
-
测试:略
注意点:
- 整和mybatis时,别忘了导入mybatis提供的启动器(依赖)
- 别忘了配置数据源,同时可以通过mybatis.配置相关mybatis
- 写mapper接口时别忘了加上注解@Mapper
- 写serviece层时自动装配可能会出现报错:Could not autowire. No beans of ‘UserMapper’ type found.,可以忽略,程序可正常运行,可能属于idea的bug
学习来源:B站up主狂神说,感觉不错,感兴趣的可以去看下