##本章节包含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=".\src\main\java"> <!-- 是否允许子包 --> <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=".\src\main\java"> <!-- 针对 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.jardb.driverClassName=com.mysql.jdbc.Driverdb.url=jdbc:mysql://127.0.0.1:3306/learn?characterEncoding=utf-8db.username=rootdb.password=123456
3.3 代码生成
Run-> EditConfigurations: 左上角+,添加maven项目,按下图填入内容,运行generatorCode,生成dao\UserMapper.java 、 entity\User.java以及 resources\mapper\UserMapper.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; @Mapperpublic 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; @Servicepublic 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 。效果如图:
原文地址:https://www.cnblogs.com/ifenglin/p/10061813.html