SpringBoot(二)SpringBoot集成Mybatis

    技术2024-06-20  87

      SpringBoot(一)最简SpringBoot项目

      本文介绍SpringBoot集成Mybatis。   MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。   由于Mybatis的介绍已经很多介绍,本文就不深入介绍了,直接上代码。 Mybatis 和 Druid 依赖

    <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.11</version> </dependency>

    DemoMyBatisApplication @MapperScan(“com.example.demo.mapper”) 需要配置扫描mapper文件夹,或者在配置文件中配置

    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.demo.mapper") public class DemoMyBatisApplication { public static void main(String[] args) { SpringApplication.run(DemoMyBatisApplication.class, args); } }

    TestController

    package com.example.demo.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; /** * @ClassName TestController * @Description: TODO * @Date 2020/6/10 * @Version V1.0 **/ @Controller @RequestMapping("/test") public class TestController { @RequestMapping("hello") @ResponseBody public String getTest(){ return "Hello World ,This is Test"; } }

    UserController

    package com.example.demo.controller; import com.example.demo.module.User; import com.example.demo.service.UserService; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import javax.annotation.Resource; import java.util.List; /** * @ClassName UserController * @Description: TODO * @Date 2020/6/10 * @Version V1.0 **/ @RequestMapping("user") @Controller public class UserController { @Resource private UserService userService; @RequestMapping("getAllUser") @ResponseBody public List<User> getAllUser(){ return userService.getAllUser(); } }

    UserService

    package com.example.demo.service; import com.example.demo.module.User; import java.util.List; public interface UserService { List<User> getAllUser(); }

    UserServiceImpl

    package com.example.demo.service.impl; import com.example.demo.mapper.UserMapper; import com.example.demo.module.User; import com.example.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.List; /** * @ClassName UserServiceImpl * @Description: TODO * @Date 2020/6/10 * @Version V1.0 **/ @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List<User> getAllUser() { return userMapper.getAllUser(); } }

    UserMapper

    package com.example.demo.mapper; import com.example.demo.module.User; import java.util.List; /** * @ClassName UserMapper * @Description: TODO * @Date 2020/6/10 * @Version V1.0 **/ public interface UserMapper { List<User> getAllUser(); }

    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.example.demo.mapper.UserMapper"> <resultMap id="BaseResultMap" type="com.example.demo.module.User"> <id column="id" jdbcType="INTEGER" property="id" /> <result column="name" jdbcType="VARCHAR" property="name" /> <result column="age" jdbcType="INTEGER" property="age" /> </resultMap> <sql id="Base_Column_List"> id, name, age </sql> <select id="getAllUser" resultType="com.example.demo.module.User"> SELECT * FROM user </select> </mapper>

    配置文件 application.properties

    server.port=8888 # mysql spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull spring.datasource.username=test spring.datasource.password=test spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.datasource.type=com.alibaba.druid.pool.DruidDataSource mybatis.mapper-locations=classpath*:mapper/**/*.xml

    所有的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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.3.0.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.example</groupId> <artifactId>mybatis</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mybatis</name> <description>Demo project for Spring Boot MyBatis </description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <!-- commons start --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.7</version> </dependency> <!-- commons end --> <!-- mybatis start--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- mybatis-spring-boot-starter --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.1</version> </dependency> <!-- druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.11</version> </dependency> <!-- mybatis end--> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>

    sql 脚本

    /* Navicat Premium Data Transfer Source Server Type : MySQL Source Server Version : 50562 Target Server Type : MySQL Target Server Version : 50562 File Encoding : 65001 Date: 03/07/2020 20:34:52 */ SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `age` int(11) NULL DEFAULT NULL, `userId` int(11) NOT NULL, `createTime` datetime NULL DEFAULT NULL, `email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `expiredDate` date NULL DEFAULT NULL, `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, `salt` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `state` tinyint(4) NOT NULL, `tel` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, `userName` varchar(60) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact; -- ---------------------------- -- Records of user -- ---------------------------- INSERT INTO `user` VALUES (1, '小米', 10, 0, NULL, NULL, NULL, '', NULL, 0, NULL, ''); INSERT INTO `user` VALUES (2, '小明', 11, 0, NULL, NULL, NULL, '', NULL, 0, NULL, ''); INSERT INTO `user` VALUES (3, '小兔子', 9, 0, NULL, NULL, NULL, '', NULL, 0, NULL, ''); SET FOREIGN_KEY_CHECKS = 1;

    DemoMyBatisApplication 启动项目 浏览器输入:http://127.0.0.1:8888/user/getAllUser 返回参数如下:

    SpringBoot集成Mybatis项目就完成了。感谢点赞关注交流。

    Processed: 0.017, SQL: 9