第二十章、SpringBoot2.x整合Mybatis3.x注解配置(SpringBoot2.x)

SpringBoot2.x整合Mybatis3.x注解配置

        1、使用starter, maven仓库地址:http://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter

        2、加入依赖(可以用 http://start.spring.io/ 下载)

<!-- 添加mybatis依赖 -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.1.1</version>
	<scope>runtime</scope>
</dependency>

<!-- MySQL的JDBC驱动包 -->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
        <version>5.1.37</version>
	<scope>runtime</scope>
</dependency>

<!-- 引入第三方数据源  阿里巴巴的连接池 -->
<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>druid</artifactId>
	<version>1.1.6</version>
</dependency>

       注意:SpringBoot2.2.1默认数据库驱动版本8.0.18(Overriding managed version 8.0.18 for mysql-connector-java),但是由于我安装的数据库mysql是5.0版本,若使用高版本的驱动会报错,故需要在依赖中指定驱动版本

 3、加入配置文件

#可以自动识别
spring.datasource.driver-class-name =com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/movie?useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123456
#如果不使用默认的数据源 (com.zaxxer.hikari.HikariDataSource)
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

        加载配置,注入到sqlSessionFactory等都是springBoot帮我们完成

        4、启动类增加mapper扫描

@MapperScan("net.xdclass.base_project.mapper")

             技巧:保存对象,获取数据库自增id 
             注意:keyProperty表示java对象属性     keyColumn表示数据库的字段

@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")

        5、开发mapper
            参考语法 http://www.mybatis.org/mybatis-3/zh/java-api.html

        6、sql脚本

CREATE TABLE `user` (
              `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
              `name` varchar(128) DEFAULT NULL COMMENT '名称',
              `phone` varchar(16) DEFAULT NULL COMMENT '用户手机号',
              `create_time` datetime DEFAULT NULL COMMENT '创建时间',
              `age` int(4) DEFAULT NULL COMMENT '年龄',
              PRIMARY KEY (`id`)
            ) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

相关资料:
        http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/#Configuration

        https://github.com/mybatis/spring-boot-starter/tree/master/mybatis-spring-boot-samples

        整合问题集合:
            https://my.oschina.net/hxflar1314520/blog/1800035
            https://blog.csdn.net/tingxuetage/article/details/80179772

-----------------------------------------------------------------------------------------------------

测试代码:

启动类:

package net.xdclass.base_project;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("net.xdclass.base_project.mapper")
public class XdclassApplication {
	
	public static void main(String[] args) {
		SpringApplication.run(XdclassApplication.class, args);
	}
	
}

maven依赖和application.properties配置文件上面已经添加了,这里就不写出来了

控制器:

package net.xdclass.base_project.controller;

import java.util.Date;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import net.xdclass.base_project.domain.JsonData;
import net.xdclass.base_project.domain.User;
import net.xdclass.base_project.service.UserService;

@RestController
@RequestMapping("/api/v1/user")
public class UserController {
	
	@Autowired
	private UserService userService;
	
	/**
	 * 功能描述:user保存接口
	 * @return
	 */
	@GetMapping("/add")
	public Object add(){
		User user = new User();
		user.setAge(11);
		user.setCreateTime(new Date());
		user.setName("xdclass");
		user.setPhone("10010000");
		int id = userService.add(user);
		return JsonData.buildSuccess(id);
	}
}

业务层接口和实现类:

package net.xdclass.base_project.service;

import net.xdclass.base_project.domain.User;

public interface UserService {
	
	public int add(User user);
}
package net.xdclass.base_project.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import net.xdclass.base_project.domain.User;
import net.xdclass.base_project.mapper.UserMapper;
import net.xdclass.base_project.service.UserService;

@Service
public class UserServiceImpl implements UserService{

	@Autowired
	private UserMapper userMapper;
	
	@Override
	public int add(User user) {
		userMapper.insert(user);
		int id = user.getId();
		return id;
	}

}

Mapper类:

package net.xdclass.base_project.mapper;

import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Options;

import net.xdclass.base_project.domain.User;

/**
 * 功能描述:访问数据库的接口
 * @author wq
 *
 */
public interface UserMapper {
	
	//推荐使用#{}取值,不要用${},因为存在注入的风险
	@Insert("INSERT INTO user(name,phone,create_time,age) VALUES(#{name},#{phone},#{createTime},#{age})")
	@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")//keyProperty表示java对象属性     keyColumn表示数据库的字段
	//添加成功后会将主键映射到实体类中,可以在实体类中拿到生成的主键
	public int insert(User user);
}

实体类部分属性:其中主键自增

public class User {
	
	private int id;
	
	private String name;
	
	private String phone;

	private int age;
	
	private Date createTime;

数据库:

访问测试:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荒--

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值