work hard work smart

专注于Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Spring Boot mybatis-starter介绍

Posted on 2020-03-08 21:45  work hard work smart  阅读(3727)  评论(0编辑  收藏  举报

1、mybatis-starter作用

自动检测工程中的DataSource

创建并注册SqlSessionFactory实例

创建并注册SqlSessionTemplate实例

自动扫描mappers

 

2、mybatis-starter使用

1) 引入mybatis-spring-boot-starter

		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.1.1</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.48</version>
		</dependency>

  

2)application.properties 文件中增加数据库配置

spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

  

3)在pom.xml增加生成数据库xml插件。依赖于mysql-connector-java这个jar包

<build>
		<plugins>
			<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.2</version>
				<dependencies>
					<dependency>
						<groupId>mysql</groupId>
						<artifactId>mysql-connector-java</artifactId>
						<version>5.1.48</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
	</build>

  

4) 在resources文件夹下增加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/test?characterEncoding=utf8" userId="root"
                        password="123456">
        </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.example.demo.bean"
                            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">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </sqlMapGenerator>
        <!-- targetPackage:mapper接口生成的位置 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.example.demo.mapper"
                             targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false"/>
        </javaClientGenerator>
        <!-- 指定数据库表 -->
        <table schema=""  tableName="test"></table>

    </context>
</generatorConfiguration>

 

5) 配置mapperScan

@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class Sb2Application { 
}

  

6) 在application.properties中增加配置

mybatis.mapper-locations=classpath:mapper/*.xml

  

7)、mybatis.configuration.map-underscore-to-camel-case=true 将下划线转换成驼峰命名

mybatis.type-aliases-package=com.example.demo.bean
mybatis.configuration.map-underscore-to-camel-case=true

  

 8) 增加测试类

@RunWith(SpringRunner.class)
@SpringBootTest(classes = Sb2Application.class)
public class DemoApplicationTest  {

    @Autowired
    private TestMapper testMapper;


    @Test
    public void testInsert(){
        com.example.demo.bean.Test test = new com.example.demo.bean.Test();
        test.setId(100);
        test.setName("Nick Wang");
        testMapper.insert(test);
    }



}

  

9)运行测试类。结果为成功

 

 表里已经增加了一条数据

 

10) 条件更新。

将名字为Nick Wang改成Larry

    @Test
    public void testWhereUpdate(){
        com.example.demo.bean.Test test = new com.example.demo.bean.Test();
        test.setName("Larry");
        TestExample testExample = new TestExample();
        testExample.createCriteria().andNameEqualTo("Nick Wang");
        testMapper.updateByExampleSelective(test, testExample);
    } 

如下图更新后的结果

 

3、补充

我们除了用MapperScan进行扫描外,还有一张方式

 

 就是TestMapper添加Mapper注解