happyCode(4) 集成MyBatis -注解玩法 动态SQL

1.添加依赖

pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.oo.auth</groupId>
  <artifactId>happyCode</artifactId>
  <version>0.0.1-SNAPSHOT</version><!-- SNAPSHOT:快照版本,仍处开发中的版本(不稳定),RELEASE:正式版本,对外发布的稳定版本 -->
  <packaging>war</packaging><!-- jar:普通项目,pom:父级项目,war:服务项目 -->
  <!-- 继承spring-boot-starter-parent --> 
  <parent>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-parent</artifactId>
	<version>2.0.0.RELEASE</version>
  </parent>
  <!-- 添加Maven依赖 -->
  <dependencies>
    <!-- SpringBoot MyBatis依赖 -->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.0.0</version>
    </dependency>
    <!-- 
    <dependency>
    	<groupId>tk.mybatis</groupId>
		<artifactId>mapper-spring-boot-starter</artifactId>
		<version>2.0.2</version>
	</dependency>
	-->
    <!-- jdbcTemplate工具 -->
  	<dependency>
	  <groupId>org.springframework.boot</groupId>
	  <artifactId>spring-boot-starter-jdbc</artifactId>
	</dependency>
    <!-- MySQL驱动 -->
  	<dependency>
	  <groupId>mysql</groupId>
	  <artifactId>mysql-connector-java</artifactId>
	  <version>8.0.11</version><!--$NO-MVN-MAN-VER$-->
	</dependency>
    <dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-web</artifactId>
	    <!-- 移除嵌入式tomcat插件 -->
	    <!--
	    <exclusions>
	        <exclusion>
	            <groupId>org.springframework.boot</groupId>
	            <artifactId>spring-boot-starter-tomcat</artifactId>
	        </exclusion>
	    </exclusions>
	    -->
	</dependency>
    <!-- SpringBoot内嵌tomcat(spring-boot-starter-web已经默认添加了这个jar包的依赖) -->
    <!-- 
    <dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-tomcat</artifactId>
	</dependency>
	-->
	<dependency> 
		<groupId>org.springframework.boot</groupId> 
		<artifactId>spring-boot-starter-web</artifactId> 
	</dependency>
	<!--SpringBoot工具,改善开发时体验的模块:classpath里对文件任何操作都会触发应用程序重新启动 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional>
    </dependency>
    <!-- Freemarker模板引擎 SpringBoot整合依赖 -->
	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-freemarker</artifactId>
	</dependency>
  </dependencies>
  <build>
  	<plugins>
  		<!-- SpringBoot Maven插件,可以打包成可执行的jar或war -->
  		<plugin>
  			<groupId>org.springframework.boot</groupId> 
			<artifactId>spring-boot-maven-plugin</artifactId>
			<!-- maven install 没有指定<mainClass>或者继承了spring-boot-starter-parent并且<start-class>属性未配置时,会自动寻找签名是public static void main(String[] args)的方法... 所以插件懵逼了,两个妹子和谁在一起呢... -->
			<configuration>
        		<mainClass>com.oo.HappyCodeApplication</mainClass>
		    </configuration>
		    <!-- 所述spring-boot-starter-parentPOM包括<executions>配置以结合repackage目标。如果您不使用父POM,则需要自己声明此配置 -->
  			<executions>
		        <execution>
		            <goals>
		                <goal>repackage</goal>
		            </goals>
		        </execution>
		    </executions>
  		</plugin>
  	</plugins>
  </build>
</project>

2.添加配置

application.yml

server: 
  port: 80
  servlet:
    context-path: /happyCode
spring:
  http:
    encoding:
      force: true
      charset: UTF-8
  datasource:
      url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8&amp&useSSL=false
      username: root
      password: 123456
      driver-class-name: com.mysql.cj.jdbc.Driver
  freemarker:
    allow-request-override: false
            #缓存
    cache: false
    check-template-location: true
    charset: UTF-8
    content-type: text/html; charset=utf-8
    expose-request-attributes: false
    expose-session-attributes: false
    expose-spring-macro-helpers: false
            #后缀
    suffix: .ftl
            #模板加载位置
    template-loader-path: classpath:/templates
mybatis:
  #Mapper.xml文件位置
  mapper-locations: classpath:mapper/*.xml

3.编写Mapper

TestMapper.java

package com.oo.test.dao;

import java.util.List;

import org.apache.ibatis.annotations.Select;

import com.oo.test.entity.Test;

public interface TestMapper {
	@Select("select id,content,version from test")
	public List<Test> findAll();
    @Update("UPDATE test set id=#{id},content=#{content},version=#{version}")
	public Integer updateById(Test test);
	@Insert("INSERT INTO test(id,content,version) values(#{id},#{content},#{version})")
	public Integer inser(Test test);
	@Delete("DELETE FROM test WHERE id =#{id}")
	public Integer deleteById(Long id);
    @SelectProvider(type=TestSqlProvider.class,method="selectSearch")//动态SQL语句
	public Test selectSearch(Test test);
}

TestSqlProvider.java

package com.oo.test.dao;

import org.apache.ibatis.jdbc.SQL;

import com.oo.test.entity.Test;

public class TestSqlProvider {
	public String selectSearch(final Test test) {
		return new SQL(){{
           SELECT("id,content,version");
           FROM("test");
           if(test.getId()!=null) {
        	  WHERE("id = #{id}");
           }
           if(test.getContent() != null){
              WHERE("content like '%${name}%'");
           }
           if(test.getVersion() != null){
              WHERE("version = #{version}");
           }
       }}.toString();
	}
}	

4.还要使用MapperScan扫描 *Application.java

package com.oo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@ComponentScan("com")//注释扫描,默认扫描使用@ComponentScan所的类所在包下
@MapperScan(basePackages = {"com.oo.dao","com.oo.*.dao","com.oo.**.dao"})//扫描的是mapper.xml中namespace指向值的包位置
@EnableAutoConfiguration
public class HappyCodeApplication {
	public static void main(String[] args) {
		//启动服务项目,默认端口8080
		SpringApplication.run(HappyCodeApplication.class, args);
	}
	
	/*
	@Bean
    public TomcatServletWebServerFactory servletContainer(){
       TomcatServletWebServerFactory tomcatServletWebServerFactory = new TomcatServletWebServerFactory();
       tomcatServletWebServerFactory.setPort(80);//修改默认启动端口,可以在application.yml中配置
       return tomcatServletWebServerFactory;
    }
    */
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值