springboot mybatis配置

在网上找了很多资料看,跟着写,发现错误还是挺多的,这次终于弄好了,决定弄一个笔记,防止下次还会用到,首先是配置pom.xml,因为我用的是mysql,所以基本配置如下

spring.datasource.url=
spring.datasource.username = 
spring.datasource.password = 
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#mybatis 配置
mybatis.type-aliases-package = wordroot.wr.Mapper(这里是你放mapper文件的包,如果是xml就是xml的形式,我的是注解的)

在启动类也需要做一些变化,这里加MapperScan,之后在mapper包中的每个文件都不需要添加@mapper了,这里不深入讨论

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
​
@SpringBootApplication
@MapperScan("wordroot.wr.Mapper")
public class WrApplication {
​
    public static void main(String[] args) {
        SpringApplication.run(WrApplication.class, args);
    }
​
}

 

接着是编写代码部分,主要是一个项目结构的问题,可以根据在StackOverflow上面的给的建议去弄

https://stackoverflow.com/questions/40902280/what-is-the-recommended-project-structure-for-spring-boot-rest-projects

弄好以后需要写一个sql文件来建表

CREATE TABLE `user` (
  `id` int(13) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(33) DEFAULT NULL COMMENT '姓名',
  `age` int(3) DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

如果你是按章StackOverflow给的建立来建立的项目结构,那在model目录中建立userModel.java

 

public class userModel{
    String name;
    int age;
    
    public String getName() {
        return name;
    }

    public void setName(int name) {
        this.name = name;
    }
    
    /**
    后面的以此类推
    **/
}

接着要去Dao层或者mapper层编写代码,这里的代码是指注解的sql,同样的也不深入,会用就行。

public interface UserDao {
    /**
     * 通过名字查询用户信息
     */
    @Select("SELECT * FROM user WHERE name = #{name}")
    User findUserByName(@Param("name") String name);

    /**
     * 查询所有用户信息
     */
    @Select("SELECT * FROM user")
    List<User> findAllUser();

    /**
     * 插入用户信息
     */
    @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age}")
    void insertUser(@Param("name") String name, @Param("age") Integer age);

    /**
     * 根据 id 更新用户信息
     */
    @Update("UPDATE  user SET name = #{name},age = #{age},money= #{money} WHERE id = #{id}")
    void updateUser(@Param("name") String name, @Param("age") Integer age,
                    @Param("id") int id);

    /**
     * 根据 id 删除用户信息
     */
    @Delete("DELETE from user WHERE id = #{id}")
    void deleteUser(@Param("id") int id);
}

最后在Controller层编写api

@RestController
@RequestMapping("/")
public class UserController {

    @Autowired
    private UserMapper userMapper;
    @RequestMapping("/")
    public ModelAndView index(){
        User user = new User();
        user.setName("test");
        user.age(10);
        UserDao.insertUser(user);
        ModelAndView modelAndView = new ModelAndView("/index");
        modelAndView.addObject("count", UserDao.findAllUser().size());
        return modelAndView;
    }

大致流程就是这个样子,dao层/mapper层编写关于sql的文件,实体层编写和表数据有关的get/set,最后Controller调用。

参考链接

 

posted @ 2020-07-20 22:16  WuCola  阅读(332)  评论(0)    收藏  举报