Spring Boot基础入门之基于注解的Mybatis

网友投稿 271 2023-01-26


Spring Boot基础入门之基于注解的Mybatis

前言

http://

今天学习下SpringBoot集成mybatis,集成mybatis一般有两种方式,一个是基于注解的一个是基于xml配置的。今天先了解下基于注解的mybatis集成。下面话不多说了,来一起看看详细的介绍吧

一、引入依赖项

因为是mybatis嘛,肯定是要有mybatis相关的,同时用的是mysql,所以也需要引入mysql相关的。

org.mybatis.spring.boot

mybatis-spring-boot-starter

1.3.2

mysql

mysql-connector-java

8.0.11

二、创建model

这里创建了一个User的model,这样方便与数据库的表对照,这里在mysql中创建了一个名为mybatis的数据库,里面创建了一个user的表.同时创建了枚举类UserSexEnum.

CREATE TABLE `user` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`name` varchar(20) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

`sex` varchar(20) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

package com.example.model;

import java.io.Serializable;

public class User implements Serializable{

@Override

public String toString() {

// TODO Auto-generated method stub

return "User [id=" + Id + ", name=" + Name + ", age=" + Age + "]";

}

public int getId() {

return Id;

}

public void setId(int id) {

Id = id;

}

public String getName() {

return Name;

}

public void setName(String name) {

Name = name;

}

public int getAge() {

return Age;

}

public void setAge(int age) {

Age = age;

}

private int Id;

private String Name;

private int Age;

private UserSexEnum Sex;

public UserSexEnum getSex() {

return Sex;

}

public void setSex(UserSexEnum sex) {

Sex = sex;

}

}

package com.example.model;

public enum UserSexEnum {

MAN, WOMAN

}

三、创建Mapper

这里需要把model与操作数据库的sql对照起来,用什么对照呢?那就需要创建一个mapper.这里有增删改查。

package com.example.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Delete;

import org.apache.ibatis.annotations.Insert;

import org.apache.ibatis.annotations.Result;

import org.apache.ibatis.annotations.Results;

import org.apache.ibatis.annotations.Select;

import org.apache.ibatis.annotations.Update;

import com.example.model.*;;

public interface UserMapper {

@Select("SELECT * FROM user")

@Results({

@Result(property = "Sex", column = "sex", javaType = UserSexEnum.class),

@Result(property = "Name", column = "name")

})

List getAll();

@Select("SELECT * FROM user WHERE id = #{id}")

@Results({

@Result(property = "Sex", column = "sex", javaType = UserSexEnum.class),

@Result(property = "Name", column = "name")

})

User getOne(int id);

@Insert("INSERT INTO user(name,age,sex) VALUES(#{name}, #{age}, #{sex})")

void insert(User user);

@Update("UPDATE user SET name=#{userName},age=#{age} WHERE id =#{id}")

void update(User user);

@Delete("DELETE FROM user WHERE id =#{id}")

void delete(int id);

}

四、配置扫描

上面配置了mapper,那怎么让系统知道mapper放在哪里呢?于是有了@MapperScan注解。

package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

@MapperScan("com.example.mapper")

public class DemoApplication {

public static void main(String[] args) {

SpringApplication.run(DemoApplication.class, args);

}

}

五、创建Controller

这里创建了UserController,一个是显示所有用户,一个是新增一个用户之后再显示所有用户。

package com.example.demo;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.ui.Model;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RequestMethod;

import com.example.mapper.UserMapper;

import com.example.model.User;

import com.example.model.UserSexEnum;

@Controller

@RequestMapping("/user")

public class UserController {

@Autowired

private UserMapper userMapper;

@RequestMapping(value = "/alluser.do",method = RequestMethod.GET)

public String getallusers(Model model) {

List users=userMapper.getAll();

model.addAttribute("users", users);

return "userlist";

}

@RequestMapping(value = "/insert.do",method = RequestMethod.GET)

public String adduser(Model model) {

User user=new User();

user.setName("cuiyw");

user.setAge(27);

user.setSex(UserSexEnum.MAN);

userMapper.insert(user);

List users=userMapper.getAll();

model.addAttribute("users", users);

return "userlist";

}

}

六、数据库配置

上面mapper也设置了,model也设置了,那要与数据库交互,肯定要配置数据库地址这些信息吧。这里在运行的时候还报了一个错误.nested exception is java.sql.SQLException: The server time zone value 'Öй¼Ê¼ä' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.在mysql中设置了下时区:set global time_zone='+8:00';

spring.mvc.view.prefix=/view/

spring.mvc.view.suffix=.jsp

mybatis.type-aliases-package=com.example.model

spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver

spring.datasource.url = jdbc:mysql://localhost:3ITiJRJxC306/mybatis

spring.datasource.username = root

spring.datasource.password = 123456

七、创建页面显示

这里还是按照上一博客用jsp显示数据。

<%@ page language="java" contentType="text/html; charset=utf-8"

pageEncoding="utf-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

八、测试

这里先在浏览器打开http://localhost:8080/user/alluser.do,可以看到用户列表,然后输入http://localhost:8080/user/insert.do,就会看到列表显示多了一行数据。

九、小结

使用基于注解的集成mybatis比较省事方便,但有利有弊,对于多表相连的可能就不太方便,使用基于xml配置的可能就更会好些。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Struts中使用validate()输入校验方法详解
下一篇:简述共享文件系统的特点(简述共享文件系统的特点有哪些)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~