SpringBoot整合Mybatis(搭建项目环境、配置generator 插件、配置资源拷贝插件、MyBatis 的其他配置项、CRUD案例)

SpringBoot整合Mybatis

本例是基于generator插件生成的pojo类和mapper文件编写的。

1.搭建项目环境

[1]创建项目

在这里插入图片描述
在这里插入图片描述

[2]pom文件
<?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.qt</groupId>
    <artifactId>springbootmybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springbootmybatis</name>
    <description>Demo project for Spring Boot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.2</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>

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

</project>

[3]配置数据源

本次配置文件选用yml格式的配置文件
把application.properties文件改成application.yml文件

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: 1111

2.配置 Maven 的 generator 插件

[1]添加 generator 插件坐标
	 <!--配置generator插件-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.5</version>
                <dependencies>
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>5.1.38</version>
                    </dependency>
                </dependencies>
                <!--指定配置文件的路径-->
                <configuration>
                    <configurationFile>${project.basedir}/src/main/resources/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
[2]添加 generator 配置文件

在这里插入图片描述
generatorConfig.xml文件内容

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
  PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
	<context id="testTables" targetRuntime="MyBatis3">
		<commentGenerator>
			<!-- 是否去除自动生成的注释 true:是 : false:-->
			<property name="suppressAllComments" value="true" />
		</commentGenerator>
		<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/springboot" userId="root" password="1111">
		</jdbcConnection>
		<!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和 
			NUMERIC 类型解析为java.math.BigDecimal -->
		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- targetProject:生成PO类的位置 -->
		<javaModelGenerator targetPackage="com.qt.springbootmybatis.pojo"
			targetProject=".\src\main\java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
			<!-- 从数据库返回的值被清理前后的空格 -->
			<property name="trimStrings" value="true" />
		</javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
		<sqlMapGenerator targetPackage="com.qt.springbootmybatis.mapper"
			targetProject=".\src\main\java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</sqlMapGenerator>
		<!-- targetPackage:mapper接口生成的位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.qt.springbootmybatis.mapper"
			targetProject=".\src\main\java">
			<!-- enableSubPackages:是否让schema作为包的后缀 -->
			<property name="enableSubPackages" value="false" />
		</javaClientGenerator>
		<!-- 指定数据库表 -->
		<table schema="" tableName="users"></table>
	</context>
</generatorConfiguration>

[3]运行 generator 插件生成代码

在这里插入图片描述
在这里插入图片描述

3.配置资源拷贝插件

[1]添加资源拷贝插件坐标
<!--配置资源拷贝插件-->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>

            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.yml</include>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
[2]springboot关联mapper

方式一:修改启动类添加@MapperScan 注解
修改启动类,添加@MapperScan注解

@SpringBootApplication
@MapperScan("com.qt.springbootmybatis.mapper")//指定扫描接口与映射配置文件的包名
public class SpringbootmybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootmybatisApplication.class, args);
    }

}

方式二:在每个mapper接口文件上添加注解

@Mapper
@Repository
public interface UsersMapper {
...
}

4.MyBatis 的其他配置项

在application.yml中配置mybatis相关配置

mybatis:
  #扫描 classpath 中 mapper 目录下的映射配置文件,针对于映射配置文件放到了 resources 目录下
  mapper-locations: classpath:/mapper/*.xml
  #定义包别名,使用 pojo 时可以直接使用 pojo 的类型名称不用加包名
  type-aliases-package: com.qt.springbootmybatis.pojo

5.添加用户功能

[1]创建前端页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:th="http://www.thymeleaf.org">
<head >
    <title>Title</title>
    <link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>
</head>
<body>
<form th:action="@{/user/addUser}" method="post">
    <p>
        用户名:<input type="text" name="username">
    </p>
    <p>
        性别:<input type="text" name="usersex">
    </p>
    <p>
        <input type="submit" value="提交">
    </p>
</form>
</body>
</html>
[2]创建Controller

1.创建PageController

/**
 * 页面跳转Controller
 */
