springboot快速整合Mybatis组件的方法(推荐)
作者:lgx211 发布时间:2022-03-23 11:59:15
Spring Boot简介
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
原有Spring优缺点分析
Spring的优点分析
Spring是Java企业版(Java Enterprise Edition,JEE,也称J2EE)的轻量级代替品。无需开发重量级的Enterprise JavaBean(EJB),Spring为企业级Java开发提供了一种相对简单的方法,通过依赖注入和面向切面编程,用简单的Java对象(Plain Old Java Object,POJO)实现了EJB的功能。
Spring的缺点分析
虽然Spring的组件代码是轻量级的,但它的配置却是重量级的。一开始,Spring用XML配置,而且是很多XML配置。Spring 2.5引入了基于注解的组件扫描,这消除了大量针对应用程序自身组件的显式XML配置。Spring 3.0引入了基于Java的配置,这是一种类型安全的可重构配置方式,可以代替XML。
所有这些配置都代表了开发时的损耗。因为在思考Spring特性配置和解决业务问题之间需要进行思维切换,所以编写配置挤占了编写应用程序逻辑的时间。和所有框架一样,Spring实用,但与此同时它要求的回报也不少。
除此之外,项目的依赖管理也是一件耗时耗力的事情。在环境搭建时,需要分析要导入哪些库的坐标,而且还需要分析导入与之有依赖关系的其他库的坐标,一旦选错了依赖的版本,随之而来的不兼容问题就会严重阻碍项目的开发进度。
MyBatis
@
简介
优点
最大的优点是SQL语句灵活,适合调优情景,业务复杂情景
劣势
最大的劣势是不同数据库之间的迁移
引入mybatis组件
pom.xml中加入
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
application.properties中加入
#dateSource
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=root
# mybatis
# 下划线转驼峰开启
mybatis.configuration.map-underscore-to-camel-case=true
# mapper扫描位置
mybatis.mapper-locations=classpath:mapper/*.xml
需要说明的是,我引入的mysql驱动为 com.mysql.cj.jdbc.Driver,而不是 com.mysql.jdbc.Driver。以下是一些参数的说明;
serverTimezone:该驱动需要指定某时区。
useUnicode:开启指定编码。
characterEncoding:指定读取数据库的编码,因为项目采用UTF-8,存取数据库信息时保持一致。
useSSL:是否建立SSL连接,我显示选的否,因为这要为服务器证书验证提供信任库,暂时没条件。
代码实战
本地的 mysql 版本为 5.7.20。
建表语句
CREATE TABLE USER_INFO
(
user_id DECIMAL(10) PRIMARY KEY NOT NULL,
user_name VARCHAR(20) DEFAULT "" NOT NULL
);
CREATE UNIQUE INDEX USER_INFO_user_id_uindex ON USER_INFO (user_id);
ALTER TABLE USER_INFO COMMENT = '用户基本信息表';
插入数据
INSERT INTO test.user_info (user_id, user_name) VALUES (1, '特朗普');
INSERT INTO test.user_info (user_id, user_name) VALUES (2, '唐纳德');
现在的项目路径为
在SpringBoot的入口类中加 @MapperScan 注解,以扫描 DAO 类,不用在每个dao接口加个@Mapper 注解。
package com.example;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.dao")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
注:如果没有分拆项目成微服务架构,或分布式架构,application主类中的@SpringBootApplication自动会扫描本包中的@Controller,@Service,@Resource等,是不需要浪费另一行@ComponentScan注解,配置路径的。
UserController.java
package com.example.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.example.service.IUserService;
@Controller
@RequestMapping("user")
public class UserController {
@Autowired
private IUserService userService;
@RequestMapping("/queryUser")
@ResponseBody
void queryUser() {
this.userService.queryUser();
}
}
IUserService.java
package com.example.service;
public interface IUserService {
void queryUser();
}
UserServiceIml.java
package com.example.service;
import com.example.dao.UserDao;
import com.example.entity.UserEntity;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service("userService")
public class UserServiceIml implements IUserService {
@Resource
private UserDao userDao;
@Override
public void queryUser() {
List<UserEntity> userList = this.userDao.queryUser();
System.out.println("================");
System.out.println(userList);
System.out.println("================");
}
}
注:如果是SSM架构过来的,这个@Resource注解可能比较陌生,因为我估计会和我之前一样用@Autowired,但是我是没有在dao层用 @Repository 注解的,之前用了在主类用了@MapperScan自动去扫描所有的dao,所以不能再用之前的@Autowired。
UserDao.java
package com.example.dao;
import com.example.entity.UserEntity;
import java.util.List;
public interface UserDao {
List<UserEntity> queryUser();
}
UserEntity.java
package com.example.entity;
public class UserEntity {
private long userId;
private String userName;
public long getUserId() {
return userId;
}
public void setUserId(long userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "UserEntity{" +
"userId=" + userId +
", userName='" + userName + '\'' +
'}';
}
}
如果你运行不成功,请对比引入的包的版本,和数据库配置是否是根据你本地的,顺便看看注解是否和文中一样。
效果图如下;
注:如果是跟着本教程来的,因为一开始就引入了spring security,而新增的路径不在刚才的权限中,所以我给zs用户改成了user下的皆可访问。如果没有跟着之前配置spring security,无需理会如下内容
//http.authorizeRequests().antMatchers("/user/addUser").hasRole("AAA")
http.authorizeRequests().antMatchers("/user/**").hasRole("AAA")
总结
以上所述是小编给大家介绍的springboot快速整合Mybatis组件的方法网站的支持!如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://www.cnblogs.com/lgx211/p/11926690.html


猜你喜欢
- 一、前言我们先来看下面一个例子:using System;using System.Threading;namespace ThreadSy
- 设置session有效时间的三种方式session的默认有效时间是30分钟(min)方法一使用java函数:session.setMaxIn
- 目录一 . 前言二 . 流程梳理2.1 实例化创建2.1.1 doGetBean 入口2.1.2 doGetBean 补充节点2.1.3 A
- 提起ProgressBar,想必大家都比较熟悉,使用起来也是比较方便,直接在XML文件中引用,然后添加属性,运行就OK了,虽然使用Progr
- 一开始我就纳闷了,怎么调试都只是一个光溜溜的界面,右侧的工具栏都没有如图:就一个光秃秃的界面,什么都没有,这就对调试很不方便于是我就试了试各
- 本文实例为大家分享了javaweb购物车案列的具体代码,供大家参考,具体内容如下一、项目目录结构 二、源代码dao包——dao层:
- 成功本文通过java语言实现ECC+AES混合加密。ECC加密算法具有密钥分配与管理简单,安全强度高等优点,AES的加密算法具有速度快,强度
- LeetCode54. 螺旋矩阵 java实现题目难度 中给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,
- 本文先为大家介绍如何利用缓存Cache方便地实现此功能。 Cache与Session这二个状态对像的其中有一个不同之处,Cache是一个全局
- 什么是sam 转换Single Abstract Method 实际上这是java8中提出的概念,你就把他理解为是 一个方法的接口 的就可以
- 本文不再对值类型进行讨论,主要讨论一下引用类型。如要看内存值类型的朋友可以看一下前一篇C#之CLR内存原理初探。C#引用类型具体分析如下:先
- 也许很多朋友在学习NIO的时候都会感觉有点吃力,对里面的很多概念都感觉不是那么明朗。在进入Java NIO编程之前,我们今天先来讨论一些比较
- 最近重新研究Java基础知识,发现以前太多知识知识略略带过了,比较说Java的线程机制,在Java中有两类线程:User Thread(用户
- 不可变对象不可变(immutable): 即对象一旦被创建初始化后,它们的值就不能被改变,之后的每次改变都会产生一个新对象。var str=
- 实现Struts登录1、jar包拷贝首先是建立java web项目,之后打开我们我们下载好strtus框架,Struts-1.2.9-bin
- 实现步骤:工具:IDEA数据库版本:mysql5.7一、环境搭建1.创建springboot项目pom.xml2.pom.xml : spr
- 网上有很多人探讨Java中异常捕获机制try...catch...finally块中的finally语句是不是一定会被执行?很多人都说不是,
- 前言如今发短信功能已经成为互联网公司的标配,本篇文章将一步步实现java发送短信考察了许多提供短信服务的三方,几乎所有都需要企业认证才可以使
- 本篇博客我们继续的来聊SpringMVC的东西,下方我们将会聊到js、css这些静态文件的加载配置,以及服务器推送的两种实现方式。当然我们在
- 任务描述:在一个无向图中,获取起始节点到所有其他节点的最短路径描述Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节