SpringBoot整合Mybatis

springBoot作为现在的主流框架之一,将很多框架进行了融合,本编笔记记录的是mybatis的融合,SpringBoot+MyBatis融合有两种方式——原生xml方式和注解方式,,下面通过案例将两种方式都了解一下 。 。ps:我用的eclipse

创建好项目,首先导入jar包

<!-- springBoot父依赖 -->
  <parent>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-parent</artifactId>
      <version>2.2.5.RELEASE</version>
      <relativePath/> <!-- lookup parent from repository -->
  </parent>
  
  <dependencies>
    <!-- 阿里数据连接池 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.1.10</version>
    </dependency>
    
    <!-- jsp的支持依赖 -->
    <dependency>
       <groupId>org.apache.tomcat.embed</groupId>
       <artifactId>tomcat-embed-jasper</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
    </dependency>
    
    <!-- mybaits依赖 -->
    <dependency>
		<groupId>org.mybatis.spring.boot</groupId>
		<artifactId>mybatis-spring-boot-starter</artifactId>
		<version>2.1.1</version>
	</dependency>
    
    <dependency>
		<!-- this is needed or IntelliJ gives junit.jar or junit-platform-launcher:1.3.2 not found errors -->
		<groupId>org.junit.platform</groupId>
		<artifactId>junit-platform-launcher</artifactId>
		<scope>test</scope>
	</dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
        <version>5.1.6</version>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
  </dependencies>

application.properties配置文件,下面过滤器是用来做log日志监控的(可以忽视)。配置文件也可以用.yml文件配置,不过我操作的时候出了一点问题,就是.yml文件里面不能写注释,所以就用的.properties文件,如果有大佬知道我的问题,请帮我解决一下。。感谢

#连接池
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/spring_aop?useUnicode=true&characterEncoding=utf8
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#修改连接池类型
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
#过滤器
spring.datasource.druid.filters=stat,wall

#允许重写数据库连接池
spring.main.allow-bean-definition-overriding:true

#springmvc
spring.mvc.view.prefix=/
spring.mvc.view.suffix=.jsp

#配置mybatis
#扫描对象类 定义别名
mybatis.type-aliases-package=com.vp.springBoot_mybatis.domain
#xml实现,,载入接口的映射文件
#mybatis.mapper-locations=classpath:com/vp/springBoot_mybatis/config/*.xml

#控制台显示sql
logging.level.com.vp.springBoot_mybatis.mapper=debug

——xml的方式,不用再mapper注解类中写注解,通过映射类映射:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.vp.springBoot_mybatis.mapper.BankMapper">
	
	<insert id="saveBank" parameterType="Bank">
		insert into bank
		<trim prefix="(" suffix=")" suffixOverrides=",">
			<if test="#{bid!=0}">bid,</if>
			<if test="#{bname!=null}">bname,</if>
			<if test="#{money!=0}">money</if>
		</trim>
		values
		<trim prefix="(" suffix=")" suffixOverrides=",">
			<if test="#{bid!=0}">#{bid},</if>
			<if test="#{bname!=null}">#{bname},</if>
			<if test="#{money!=0}">#{money}</if>
		</trim>
	</insert>
	
</mapper>

——注解方式,直接在mapper接口类中写入注解实现:

@Mapper	//去掉BankMapper.xml配置文件,用注解来实现
public interface BankMapper {

	@Insert("insert into bank(bid,bname,money) values(#{bid},#{bname},#{money})")
	public void saveBank(Bank bank);
	
	@Delete("delete from bank where bid=#{bid}")
	int deleteBank(int bid);
	
	@Update("update bank set bname=#{bname},money=#{money} where bid=#{bid}")
	int updateBank(Bank bank);
	
	//根据bid查询
	@Results({
		@Result(property="bid",column="bid"),
		@Result(property="bname",column="bname"),
		@Result(property="money",column="money")
	})
	@Select("select * from bank where bid=#{bid}")
	Bank findById(int bid);
	
	//根据bname模糊查询
	@Select("select * from bank where bname like concat('%',#{bname},'%')")
//	@Select("select * from bank where bname like '%${bname}%'")
	List<Bank> findByName(String bname);
	
	//查询所有
	@Select("select * from bank")
	List<Bank> findAll();
}

下面用测试类来测试一下方法:

@SpringBootTest
public class ApplicationTest {

	@Autowired
	private BankService bankService;
	
	@Test
	public void testSave() {
		Bank bank = new Bank();
		bank.setBid(107);
		bank.setBname("小七");
		bank.setMoney(777);
		bankService.saveBank(bank);
	}
	
	@Test
	void testDelete() {
		bankService.deleteBank(0);
	}
	
	@Test
	void testUpdate() {
		Bank bank = new Bank();
		bank.setBid(107);
		bank.setBname("小七");
		bank.setMoney(7777);
		bankService.updateBank(bank);
	}
	
	@Test
	void testFindById() {
		System.out.println(bankService.findById(107));
	}
	
	@Test
	void testFindByName() {
		List<Bank> banks = bankService.findByName("三");
		for (Bank bank : banks) {
			System.out.println(bank);
		}
	}
	
	@Test
	void testFindAll() {
		List<Bank> banks = bankService.findAll();
		for (Bank bank : banks) {
			System.out.println(bank);
		}
	}
}

案例只是做了简单的方法然后测试,没有做页面,所以控制层就随便写点儿:

@Controller
@RequestMapping("/")
public class BankController {
	@Autowired
	private BankService bankService;
	
	@RequestMapping("saveBank")
	public String saveBank(Bank bank) {
		bankService.saveBank(bank);
		return "index";
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值