Spring Boot 中使用 Mybatis

原创
2017/07/06 13:04
阅读数 471

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

通过观看https://my.oschina.net/sdlvzg/blog/1154281创建项目,再执行以下操作

在Mysql中创建表

CREATE TABLE `mybatis_demo` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=utf8

 

在pom.xml中引入依赖包

		<!-- mysql 数据库驱动. -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
		</dependency>

		<!-- spring-boot mybatis依赖-->
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>1.2.1</version>
		</dependency>

在application.properties引入数据库联接配置信息


########################################################
###datasource
########################################################
spring.datasource.url = jdbc:mysql://192.168.1.121:3306/lvgangdb
spring.datasource.username = aorakidb
spring.datasource.password = Yes@126.com
spring.datasource.driverClassName = com.mysql.jdbc.Driver
spring.datasource.max-active=20
spring.datasource.max-idle=8
spring.datasource.min-idle=8
spring.datasource.initial-size=10

 

编写代码

编写Bean

package org.lvgang.bean;

/**
 * Mybatis 测试实体类
 * @author Administrator
 *
 */
public class Demo {
	private long id;
	private String name;

	public long getId() {
	       return id;
	    }

	public void setId(long id) {
	       this.id = id;
	    }

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

编写Mapper

package org.lvgang.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.lvgang.bean.Demo;

/**
 * Demo实体持久化Mapper
 * @author Administrator
 */
public interface DemoMapper {
	/**
	 * 按名称查询
	 * @param name
	 * @return
	 */
	@Select("select * from mybatis_demo where name = #{name}")
	public List<Demo> getByName(String name);

	/**
	 * 按ID查询
	 * @param id
	 * @return
	 */
	@Select("select *from mybatis_demo where id = #{id}")
	public Demo getById(long id);
	
	/**
	 * 数据插入
	 * @param name
	 * @return
	 */
	@Insert("insert into mybatis_demo(name) value(#{name})")
	public int insert(String name);

	/**
	 * 数据更新
	 * @param id
	 * @param name
	 * @return
	 */
	@Update("UPDATE mybatis_demo SET name = #{name} WHERE id = #{id}")
	public int update(@Param("id") long id ,@Param("name") String name);
	
	/**
	 * 数据删除 
	 * @param id
	 * @return
	 */
	@Delete("DELETE FROM mybatis_demo where id = #{id}")
	public int delete(long id);

}

编写Service

package org.lvgang.service;

import org.lvgang.bean.Demo;
import org.lvgang.mapper.DemoMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Demo管理业务层
 * @author Administrator
 *
 */
@Service
public class DemoManageService {
	@Autowired private DemoMapper demoMapper;
	
	/**
	 * 根据ID查询
	 * @param id
	 * @return
	 */
	public Demo getById(long id){
		return demoMapper.getById(id);
	}
	
	/**
	 * 数据插入
	 * @param name
	 * @return
	 */
	public int add(String name){
		return demoMapper.insert(name);
	}
	
	/**
	 * 根据ID更新
	 * @param id
	 * @param name
	 * @return
	 */
	public int update(long id ,String name){
		return demoMapper.update(id, name);
	}
	
	/**
	 * 删除数据
	 * @param id
	 * @return
	 */
	public int remove(long id){
		return demoMapper.delete(id);
	}
}

编写Controller

package org.lvgang.controller;

import org.lvgang.bean.Demo;
import org.lvgang.service.DemoManageService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * Demo管理控制层
 * 
 * @author Administrator
 *
 */
@RestController
@RequestMapping("/demo")
public class DemoManageController {
	@Autowired
	private DemoManageService demoManageService;

	/**
	 * 根据ID查询
	 * @return
	 */
	@RequestMapping("/get")
	public Demo getById() {
		return demoManageService.getById(1);
	}
	
	/**
	 * 添加数据
	 * @return
	 */
	@RequestMapping("/add")
	public String add(){
		int i = demoManageService.add("lvgang");
		if(i>0){
			return "插入成功";
		}else{
			return "插入失败";
		}
	}
	
	/**
	 * 更新数据
	 * @return
	 */
	@RequestMapping("/update")
	public String update(){
		int i = demoManageService.update(1,"aaa");
		if(i>=0){
			return "更新成功";
		}else{
			return "更新失败";
		}
	}
	
	/**
	 * 删除数据
	 * @return
	 */
	@RequestMapping("/romove")
	public String romove(){
		int i = demoManageService.remove(2);
		if(i>=0){
			return "删除成功";
		}else{
			return "删除失败";
		}
	}
	
	
}

编写APP启动

package org.lvgang;

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

/**
 * Spring Boot启动类
 * @author Administrator
 */
@SpringBootApplication // 等价于@Configuration,@EnableAutoConfiguration和@ComponentScan
@MapperScan("org.lvgang.mapper")  //mybatis mapper搜索路径
public class Application {
	public static void main(String[] args) {
		SpringApplication.run(Application.class, args);
	}
}

在APP启动类时,需要添加mapper的加载路注解:

    @MapperScan("org.lvgang.mapper"),内容中可以通过*代表某N个路径

 

验证是否成功

通过Main方法启动项目,以上路径,并展示相应的内容表示成功

获取数据:http://localhost:8080/demo/get

添加数据:http://localhost:8080/demo/add

修改数据:http://localhost:8080/demo/update

删除数据:http://localhost:8080/demo/romove

展开阅读全文
1
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
1
分享
返回顶部
顶部