springboot集成mybatis实例

介绍下springboot集成mybatis的使用:

Spring Boot 集成MyBatis有两种方式:
第一种方式就是使用MyBatis官方提供的:
mybatis-spring-boot-starter
采用这种方式的话直接引入此依赖即可
第二种方式就是仍然用类似mybatis-spring的配置方式,
这种方式需要自己写一些代码,但是可以很方便的控制MyBatis的各项配置;
注:本例采用的是第一种方式;简单方便;

主要步骤为:

(1)在pom.xml添加mybatis等相关依赖;



    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    1.1.1



    mysql
    mysql-connector-java
    6.0.5



    org.springframework.boot
    spring-boot-starter-thymeleaf
(2)在application.properties文件中配置mysql连接配置文件
spring.datasource.url                   =   jdbc:mysql://localhost:3306/spring?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=true
spring.datasource.username              =   root
spring.datasource.password              =   root
spring.datasource.driver-class-name     =   com.mysql.cj.jdbc.Driver
spring.datasource.testOnBorrow          =   true
spring.datasource.validationQuery       =   SELECT 1

(3)创建实体类

@Component
public class User {
    private Integer id;
    private String name;
    private String gender;
    private Integer age;

getset方法省略;

注意实体类和数据库user表的字段要保持一致;

(4):创建mapper接口

@Mapper
public interface UserMapper {
    
    @Insert("INSERT INTO user(NAME,gender,age) VALUES (#{name},#{gender},#{age})")
    @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")
    int addUser(User user);

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

    @Update("UPDATE user SET NAME = #{name},gender=#{gender},age=#{age} WHERE id = #{id}")
    int updateUser(User user);

    @Select("SELECT * FROM user WHERE id = #{id}")
    User findUserById(Integer id);

    @Select("SELECT * FROM user")
    List findAll();
}

注:上面的定义的mapper直接写上了sql语句,简单方便,没有在xml中定义,我们也可以在xml中定义sql语句,

@Mapper指定这是一个mybatis的mapper接口;

@Insert    代表添加的SQL语句;

@Delete  代表添加的SQL语句;

@Update 代表添加的SQL语句;

@Select   代表添加的SQL语句;

@Options 能够设置缓存时间,能够为对象生成自增的key,通常用户查询和添加当中

@Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id")

user表有一个id自增长主键,如何在插入用户数据后自动获取到该主键值呢?可以使用@Options注解:
设置@Options属性userGeneratedKeys的值为true,并指定实例对象中主键的属性名keyProperty为id,这样在user插入数据后,id属性会被自动赋值。

(5)):创建service类

@Service
public class UserService {
    
    @Autowired
    private UserMapper userMapper;

    /**
     * 列出所有用户列表信息;
     * @return
     */
    public List listUser(){
        List userList = userMapper.findAll();
        return userList;
    }
注  service类要注入mapper;添加@service注解;

(6))创建controller

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

    @Autowired
    private UserService userService;

    //列出所有用户信息;
    @RequestMapping("/list")
    public String listUser (ModelMap map){
        List userList  = userService.listUser();
        map.addAttribute("users", userList);
        return "user/list";
    }
注:  控制层controller要注入service;

@RequestMapping指定请求的路径;

ModelMap map用户传递响应的数据到客户端游览器展示给用户;,业执行之后的数据需要他传到页面解析;

public String listUser ()此方法返回必须是String.返回的信息正好对应我们的html文件名;

(7) 编写html文件

省略

本例GitHub地址:  https://github.com/gumeimen/springbootmybatisa


你可能感兴趣的:(spring-boot)