前言
六安ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
今天學習下SpringBoot集成mybatis,集成mybatis一般有兩種方式,一個是基于注解的一個是基于xml配置的。今天先了解下基于注解的mybatis集成。下面話不多說了,來一起看看詳細的介紹吧
因為是mybatis嘛,肯定是要有mybatis相關(guān)的,同時用的是MySQL,所以也需要引入mysql相關(guān)的。
org.mybatis.spring.boot mybatis-spring-boot-starter 1.3.2 mysql mysql-connector-java 8.0.11
這里創(chuàng)建了一個User的model,這樣方便與數(shù)據(jù)庫的表對照,這里在mysql中創(chuàng)建了一個名為mybatis的數(shù)據(jù)庫,里面創(chuàng)建了一個user的表.同時創(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 }
這里需要把model與操作數(shù)據(jù)庫的sql對照起來,用什么對照呢?那就需要創(chuàng)建一個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") }) ListgetAll(); @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)建了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) { Listusers=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也設(shè)置了,model也設(shè)置了,那要與數(shù)據(jù)庫交互,肯定要配置數(shù)據(jù)庫地址這些信息吧。這里在運行的時候還報了一個錯誤.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è)置了下時區(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)建頁面顯示
這里還是按照上一博客用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" %>Insert title here
名字 | 年齡 | 性別 |
---|---|---|
${item.name} | ${item.age} | ${item.sex} |
這里先在瀏覽器打開http://localhost:8080/user/alluser.do,可以看到用戶列表,然后輸入http://localhost:8080/user/insert.do,就會看到列表顯示多了一行數(shù)據(jù)。
使用基于注解的集成mybatis比較省事方便,但有利有弊,對于多表相連的可能就不太方便,使用基于xml配置的可能就更會好些。
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對創(chuàng)新互聯(lián)的支持。