Spring Boot mybatis-starter介紹


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注解

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM