欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-18 23:45:04
前言 今天学习下springboot集成mybatis,集成mybatis一般有两种方式,一个是基于注解的一个是基于xml配置的。今天先了解下基于注解的mybatis集成...

前言

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

一、引入依赖项

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

<!-- 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>

二、创建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<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,那怎么让系统知道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<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";
 }
}

六、数据库配置

上面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:3306/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" %>
<!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>

八、测试

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

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

九、小结

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

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