目录
一 引入依赖
<!-- Spring-Mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!-- MySQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.45</version>
</dependency>
二 表结构设计
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
`name` varchar(50) NOT NULL COMMENT '用户名',
`age` int(11) NOT NULL COMMENT '年龄',
`create_datetime` datetime NOT NULL COMMENT '创建时间',
`update_datetime` datetime NOT NULL COMMENT '更新时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
三 配置数据源
application.yml 添加如下配置,数据库、用户名、密码配置成自己的。
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/account
username: root
password: root
四 代码实现
4.1 配置指定 domain 扫描包。
application.yml 添加如下配置让 mybatis 自动扫描到自定义 domain 类。
mybatis:
mapper-locations: classpath:dao/*.xml # xml文件路径
type-aliases-package: com.sb.domain # 注意:对应实体类的路径
4.2 dao 层代码接口和实现
dao 类
package com.sb.dao;
import com.sb.domain.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
@Mapper
public interface UserDao {
User getUserById(Long id);
public List<User> getUserList();
public int add(User user);
public int update(@Param("id") Long id, @Param("user") User user);
public int delete(Long id);
}
xml 文件
<?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.sb.dao.UserDao" >
<resultMap id="BaseResultMap" type="com.sb.domain.User" >
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="age" property="age" jdbcType="INTEGER" />
<result column="create_datetime" property="createDatetime" jdbcType="TIMESTAMP"/>
<result column="update_datetime" property="updateDatetime" jdbcType="TIMESTAMP"/>
</resultMap>
<sql id="Base_Column_List" >
id, name, age, create_datetime, update_datetime
</sql>
<select id="getUserList" resultMap="BaseResultMap" >
SELECT
<include refid="Base_Column_List" />
FROM user
</select>
<select id="getUserById" parameterType="java.lang.Integer" resultMap="BaseResultMap" >
SELECT
<include refid="Base_Column_List" />
FROM user
WHERE id = #{id}
</select>
<insert id="add" parameterType="com.sb.domain.User" >
INSERT INTO
user
(name, age, create_date_time, update_date_time)
VALUES
(#{name}, #{age}, #{createDatetime}, #{updateDatetime})
</insert>
<update id="update" parameterType="java.util.Map" >
UPDATE
user
SET
name = #{user.name},age = #{user.age}
WHERE
id = #{id}
</update>
<delete id="delete" parameterType="java.lang.Integer" >
DELETE FROM
user
WHERE
id = #{id}
</delete>
</mapper>
添加 @MapperScan
package com.sb;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@MapperScan(basePackages = "com.sb.dao")
@SpringBootApplication
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}
4.3 Service 层代码接口和实现
UserService 接口
package com.sb.service;
import com.sb.domain.User;
import java.util.List;
public interface UserService {
User getUserById(Long id);
public List<User> getUserList();
public int add(User user);
public int update(Long id, User user);
public int delete(Long id);
}
UserServiceImpl 实现
package com.sb.service.impl;
import com.sb.dao.UserDao;
import com.sb.domain.User;
import com.sb.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
public User getUserById(Long id) {
return userDao.getUserById(id);
}
@Override
public List<User> getUserList() {
return userDao.getUserList();
}
@Override
public int add(User user) {
return userDao.add(user);
}
@Override
public int update(Long id, User user) {
return userDao.update(id, user);
}
@Override
public int delete(Long id) {
return userDao.delete(id);
}
}
4.4 Controller 层代码实现
package com.sb.controller;
import com.sb.domain.User;
import com.sb.dto.RetDTO;
import com.sb.service.UserService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.*;
@RestController
@RequestMapping(value="/users")
public class UserController {
@Resource
private UserService userService;
@RequestMapping(value={"/list"}, method=RequestMethod.GET)
public RetDTO<List<User>> getUserList() {
List<User> r = userService.getUserList();
return RetDTO.getReturnJson(r);
}
@RequestMapping(value="/insert", method=RequestMethod.POST)
public RetDTO insert(@RequestBody User user) {
return RetDTO.getReturnJson(userService.add(user));
}
@RequestMapping(value="/{id}", method=RequestMethod.GET)
public RetDTO<User> getUser(@PathVariable Long id) {
return RetDTO.getReturnJson(userService.getUserById(id));
}
@RequestMapping(value="/{id}", method=RequestMethod.PUT)
public RetDTO putUser(@PathVariable Long id, @RequestBody User user) {
return RetDTO.getReturnJson(userService.update(id, user));
}
@RequestMapping(value="/{id}", method=RequestMethod.DELETE)
public RetDTO deleteUser(@PathVariable Long id) {
return RetDTO.getReturnJson(userService.delete(id));
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/9527.html