springboot+mybatis整合(代码片段)

cnwuhao cnwuhao     2022-12-02     396

关键词:

  LZ今天自己搭建了下Spring boot+Mybatis,比原来的Spring+SpringMVC+Mybatis简单好多。其实只用Spring boot也可以开发,但是对于多表多条件分页查询,Spring boot就有点力不从心了,所以LZ把Mybatis整合进去,不得不说,现在的框架搭建真的是方便。话不多说,进入正题。

一、java web开发环境搭建

  网上有很多教程,参考教程:http://www.cnblogs.com/Leo_wl/p/4752875.html 

二、Spring boot搭建

  1、Intellij idea菜单栏File->new->project。

  技术图片

  2、选择左侧栏中spring initializr,右侧选择jdk版本,以及默认的Service URL,点击next。

  技术图片

  /3、然后填写项目的Group、Artifact等信息,helloworld阶段选默认就可以了,点击next。

  技术图片

  4、左侧点击Web,中间一侧选择Web,然后左侧选择SQL,中间一侧选择JPA、Mybatis、MYSQL(LZ数据库用的是mysql,大家可以选择其他DB),点击next。

  技术图片

  5、填写Project name 等信息,然后点击Finish。

  技术图片

  至此,一个maven web项目就创建好了,目录结构如下:

  技术图片

这样,Spring boot就搭建好了,pom.xml里已经有了Spring boot的jar包,包括我们的mysql数据连接的jar包。Spring boot内置了类似tomcat这样的中间件,所以,只要运行DemoApplication中的main方法就可以启动项目了。我们测试一下。

在src/main/java下新建目录com/demo/entity/User。

技术图片
package com.demo.entity;

public class User 
    private String name;

    public String getName() 
        return name;
    

    public void setName(String name) 
        this.name = name;
    
技术图片

相同目录下新建com/demo/controller/TestBootController。

技术图片
package com.demo.controller;

import com.demo.entity.User;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@EnableAutoConfiguration
@RequestMapping("/testboot")
public class TestBootController 
    @RequestMapping("getuser")
    public User getUser() 
        User user = new User();
        user.setName("test");
        return user;
    
技术图片

spring boot启动DemoAplication是需要扫描它下面的Controller等类的,所以将DemoApplication移动到com/demo目录下。还有就是Spring boot启动默认是要加载数据源的,所以我们在src/main/resources下新建application.yml:

技术图片
#默认使用配置
spring:
  profiles:
    active: dev

#公共配置与profiles选择无关
mybatis:
  typeAliasesPackage: com.xdd.entity
  mapperLocations: classpath:mapper/*.xml


---

#开发配置
spring:
  profiles: dev

  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
技术图片

  或者将pom.xml中加载数据源的jar包先注释掉也可以。

/*<dependency>
   <groupId>org.mybatis.spring.boot</groupId>
   <artifactId>mybatis-spring-boot-starter</artifactId>
   <version>1.3.0</version>
</dependency>*/

最终的目录结构如下,

技术图片

启动DemoApplication的main方法,访问http://localhost:8080/testboot/getuser即可。

技术图片

 三、整合Mybatis

  1、集成druid,使用连接池。pom.xml中添加:

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.1.0</version>
</dependency>

  最终的pom.xml文件:

技术图片
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.arm</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>demo</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>


</project>
技术图片

在application.yml中添加数据源、Mybatis的实体和配置文件位置。

技术图片
#默认使用配置
spring:
  profiles:
    active: dev

