您的位置:首页 > 编程语言 > Java开发

SpringBoot2.x-myBatis简单使用

2020-02-17 05:11 381 查看

SpringBoot2.x-myBatis简单使用

开发工具:IDEA2019

一、加入springBoot和myBatis需要的依赖包(pom.xml)

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>**项目组织id**</groupId>
<artifactId>**项目名**</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>**项目名**</name>
<description>Demo project for Spring Boot</description>

<properties>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</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>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</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>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

</project>

二、对springBoot的application.yml(application.propertys)进行配置

spring:
datasource:
#数据库的驱动类型
driver-class-name: com.mysql.jdbc.Driver
#数据库用户名
username: ****
#数据库密码
password: ****
#数据库地址+数据库名
url: jdbc:mysql://localhost:3306/**数据库名**?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8
thymeleaf:
cache: false
mybatis:
#给类起别名  com.xgg.dev是定义项目组织id(groupId)
# type-aliases-package需要加载到启动器的父级
type-aliases-package: com.xgg.dev.项目名
#扫描mapper.xml文件
mapper-locations: classpath:mapper/*.xml
#添加日志信息  com.xgg.dev是定义项目组织id(groupId)
logging:
level:
com:
xgg:
dev: debug

三、环境配置完毕,以简单的用户表为例进行实现

(1)实体类

public class User {
private Integer id;
private String userName;
private String userHome;
//省略set/get
}

(2)UserMapper接口

注意:切记加上@Mapper注解,否则mapper扫描不到报错

package com.xgg.dev.test_ssm.user.dao;

import com.xgg.dev.test_ssm.user.pojo.User;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
//查询所有
List<User> queryAll();
//查询单个
User findUserById(Integer id);
//增加用户
int addUser(User user);
//修改用户
int updaUser(User user);
//删除用户
int delUser(Integer id);
}

(3)UserMapper.xml

对UserMapper接口进行实现,并将查询结果根据对映的实体类进行输出
mybatis不同于hibernate
mybatis是直接操作表,实体类用来接受查询结果和传参
hibernate是通过操作绑定好的实体类去操作表

<?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接口 -->
<mapper namespace="com.xgg.dev.test_ssm.user.dao.UserMapper">
<!-- 管理映射关系:id表示唯一标识,返回类型 type是表对应的实体类 -->
<resultMap id="userMap" type="User">
<!-- cloumn是在数据库中的字段,property是实体类中对应的属性 -->
<id column="id" property="id"></id>
<result column="user_name" property="userName"></result>
<result column="user_home" property="userHome"></result>
</resultMap>
<!-- 查询所有 -->
<select id="queryAll" resultMap="userMap">
SELECT u.id,u.user_name,u.user_home
FROM user u
</select>
<!-- 按id查询 -->
<select id="findUserById" resultMap="userMap">
SELECT u.id,u.user_name,u.user_home
FROM user u
where id=#{id}
</select>
<!-- 添加用户 -->
<insert id="addUser" >
insert into user(user_name,user_home) values(#{userName},#{userHome});
</insert>
<!-- 修改用户信息 -->
<update id="updaUser" >
UPDATE user  SET  user_name=#{userName},user_home=#{userHome} WHERE id=#{id}
</update>
<!-- 删除用户 -->
<delete id="delUser">
delete from user where id=#{id}
</delete>
</mapper>

(4)IUserService接口

public interface IUserService {
//查询所有
List<User> queryAll();

//查询单个
User findUserById(Integer id);

//增加用户
int addUser(User user);

//修改用户
int updaUser(User user);
//删除用户
int delUser(Integer id);
}

(5)UserService实现类

service调用持久层(dao)方法进行接口的实现(可以将多个不同的mapper方法整合成自己需要的方法)

@Transactional():注解式事务
rollbackFor = Exception.class:任何异常(Exception)都会进行事务回滚(rollbackFor)

@Service
@Transactional(rollbackFor = Exception.class)
public class UserService implements IUserService {

@Autowired
private UserMapper userMapper;

@Override
public List<User> queryAll() {
return userMapper.queryAll();
}

@Override
public User findUserById(Integer id) {
return userMapper.findUserById(id);
}

@Override
public int addUser(User user) {
return userMapper.addUser(user);
}

@Override
public int updaUser(User user) {
return userMapper.updaUser(user);
}

@Override
public int delUser(Integer id) {
return userMapper.delUser(id);
}
}

(6)Controller控制层

package com.xgg.dev.test_ssm.user.web;

import com.xgg.dev.test_ssm.user.pojo.User;
import com.xgg.dev.test_ssm.user.service.IUserService;
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("/user")
public class UserController {
@Autowired
private IUserService userService;

//查询所有用户
@RequestMapping("queryAll")
private List<User> queryAll() {
return userService.queryAll();
}

//查询单个
@RequestMapping("/findUserById")
private User findUserById(Integer id) {
return userService.findUserById(id);
}

//增加用户
@RequestMapping("/addUser")
public int addUser(User user) {
return userService.addUser(user);
}

//修改用户信息
@RequestMapping("/updaUser")
public int updaUser(User user) {
return userService.updaUser(user);
}

//删除用户
@RequestMapping("/delUser")
public int delUser(Integer id) {
return userService.delUser(id);
}
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
笑哥哥a. 发布了4 篇原创文章 · 获赞 0 · 访问量 53 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: