SpringBoot学习:整合myBaits
Posted ifenglin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot学习:整合myBaits相关的知识,希望对你有一定的参考价值。
##本章节包含springboot项目创建,mybatis自动生成代码及配置项,以及两者整合。
##开发环境:IDEA2018.2.6 ,JDK1.8 ,mysql5.7 (window10)
第一步:新建数据库及数据表
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT ‘用户id‘,
`username` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘用户名‘,
`password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ‘密码‘,
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;INSERT INTO `users` VALUES (1, ‘admin‘, ‘admin‘);
INSERT INTO `users` VALUES (2, ‘root‘, ‘root‘);
第二步:创建springboot工程,话不多说,有图有真相:
第三步:根据数据库表使用mybatis-generator反向生成代码
(参考:https://blog.csdn.net/qq_40307945/article/details/81351302):
3.1 引入依赖(注意:引入位置是在plugins标签下)
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.7</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
</plugin>
3.2 修改自动生成代码的配置文件,文件路径:main/resource/generatorConfig.xml、db.properties
<?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>
<!--导入属性配置-->
<properties resource="db.properties"></properties>
<!-- 指定数据库驱动的jdbc驱动jar包的位置 -->
<classPathEntry location="${db.driverLocation}" />
<!-- context 是逆向工程的主要配置信息 -->
<!-- id:起个名字 -->
<!-- targetRuntime:设置生成的文件适用于那个 mybatis 版本 -->
<context id="default" targetRuntime="MyBatis3">
<!--optional,旨在创建class时,对注释进行控制-->
<commentGenerator>
<property name="suppressDate" value="true" />
<!-- 是否去除自动生成的注释 true:是 : false:否 -->
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--jdbc的数据库连接-->
<jdbcConnection driverClass="${db.driverClassName}"
connectionURL="${db.url}"
userId="${db.username}"
password="${db.password}">
</jdbcConnection>
<!--非必须,类型处理器,在数据库类型和java类型之间的转换控制-->
<javaTypeResolver>
<!-- 默认情况下数据库中的 decimal,bigInt 在 Java 对应是 sql 下的 BigDecimal 类 -->
<!-- 不是 double 和 long 类型 -->
<!-- 使用常用的基本类型代替 sql 包下的引用类型 -->
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- targetPackage:生成的实体类所在的包 -->
<!-- targetProject:生成的实体类所在的硬盘位置 -->
<javaModelGenerator targetPackage="com.ifenglin.learn.entity"
targetProject=".srcmainjava">
<!-- 是否允许子包 -->
<property name="enableSubPackages" value="false" />
<!-- 是否对modal添加构造函数 -->
<property name="constructorBased" value="true" />
<!-- 是否清理从数据库中查询出的字符串左右两边的空白字符 -->
<property name="trimStrings" value="true" />
<!-- 建立model对象是否不可改变 即生成的model对象不会有setter方法,只有构造方法 -->
<property name="immutable" value="false" />
</javaModelGenerator>
<!-- targetPackage 和 targetProject:生成的 mapper 文件的包和位置 -->
<sqlMapGenerator targetPackage="mapper" targetProject="./src/main/resources">
<!-- 针对数据库的一个配置,是否把 schema 作为字包名 -->
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- targetPackage 和 targetProject:生成的 interface 文件的包和位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.ifenglin.learn.dao" targetProject=".srcmainjava">
<!-- 针对 oracle 数据库的一个配置,是否把 schema 作为字包名 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<table tableName="users" domainObjectName="User"
enableCountByExample="false"
enableUpdateByExample="false"
enableDeleteByExample="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
</table>
</context>
</generatorConfiguration>
db.driverLocation=D:\\java\\apache-maven-3.5.4\\repo\\mysql\\mysql-connector-java\\8.0.13\\mysql-connector-java-8.0.13.jar
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306/learn?characterEncoding=utf-8
db.username=root
db.password=123456
3.3 代码生成
Run-> EditConfigurations: 左上角+,添加maven项目,按下图填入内容,运行generatorCode,生成daoUserMapper.java 、 entityUser.java以及 resourcesmapperUserMapper.xml,这里就不贴代码了。
注意:在UserMapper.java类名上添加@Mapper注解
package com.ifenglin.learn.dao;
import com.ifenglin.learn.entity.User;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
int deleteByPrimaryKey(Integer userId);
int insert(User record);
int insertSelective(User record);
User selectByPrimaryKey(Integer userId);
int updateByPrimaryKeySelective(User record);
int updateByPrimaryKey(User record);
List<User> selectAll();
}
第四步:创建controller service
package com.ifenglin.learn.controller;
import com.ifenglin.learn.entity.User;
import com.ifenglin.learn.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/getALlUsers")
public List<User> getALlUsers(){
return userService.getAllUsers();
}
}
package com.ifenglin.learn.service;
import com.ifenglin.learn.entity.User;
import java.util.List;
public interface UserService {
User getUserById(Integer userId);
List<User> getAllUsers();
int updateUser(User user);
int addUser(User user);
int deleteUserById(Integer userId);
}
package com.ifenglin.learn.service.impl;
import com.ifenglin.learn.dao.UserMapper;
import com.ifenglin.learn.entity.User;
import com.ifenglin.learn.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserMapper userMapper;
@Override
public User getUserById(Integer userId) {
return userMapper.selectByPrimaryKey(userId);
}
@Override
public List<User> getAllUsers() {
return userMapper.selectAll();
}
@Override
public int updateUser(User user) {
return userMapper.updateByPrimaryKey(user);
}
@Override
public int addUser(User user) {
return userMapper.insert(user);
}
@Override
public int deleteUserById(Integer userId) {
return userMapper.deleteByPrimaryKey(userId);
}
}
第五步:修改application.yml
server:
port: 8080
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/learn?characterEncoding=utf-8&serverTimezone=UTC##此处须注意,本项目未采用连接池,不需用data-user-name、data-password、driver-class-nameuserName: root
password: 123456##com.mysql.cj.jdbc.Driver为新版mysql-connector-java驱动类
driverClassName: com.mysql.cj.jdbc.Driver
mybatis:
typeAliasesPackage: com.ifenglin.learn.entity
mapperLocations: classpath:mapper/*Mapper.xml
整体代码结构:
至此,代码完成,运行并在浏览器中输入:http://127.0.0.1:8080/user/getAllUsers 。效果如图:
以上是关于SpringBoot学习:整合myBaits的主要内容,如果未能解决你的问题,请参考以下文章
springboot整合mybaits plus 实现分页操作