#公共配置与profiles选择无关 mapperLocations指的路径是src/main/resources
mybatis:
  typeAliasesPackage: com.xdd.entity
  mapperLocations: classpath:mapper/*.xml


---

#开发配置
spring:
  profiles: dev

  datasource:
    url: jdbc:mysql://localhost:3306/test
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
    # 使用druid数据源
    type: com.alibaba.druid.pool.DruidDataSource
技术图片

就这样就整合完成了!我们测试一下。

用MyBatis Generator自动生成代码,参考博文:http://blog.csdn.net/zhshulin/article/details/23912615 这里列一下自动生成的代码。

技术图片
import com.xdd.entity.User;
import org.springframework.stereotype.Component;

public interface UserDao 
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
技术图片

UserMapper.xml

技术图片
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.xdd.dao.UserDao" >
    <resultMap id="BaseResultMap" type="com.xdd.entity.User" >
        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="user_name" property="userName" jdbcType="VARCHAR" />
        <result column="password" property="password" jdbcType="VARCHAR" />
        <result column="age" property="age" jdbcType="INTEGER" />
    </resultMap>
    <sql id="Base_Column_List" >
        id, user_name, password, age
    </sql>
    <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Integer" >
        select
        <include refid="Base_Column_List" />
        from user_t
        where id = #id,jdbcType=INTEGER
    </select>
    <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer" >
        delete from user_t
        where id = #id,jdbcType=INTEGER
    </delete>
    <insert id="insert" parameterType="com.xdd.entity.User" >
        insert into user_t (id, user_name, password,
        age)
        values (#id,jdbcType=INTEGER, #userName,jdbcType=VARCHAR, #password,jdbcType=VARCHAR,
        #age,jdbcType=INTEGER)
    </insert>
    <insert id="insertSelective" parameterType="com.xdd.entity.User" >
        insert into user_t
        <trim prefix="(" suffix=")" suffixOverrides="," >
            <if test="id != null" >
                id,
            </if>
            <if test="userName != null" >
                user_name,
            </if>
            <if test="password != null" >
                password,
            </if>
            <if test="age != null" >
                age,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides="," >
            <if test="id != null" >
                #id,jdbcType=INTEGER,
            </if>
            <if test="userName != null" >
                #userName,jdbcType=VARCHAR,
            </if>
            <if test="password != null" >
                #password,jdbcType=VARCHAR,
            </if>
            <if test="age != null" >
                #age,jdbcType=INTEGER,
            </if>
        </trim>
    </insert>
    <update id="updateByPrimaryKeySelective" parameterType="com.xdd.entity.User" >
        update user_t
        <set >
            <if test="userName != null" >
                user_name = #userName,jdbcType=VARCHAR,
            </if>
            <if test="password != null" >
                password = #password,jdbcType=VARCHAR,
            </if>
            <if test="age != null" >
                age = #age,jdbcType=INTEGER,
            </if>
        </set>
        where id = #id,jdbcType=INTEGER
    </update>
    <update id="updateByPrimaryKey" parameterType="com.xdd.entity.User" >
        update user_t
        set user_name = #userName,jdbcType=VARCHAR,
        password = #password,jdbcType=VARCHAR,
        age = #age,jdbcType=INTEGER
        where id = #id,jdbcType=INTEGER
    </update>
</mapper>
技术图片
技术图片
public class User 
    private Integer id;

    private String userName;

    private String password;

    private Integer age;

    public Integer getId() 
        return id;
    

    public void setId(Integer id) 
        this.id = id;
    

    public String getUserName() 
        return userName;
    

    public void setUserName(String userName) 
        this.userName = userName == null ? null : userName.trim();
    

    public String getPassword() 
        return password;
    

    public void setPassword(String password) 
        this.password = password == null ? null : password.trim();
    

    public Integer getAge() 
        return age;
    

    public void setAge(Integer age) 
        this.age = age;
    
技术图片

最后将DemoApplication.java修改一下,让其扫描dao层接口。

技术图片
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.support.SpringBootServletInitializer;

@SpringBootApplication
@MapperScan("com.xdd.dao")
public class DemoApplication extends SpringBootServletInitializer
    public static void main(String[] args) 
        SpringApplication.run(DemoApplication.class,args);
    
技术图片

自己添加controller和service

技术图片
import java.util.List;
import java.util.Map;

public interface UserService 
    public User getUserById(int userId);

    boolean addUser(User record);

技术图片

 

技术图片
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

@Service("userService")
public class UserServiceImpl implements UserService 

    @Resource
    private UserDao userDao;


    public User getUserById(int userId) 
        return userDao.selectByPrimaryKey(userId);
    

    public boolean addUser(User record)
        boolean result = false;
        try 
            userDao.insertSelective(record);
            result = true;
         catch (Exception e) 
            e.printStackTrace();
        

        return result;
    

技术图片

 

技术图片
@Controller
@RequestMapping("/user")
public class UserController 
    @Resource
    private UserService userService;

    @RequestMapping("/showUser")
    @ResponseBody
    public User toIndex(HttpServletRequest request, Model model)
        int userId = Integer.parseInt(request.getParameter("id"));
        User user = this.userService.getUserById(userId);
        return user;
    

技术图片

浏览器访问http://localhost:8080/user/showUser?id=1

技术图片

 

 

springboot.04.springboot整合mybatis(代码片段)

SpringBoot.04.SpringBoot整合MyBatis准备工作1.mapper模板2.t_user整合MyBatis1.新建Module2.pom.xml3.application.yml4.Springboot04MybatisApplication.java5.User.java6.UserMapper.java7.UserMapper.xml8.UserService9.User 查看详情

springboot.04.springboot整合mybatis(代码片段)

SpringBoot.04.SpringBoot整合MyBatis准备工作1.mapper模板2.t_user整合MyBatis1.新建Module2.pom.xml3.application.yml4.Springboot04MybatisApplication.java5.User.java6.UserMapper.java7.UserMapper.xml8.UserService9.User 查看详情

springboot+mybatis整合(代码片段)

   LZ今天自己搭建了下Springboot+Mybatis,比原来的Spring+SpringMVC+Mybatis简单好多。其实只用Springboot也可以开发,但是对于多表多条件分页查询,Springboot就有点力不从心了,所以LZ把Mybatis整合进去,不得不说,现在的框架搭建... 查看详情

springboot-注解方式整合mybatis(代码片段)

SpringBoot整合Mybatis一.注解方式整合Mybatis1.创建Air的Mapper接口@ComponentScanpublicinterfaceAirMapperList<Air>selectAll();AirselectOneById(Integerid);2.添加Mybatis注解针对增删改查:@Insert,@De 查看详情

springboot整合mybatis方式2:使用注解方式整合mybatis(代码片段)

SpringBoot整合Mybatis简介SpringBoot整合Mybatis方式2:使用注解方式整合Mybatis1.先用idea创建一个添加mybatis需要的相关依赖的工程。2.准备数据库和表3.创建表映射类4.创建mapper代理接口5.创建Service层和Service的实现层6.创建控制层࿰... 查看详情

springboot学习笔记:整合mybatis(代码片段)

本文介绍SpringBoot整合mybatis一.创建一个SpringBoot项目引入相应的依赖<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2 查看详情

如何整合springboot+mybatis-plus(系列一)(代码片段)

如何整合springboot+mybatis-plus(系列一)背景整合springboot+mybatis-plus,其实就是整合springboot+mybatis+mybatis-plus,本来mybatis-plus就能自动包含mybatis步骤非常简单,用IDEA新建项目,选择Sprin 查看详情

springboot整合mybatis入门(代码片段)

先上依赖<!--https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter--><!--mybatis启动包--><dependency><groupId>org.mybatis.spring.boot</groupId>&l 查看详情

springboot——整合ssm(主要整合mybatis)(代码片段)

基于SpringBoot整合SSMSpringBoot整合Spring(不存在)SpringBoot整合SpringMVC(不存在)SpringBoot整合MyBatis(主要)Spring整合MyBatis(复习)SpringConfig导入JdbcConfig导入MyBatisConfigJdbcConfig定义数据源(加载properties配置项:driver、url、username、pas... 查看详情

springboot整合--mybatis(代码片段)

1.导入依赖mybatis-spring-boot-starter不是springboot官方的,自研的<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifa 查看详情

springboot整合mybatis(代码片段)

SpringBoot整合MyBatisSpringBoot整合MyBatisSpringBoot是一个快速开发应用程序的框架,而MyBatis是一个提供ORM支持的优秀框架。在本文中,我们将学习如何将SpringBoot与MyBatis整合,以便我们能够更加轻松地开发Web应用程序。步骤创建新的Spri... 查看详情

springboot:整合mybatis框架(代码片段)

综合概述MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO(PlainO... 查看详情

springboot整合mybatis+jwt(代码片段)

Springboot整合mybatis+JWT本文学习了网络上的视频资源此处导入依赖<!--引入JWT依赖--><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.4.0</versio 查看详情

springboot整合mybatis(代码片段)

1、引入依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.1</version><relativePath/></ 查看详情

springboot整合mybatis,批量新增(代码片段)

pom<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>1.3.2</version></dependency><de 查看详情

十七springboot2核心技术——整合mybatis(代码片段)

整合mybatis1.1、添加mybatis、数据库驱动依赖<dependencies><!--SpringBoot框架web项目起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web&l 查看详情

十七springboot2核心技术——整合mybatis(代码片段)

整合mybatis1.1、添加mybatis、数据库驱动依赖<dependencies><!--SpringBoot框架web项目起步依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web&l 查看详情

springboot+mybatis+sybase整合详细(代码片段)

声明:部分内容来自于​​​​​​SpringBoot整合Mybatis(最全版)_lzh253985690的博客-CSDN博客部分结合自身需要做出了修改1.搭建项目环境1.1新建项目打开IDEA→File→New→Project1.1新建项目打开IDEA→File→New→Project选择Maven... 查看详情