SpringBoot整合MyBatis

在IDEA用SpringBoot模板引擎创建SpringBoot项目,勾选Web、MySQL、JPA、MyBatis。

在resource下新建application.yml文件,这里使用ymal来配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/jpa?serverTimezone=UTC
    username: root
    password: 123456
    driver-class-name: com.mysql.jdbc.Driver
    #使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource

mybatis:
  #指定实体所在的位置
  type-aliases-package: cn.edu.hsxy.entity
  #指定映射文件的位置,如果全部使用注解,没有映射文件可以不写
  mapper-locations: classpath:mapper/*.xml

新建实体了User

package cn.edu.hsxy.entity;
public class User {
    private int id;
    private String name;
    private String password;

/*
  set/get方法
*/
}

实体类创建好了开始写dao。

package cn.edu.hsxy.dao;
import ...
@Mapper
public interface UserDao {

    int insert(User user);

    User selectByPrimaryKey(Integer id);

    int update(User user);

    @Delete("DELETE FROM user WHERE id=#{id}")
    int delete(Integer id);
}

  • 需要在dao的所以接口上写上@Mapper注解。如果不写,可以在主函数上写@MapperScan("cn.edu.hsxy.dao"),指向dao接口所在的包,扫描该包下的所有接口。

在resource下创建mapper包,放所有的映射文件,与之前application.yml文件的位置要一致。这里创建UserMapper.xml,如下.




    
        INSERT INTO
            user
            (name ,password)
          VALUES
         (#{name},#{password})
    

    

    
        UPDATE
              user
        SET
            name = #{name},
            password = #{password}
          WHERE
              id=#{id}
    


  • namespace的值就是到接口的全限定名,根据这个名找到接口所在的位置。
  • id就是接口中的方法名。
  • 如果在接口中的方法中写好了@Select、@Delete等注解,则不需要再配置文件中写映射了。

dao层写好开始写Service层,在service下创建UserService接口

package cn.edu.hsxy.service;

import cn.edu.hsxy.entity.User;

public interface UserService {
    public User getUserById(int id);

    boolean addUser(User user);

    boolean updateUser(User user);

    Integer deleteUser(Integer id);
}

写一个UserServiceImpl实现上接口,去写业务逻辑

package cn.edu.hsxy.service.impl;

import  ...;

@Service("userService")
public class UserServiceImpl implements UserService {

    @Resource
    private UserDao userDao;

    @Override
    public User getUserById(int id) {
        return userDao.selectByPrimaryKey(id);
    }

    @Override
    public boolean addUser(User user) {
        boolean result = false;
        try{
            userDao.insert(user);
        }catch (Exception e){
            e.printStackTrace();
        }
        return result;
    }

    @Override
    public boolean updateUser(User user) {
        Integer result = -1;
        try{
            result = userDao.update(user);
        }catch (Exception e){
            e.printStackTrace();
        }
        if(result == 1){
            return true;
        }
        return false;
    }

    @Override
    public Integer deleteUser(Integer id) {
        return userDao.delete(id);
    }
}

Service层写好了开始写Controller层。

package cn.edu.hsxy.controller;

import  ...;

@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/getUser")
    @ResponseBody
    public User getUser(){
        User user = new User();
        user.setId(1);
        user.setName("ssk");
        user.setPassword("123456");
        return user;
    }

    @ResponseBody
    @RequestMapping("/showUser")
    public User toIndex(int id){
        return userService.getUserById(id);
    }

    @RequestMapping("/updateUser")
    @ResponseBody
    public User updateUser(User user){
        boolean flag = userService.updateUser(user);
        if(flag == true){
            return user;
        }
        return null;
    }

    @ResponseBody
    @RequestMapping("/deleteUser")
    public Integer deleteUserById(Integer id){
        return userService.deleteUser(id);
    }

}

接下来就是主函数了,因为SpringBoot使用内嵌Tomcat,使用主函数就可以运行了。

package cn.edu.hsxy;

import  ... ;

@SpringBootApplication
//@MapperScan("cn.edu.hsxy.dao")
public class SpringbootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisApplication.class, args);
    }
}
  • 因为在接口中已经写@Mapper注解了,所以@MapperScan可以不写,建议使用@MapperScan注解。

源码及数据库文件分享 提取码:ijrz

你可能感兴趣的:(SpringBoot整合MyBatis)