技术博客那么多,为何本身整理呢?太过零散的知识点不易记忆,且查找的时候也不是太方便,眼过千遍不如手过一遍的操做一遍,即便Springboot已经很好的整合了各项的技术框架,但实际操做的时候也会发现一些问题。我会将可能出现的问题记录一下,博文时刻更新。html
预备知识: Springboot 2.0.6 Mybatis 3.4.6 Maven 3.5.3 Lomlok 1.16.18(能够参考:lombok 简化 Java 代码) Mysql 5.1.47java
代码地址: 博文只是列举核心操做步骤,须要本身实际操做。 https://github.com/Tojian/spring-treasure-box/tree/master/tao-springboot-mybatismysql
这里用到spring-boot-starter基础和spring-boot-starter-test用来作单元测试验证数据访问 引入链接mysql的必要依赖mysql-connector-java 引入整合MyBatis的核心依赖mybatis-spring-boot-starter 这里不引入spring-boot-starter-jdbc依赖,是因为mybatis-spring-boot-starter中已经包含了此依赖git
<dependency> <!--去掉也能够--> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</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>1.3.2</version> </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>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <scope>provided</scope> </dependency>
<plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> <configuration> <!--插件的位置文件--> <configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile> <overwrite>true</overwrite> <verbose>true</verbose> </configuration> </plugin>
<?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> <!-- 数据库驱动:选择你的本地硬盘上面的数据库驱动包--> <classPathEntry location="/Users/taojian/mvnjar/mysql/mysql-connector-java/5.1.29/mysql-connector-java-5.1.29.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3"> <commentGenerator> <property name="suppressDate" value="true"/> <!-- 是否去除自动生成的注释 true:是 : false:否 --> <property name="suppressAllComments" value="true"/> </commentGenerator> <!--数据库连接URL,用户名、密码 --> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1/mytest" userId="root" password="root"> </jdbcConnection> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成模型的包名和位置--> <javaModelGenerator targetPackage="com.taojian.mybatis.bean" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!-- 生成映射文件的包名和位置--> <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!-- 生成DAO的包名和位置--> <javaClientGenerator type="XMLMAPPER" targetPackage="com.taojian.mybatis.mapper" targetProject="src/main/java"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 要生成的表 tableName是数据库中的表名或视图名 domainObjectName是实体类名--> <table tableName="t_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table> </context> </generatorConfiguration>
核心命令 :mybatis-generator:generate -egithub
如图所示,红色方框便是生成后的代码,里面覆盖了常见的增删改查,避免重复的CRUD操做。web
@repository是用来注解接口,以下图:这个注解是将接口UserMapper的一个实现类交给spring管理(在spring中有开启对@repository注解的扫描),当哪些地方须要用到这个实现类做为依赖时,就能够注入了.在mybatis注册到spring的时候,已经UserMapper变成了一个bean,因此不须要用@Repository也是能够的,可是为了规范仍是加上@Repository。spring
@Repository 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); }
配置文件请参考:http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/sql
## Mybatis 配置 mybatis.typeAliasesPackage=com.taojian.mybatis.bean mybatis.mapperLocations=classpath:mapping/*.xml spring.datasource.url=jdbc:mysql://localhost:3306/mytest?useUnicode=true&characterEncoding=utf8 spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.jdbc.Driver
建立项目的TaoSpringbootMybatisApplication类数据库
@SpringBootApplication @MapperScan("com.taojian.mybatis.mapper") public class TaoSpringbootMybatisApplication { public static void main(String[] args) { SpringApplication.run(TaoSpringbootMybatisApplication.class, args); } }
springboot会自动加载spring.datasource.*相关配置,数据源就会自动注入到sqlSessionFactory中,sqlSessionFactory会自动注入到Mapper中 在启动类中添加对mapper包扫描@MapperScan,这个注解很是的关键,这个对应了项目中mapper(dao)所对应的包路径,容易出错。springboot
原文出处:https://www.cnblogs.com/tojian/p/10213840.html