Spring Boot基礎(chǔ)入門之基于注解的Mybatis
前言
今天學(xué)習(xí)下SpringBoot集成mybatis,集成mybatis一般有兩種方式,一個(gè)是基于注解的一個(gè)是基于xml配置的。今天先了解下基于注解的mybatis集成。下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
一、引入依賴項(xiàng)
因?yàn)槭莔ybatis嘛,肯定是要有mybatis相關(guān)的,同時(shí)用的是mysql,所以也需要引入mysql相關(guān)的。
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.11</version> </dependency>
二、創(chuàng)建model
這里創(chuàng)建了一個(gè)User的model,這樣方便與數(shù)據(jù)庫(kù)的表對(duì)照,這里在mysql中創(chuàng)建了一個(gè)名為mybatis的數(shù)據(jù)庫(kù),里面創(chuàng)建了一個(gè)user的表.同時(shí)創(chuàng)建了枚舉類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
}
三、創(chuàng)建Mapper
這里需要把model與操作數(shù)據(jù)庫(kù)的sql對(duì)照起來(lái),用什么對(duì)照呢?那就需要?jiǎng)?chuàng)建一個(gè)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<User> 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,那怎么讓系統(tǒng)知道m(xù)apper放在哪里呢?于是有了@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);
}
}
五、創(chuàng)建Controller
這里創(chuàng)建了UserController,一個(gè)是顯示所有用戶,一個(gè)是新增一個(gè)用戶之后再顯示所有用戶。
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<User> 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<User> users=userMapper.getAll();
model.addAttribute("users", users);
return "userlist";
}
}
六、數(shù)據(jù)庫(kù)配置
上面mapper也設(shè)置了,model也設(shè)置了,那要與數(shù)據(jù)庫(kù)交互,肯定要配置數(shù)據(jù)庫(kù)地址這些信息吧。這里在運(yùn)行的時(shí)候還報(bào)了一個(gè)錯(cuò)誤.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中設(shè)置了下時(shí)區(qū):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:3306/mybatis spring.datasource.username = root spring.datasource.password = 123456
七、創(chuàng)建頁(yè)面顯示
這里還是按照上一博客用jsp顯示數(shù)據(jù)。
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<table>
<tr><th>名字</th><th>年齡</th><th>性別</th></tr>
<c:forEach items="${users}" var="item">
<tr><td>${item.name}</td><td>${item.age}</td><td>${item.sex}</td></tr>
</c:forEach>
</table>
</body>
</html>
八、測(cè)試
這里先在瀏覽器打開(kāi)http://localhost:8080/user/alluser.do,可以看到用戶列表,然后輸入http://localhost:8080/user/insert.do,就會(huì)看到列表顯示多了一行數(shù)據(jù)。

九、小結(jié)
使用基于注解的集成mybatis比較省事方便,但有利有弊,對(duì)于多表相連的可能就不太方便,使用基于xml配置的可能就更會(huì)好些。
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- 詳解spring boot mybatis全注解化
- 詳解Spring Boot集成MyBatis(注解方式)
- 詳解SpringBoot 快速整合Mybatis(去XML化+注解進(jìn)階)
- Spring Boot 整合 Mybatis Annotation 注解的完整 Web 案例
- springboot與mybatis整合實(shí)例詳解(完美融合)
- Spring Boot 集成Mybatis實(shí)現(xiàn)主從(多數(shù)據(jù)源)分離方案示例
- Spring Boot MyBatis 連接數(shù)據(jù)庫(kù)配置示例
- 詳解Spring Boot整合Mybatis實(shí)現(xiàn) Druid多數(shù)據(jù)源配置
- SpringBoot Mybatis Plus公共字段自動(dòng)填充功能
- Spring Boot 與 mybatis配置方法
相關(guān)文章
My eclipse 端口占用(9360)問(wèn)題解決辦法
這篇文章主要介紹了My eclipse 工程發(fā)布時(shí)出現(xiàn)端口占用問(wèn)題解決辦法的相關(guān)資料,需要的朋友可以參考下2016-12-12
SpringCloud服務(wù)接口調(diào)用OpenFeign及使用詳解
這篇文章主要介紹了SpringCloud服務(wù)接口調(diào)用——OpenFeign,在學(xué)習(xí)Ribbon時(shí),服務(wù)間調(diào)用使用的是RestTemplate+Ribbon實(shí)現(xiàn),而Feign在此基礎(chǔ)上繼續(xù)進(jìn)行了封裝,使服務(wù)間調(diào)用變得更加方便,需要的朋友可以參考下2023-04-04
SpringBoot登錄驗(yàn)證碼實(shí)現(xiàn)過(guò)程詳解
這篇文章主要介紹了SpringBoot登錄驗(yàn)證碼實(shí)現(xiàn)過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Java WebService 簡(jiǎn)單實(shí)例(附實(shí)例代碼)
本篇文章主要介紹了Java WebService 簡(jiǎn)單實(shí)例(附實(shí)例代碼), Web Service 是一種新的web應(yīng)用程序分支,他們是自包含、自描述、模塊化的應(yīng)用,可以發(fā)布、定位、通過(guò)web調(diào)用。有興趣的可以了解一下2017-01-01
Spring?Security配置多個(gè)數(shù)據(jù)源并添加登錄驗(yàn)證碼的實(shí)例代碼
這篇文章主要介紹了Spring?Security配置多個(gè)數(shù)據(jù)源并添加登錄驗(yàn)證碼,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
Java業(yè)務(wù)校驗(yàn)工具實(shí)現(xiàn)方法
這篇文章主要介紹了Java業(yè)務(wù)校驗(yàn)工具實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
JAVA正則表達(dá)式及字符串的替換與分解相關(guān)知識(shí)總結(jié)
今天給大家?guī)?lái)的是關(guān)于Java的相關(guān)知識(shí)總結(jié),文章圍繞著JAVA正則表達(dá)式及字符串的替換與分解展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下2021-06-06
Java使用正則表達(dá)式判斷字符串是否以字符開(kāi)始
這篇文章主要介紹了Java使用正則表達(dá)式判斷字符串是否以字符開(kāi)始的相關(guān)資料,需要的朋友可以參考下2017-06-06
SpringBoot 如何使用Dataway配置數(shù)據(jù)查詢接口
這篇文章主要介紹了SpringBoot 如何使用Dataway配置數(shù)據(jù)查詢接口,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11

