话不多说 直接上代码
1.配置pom文件。添加对应的jar包
<?xml version="1.0" encoding="UTF-8"?>
<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>cn.et</groupId>
<artifactId>spring-boot-demo</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>war</packaging>
<!--继承spring-boot的依赖 spring-boot 的核心依赖包 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
</parent>
<dependencies>
<!-- springboot 每一个框架的集成都是一个starter spring-boot-starter-web 加载javaee 内嵌tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 加了该配置文件 会自动启动数据库 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- 配置数据库的jar包 spring-boot不会给数据库的架包加载进去-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<!-- mybatis 的架包 父项目里面没有版本需要自己定义版本 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
</dependencies>
</project>
二、编写一个项目启动类:
package cn.et;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//必须添加 @SpringBootApplication 启动spring的自动配置功能 必须要添加
@SpringBootApplication
//扫描mapper包 一般用于全局 (推荐使用) 或许在每个类上面加 @Mapper注解效果等价
@MapperScan("cn.et.**.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
@SpringBootApplication 这个注解是用来启动springboot的一定要有
@MapperScan("cn.et.**.mapper") 这个注解非常的关键,这个对应了项目中mapper(dao)所对应的包路径,很多同学就是这里忘了加导致异常的
三、在application.yml或者application.perproties里配置连接数据库的四要素,这两个文件在resouces目录下,springboot会自动去加载,在这里我是通过application.perproties,配置方式如下
#配置数据库四要素 键不可改变
spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456
#如果要用xml的方式来写sql 就需要配置
mybatis.mapper-locations=classpath:**/*Mapper.xml
mybatis.mapper-locations: 如果是用xml的方式来写sql,就一定要配置这个,指向xml文件的位置
四、编写一个对应数据库表的实体类
package cn.et.demo02.model;
public class UserInfo {
private String id;
private String name;
private String age;
private String sex;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
五、编写一个持久层,(在这里为了给用注解的方式跟用xml方式都表现出来,我特意给有些方法用注解实现,有的方法用xml的方式实现)
package cn.et.demo02.mapper;
import cn.et.demo02.model.UserInfo;
import org.apache.ibatis.annotations.*;
import java.util.List;
//@Mapper
public interface UserInfoMapper {
/**
* 添加
* @param userInfo
*/
@Insert("insert into userInfo (uid,uname,uage,usex) VALUE(#{userInfo.id},#{userInfo.name},#{userInfo.age},#{userInfo.sex})")
void insert(@Param("userInfo") UserInfo userInfo);
/**
* 删除
* @param id
*/
@Delete("delete from userInfo where uid=#{id}")
void delete(@Param("id") String id);
/**
* 修改
* @param userInfo
*/
void update(@Param("userInfo") UserInfo userInfo);
/**
* 查询所有
* @return
*/
@Results({
@Result(column = "uid",property = "id"),
@Result(column = "uname",property = "name"),
@Result(column = "uage",property = "age"),
@Result(column = "usex",property = "sex")
})
@Select("select * from userInfo")
List<UserInfo> getUserInfo();
/**
* 根据条件查询
* @param userInfo
* @return
*/
List<UserInfo> getUserInfoQuery(@Param("userInfo") UserInfo userInfo);
/**
* 根据id查询单个
* @param id
* @return
*/
UserInfo getUserInfoOne(@Param("id") String id);
}
六、编写service层。这一层主要是用来实现一些业务逻辑的代码,我这里其实就是一些简单的增删改查,要是觉得麻烦可以不写,可以直接通过controller调用mapper类,不过不推荐这么做
package cn.et.demo02.service;
import cn.et.demo02.model.UserInfo;
import java.util.List;
public interface UserInfoService {
/**
* 添加
* @param userInfo
*/
void insert(UserInfo userInfo);
/**
* 删除
* @param id
*/
void delete(String id);
/**
* 修改
* @param userInfo
*/
void update(UserInfo userInfo);
/**
* 查询所有
* @return
*/
List<UserInfo> getUserInfo();
/**
* 根据条件查询
* @param userInfo
* @return
*/
List<UserInfo> getUserInfoQuery(UserInfo userInfo);
/**
* 根据id查询单个
* @param id
* @return
*/
UserInfo getUserInfoOne(String id);
}
实现类
package cn.et.demo02.service.impl;
import cn.et.demo02.mapper.UserInfoMapper;
import cn.et.demo02.model.UserInfo;
import cn.et.demo02.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserInfoSeriviceImpl implements UserInfoService {
@Autowired
UserInfoMapper userInfoMapper;
@Override
public void insert(UserInfo userInfo) {
userInfoMapper.insert(userInfo);
}
@Override
public void delete(String id) {
userInfoMapper.delete(id);
}
@Override
public void update(UserInfo userInfo) {
userInfoMapper.update(userInfo);
}
@Override
public List<UserInfo> getUserInfo() {
return userInfoMapper.getUserInfo();
}
@Override
public List<UserInfo> getUserInfoQuery(UserInfo userInfo) {
return userInfoMapper.getUserInfoQuery(userInfo);
}
@Override
public UserInfo getUserInfoOne(String id) {
return userInfoMapper.getUserInfoOne(id);
}
}
七、编写控制层
package cn.et.demo02.controller;
import cn.et.demo02.model.UserInfo;
import cn.et.demo02.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("demo02")
public class MybatisController {
@Autowired
UserInfoService userInfoService;
/**
* 添加
* @param userInfo
* @return
*/
@RequestMapping("insert")
public String insert(UserInfo userInfo){
userInfoService.insert(userInfo);
return "SUCCESS";
}
/**
* 删除
* @param id
* @return
*/
@RequestMapping("delete")
public String delete(String id){
userInfoService.delete(id);
return "SUCCESS";
}
/**
* 修改
* @param userInfo
* @return
*/
@RequestMapping("update")
public String update(UserInfo userInfo){
userInfoService.update(userInfo);
return "SUCCESS";
}
/**
* 查询素有的数据
* @return
*/
@RequestMapping("getUserInfo")
public List<UserInfo> getUserInfo(){
return userInfoService.getUserInfo();
}
/**
* 根据条件查询
* @param userInfo
* @return
*/
@RequestMapping("getUserInfoQuery")
public List<UserInfo> getUserInfoQuery(UserInfo userInfo){
return userInfoService.getUserInfoQuery(userInfo);
}
/**
* 根据id查询单个
* @param id
* @return
*/
@RequestMapping("getUserInfoOne")
public UserInfo getUserInfoOne(String id){
return userInfoService.getUserInfoOne(id);
}
}