SpringBoot - 09整合MyBatis
(1)搭建项目环境
(1.1)修改POM文件,引入GAV坐标
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> // 数据库驱动 <version>5.1.43</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> // Druid数据源 <version>1.1.19</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency>
(1.2)配置文件
spring: datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/dev?useUnicode=true&characterEncoding=UTF-8&useSSL=false username: root password: **** type: com.alibaba.druid.pool.DruidDataSource
(2)配置Maven的generator插件
(2.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.43</version> </dependency> </dependencies> <!--指定配置文件的路径--> <configuration> <configurationFile>${project.basedir}/src/main/resources/generatorConfig.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin>
(2.2)添加generator配置文件
<?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="MySQLTables" targetRuntime="MyBatis3"> <commentGenerator> <!-- 是否去除自动生成的注释 true: 是 false: 否--> <property name="suppressAllComments" value="true"/> </commentGenerator> <!-- 数据库的连接信息--> <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/dev?useSSL=false" userId="root" password="Mysql2020"> </jdbcConnection> <!-- 默认为false, 把JDBC DECIMAL 和 NUMERIC类型解析为Integer, 为true, 把NUMERIC类型解析为java.math.BigDecimal--> <javaTypeResolver > <property name="forceBigDecimals" value="false" /> </javaTypeResolver> <!-- targetProject: 生成POJO类的位置--> <javaModelGenerator targetPackage="com.bearpx.mybatis.entity" targetProject=".\src\main\java"> <!-- enableSubPackages: 是否让schema作为包的后缀--> <property name="enableSubPackages" value="false" /> <!-- 从数据库返回的值被清理前后的空格--> <property name="trimStrings" value="true" /> </javaModelGenerator> <!-- targetProject: mapper映射文件生成的位置 --> <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources"> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- targetPackage: mapper接口生成的位置 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.bearpx.mybatis.dao" targetProject=".\src\main\java"> <property name="enableSubPackages" value="false" /> </javaClientGenerator> <!-- 指定数据库表 --> <table schema="" tableName="users"></table> </context> </generatorConfiguration>
(2.3)添加generator配置文件的DTD文件
(2.4)运行generator插件生成代码
配置资源拷贝插件
<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>**/*.html</include> </includes> </resource> </resources> </build>
生成代码
(3)测试用户模块
(3.1)添加MapperScan扫描接口
@SpringBootApplication @MapperScan("com.bearpx.mybatis.dao") // 指定扫描接口与映射配置文件的包名 public class SpringBoot09MybaitsApplication {
(3.2)配置文件
mybatis:
mapper-locations: classpath:/mapper/*.xml // 扫描classpath中mapper目录下的映射配置文件,针对于映射配置文件放到了resources目录下
type-aliases-package: com.bearpx.mybatis.entity // 定义包别名,使用pojo时可以直接使用pojo的类型不用加包名
(3.3)编写UserService实现类
@Component public class UserServiceImpl implements UserService { @Autowired private UsersMapper usersMapper; @Override public void addUsers(Users users) { this.usersMapper.insert(users); } @Override public List<Users> selectUsersAll(){ UsersExample usersExample = new UsersExample(); return this.usersMapper.selectByExample(usersExample); } @Override public Users findUserById(Integer id){ return this.usersMapper.selectByPrimaryKey(id); } @Override public void modifyUser(Users users) { this.usersMapper.updateByPrimaryKey(users); } public void dropUser(Integer id){ this.usersMapper.deleteByPrimaryKey(id); } }
(3.4)其他代码与整合JDBC一致