@Controller
public class PageController {
    /**
     * 页面跳转方法
     * @param path
     * @return
     */
    @RequestMapping("/{path}")
    public String getPath(@PathVariable String path){
        return path;
    }
}

2.创建UserController

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @PostMapping("addUser")
    public String addUser(Users users){
        try {
            this.userService.addUser(users);
        }catch (Exception e){
            e.printStackTrace();
            return "error";
        }
        return "redirect:/success";
    }
 }
[3]创建Service

UserServiceImpl

/**
 * 用户管理业务层
 */
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UsersMapper usersMapper;

    /**
     * 添加用户
     * @param users
     */
    @Override
    @Transactional
    public void addUser(Users users) {
        this.usersMapper.insert(users);
    }
}

6.查询用户

[1]修改Service层
	/**
     * 查询所有用户
     * @return
     */
    @Override
    public List<Users> findUsers() {
        UsersExample example=new UsersExample();
        return this.usersMapper.selectByExample(example);
    }
[2]修改Controller层

UserController

 @GetMapping("findUsers")
    public String findUsers(Model model){
        try {
            List<Users> users = this.userService.findUsers();
            model.addAttribute("list",users);
        }catch (Exception e){
            e.printStackTrace();
            return "error";
        }
        return "showUsers";
    }
[3]创建前端页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Title</title>
    <link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>
</head>
<body>
<table border="1px" align="center">
    <tr>
        <th>用户id</th>
        <th>用户姓名</th>
        <th>用户性别</th>
        <th>操作</th>
    </tr>
    <tr th:each="u:${list}">
        <td th:text="${u.userid}"></td>
        <td th:text="${u.username}"></td>
        <td th:text="${u.usersex}"></td>
        <td>
            <a th:href="@{/user/preUpdateUser(userid=${u.userid})}">修改</a>
            <a th:href="@{/user/delUser(userid=${u.userid})}">删除</a>
        </td>
    </tr>
</table>
</body>
</html>

7.查询单个用户(实现预更新)

[1]修改Service层
/**
     * 根据id查询单个用户
     * @param userid
     * @return
     */
    @Override
    public Users findUserById(Integer userid) {
        return this.usersMapper.selectByPrimaryKey(userid);
    }
[2]修改Controller层
 @GetMapping("preUpdateUser")
    public String preUpdateUser(Integer userid,Model model){
        try {
            Users user = this.userService.findUserById(userid);
            model.addAttribute("user",user);
        }catch (Exception e){
            e.printStackTrace();
            return "error";
        }
        return "updateUser";
    }
[3]创建前端页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Title</title>
    <link rel="shortcut icon" href="../resources/favicon.ico" th:href="@{/static/favicon.ico}"/>
</head>
<body>
<form th:action="@{/user/updateUser}" method="post">
    <input type="hidden" name="userid" th:value="${user.userid}">
    <p>
        用户名:<input name="username" type="text" th:value="${user.username}">
    </p>
    <p>
        用户性别:<input name="usersex" type="text" th:value="${user.usersex}">
    </p>
    <p>
        <input type="submit" value="提交">
    </p>
</form>
</body>
</html>

8.更新用户

[1]修改service层
	/**
     * 更新用户
     * @param users
     */
    @Override
    @Transactional
    public void updateUser(Users users) {
        this.usersMapper.updateByPrimaryKey(users);
    }
[2]修改Controller层
 @PostMapping("updateUser")
    public String updateUser(Users users){
        try {
            this.userService.updateUser(users);
        }catch (Exception e){
            e.printStackTrace();
            return "error";
        }
        return "success";
    }

9.删除功能

[1]修改Service层
	/**
     * 删除用户
     * @param userid
     */
    @Override
    @Transactional
    public void dropUser(Integer userid) {
        this.usersMapper.deleteByPrimaryKey(userid);
    }
[2]修改Controller层
@GetMapping("delUser")
    public String delUser(Integer userid){
        try {
            this.userService.dropUser(userid);
        }catch (Exception e){
            e.printStackTrace();
            return "error";
        }
        return "success";
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值