1.引入相关的jar包
直接在pom.xml中配置:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.2</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>
<!--在ide中安装lombok插件-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
2.创建一个与数据库表中的字段相对应的实体类
数据库表:
User.java:
package com.dlj.springbootdemo.data;
import java.util.Date;
/**
* @author ashley
* @date 2019/9/23-16:19
*/
@Data//需引入lombok依赖,有了该注解实体类中可省掉get,set方法,减少代码量
public class User {
private Long id;
private String email;
private String phoneNumber;
private String username;
private String nickname;
private String password;
private Date createTime;
private Date updateTime;
}
3. 创建数据访问接口
UserMapper.java:
package com.dlj.springbootdemo.dao;
import com.dlj.springbootdemo.data.User;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* @author ashley
* @date 2019/9/23-17:43
*/
@Repository
public interface UserMapper {
User getUserById (Long id);
List<User> getUserList();
int deleteUser(Long id);
int updateNickname(String nickname, Long id);
int addUser(User user);
}
4.创建实体类的映射Mapper文件
user.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace 必须与接口的全类名保持一致-->
<mapper namespace="com.dlj.springbootdemo.dao.UserMapper">
<!--id必须与接口对应的功能的名称保持一致-->
<resultMap id="userMap" type="com.dlj.springbootdemo.data.User">
<!--实体类映射-->
<!--property和javaType与实体类中保持一致,column和jdbcType与数据库中保持一致-->
<id property="id" column="id" javaType="java.lang.Long" jdbcType="BIGINT"/>
<result property="email" column="email" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result property="phoneNumber" column="phone_number" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result property="username" column="username" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result property="password" column="password" javaType="java.lang.String" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" javaType="java.util.Date" jdbcType="TIME"/>
<result property="updateTime" column="update_time" javaType="java.util.Date" jdbcType="TIMESTAMP"/>
</resultMap>
<!--sql语句中的#也可以用$,但是#可以避免sql注入-->
<!--指定单条查询-->
<select id="getUserById" resultMap="userMap">
select * from t_user where id = #{id}
</select>
<!--查询所有-->
<select id="getUserList" resultMap="userMap">
select * from t_user
</select>
<!--删-->
<delete id="deleteUser" parameterType="java.lang.Long">
delete from t_user where id = #{id}
</delete>
<!--改-->
<update id="updateNickname">
update t_user set nickname = #{nickname} where id = #{id}
</update>
<!--增-->
<insert id="addUser" parameterType="com.dlj.springbootdemo.data.User" useGeneratedKeys="true" keyProperty="id"><!--返回主键id-->
insert into t_user(email, phone_number, username, nickname, password, create_time, update_time)
values (#{email}, #{phoneNumber}, #{username}, #{nickname}, #{password}, now(), now())
</insert>
</mapper>
5.完成其他配置文件
application.properties:
#定义数据库连接信息(初始化驱动)
spring.datasource.driverClassName=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=
#指定了mybatis基础配置文件和实体类映射文件的地址
mybatis.mapper-locations:classpath:mybatis/mapper/*.xml
mybatis.config-location:classpath:mybatis/mybatis-config.xml
#定义dao包下的日志记录级别为debug,标准输出会显示sql语句
logging.level.com.dlj.springbootdemo.dao=debug
mybatis-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--映射文件-->
<typeAliases>
<package name="com.dlj.springbootdemo.data"/>
</typeAliases>
</configuration>
6.创建测试类:
package com.dlj.springbootdemo;
import com.dlj.springbootdemo.dao.UserMapper;
import com.dlj.springbootdemo.data.User;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.annotation.Resource;
import java.util.List;
import java.util.UUID;
@MapperScan("com.dlj.springbootdemo.dao")//对com.dlj.springbootdemo.dao包进行扫描
@SpringBootTest//单元测试
@RunWith(SpringJUnit4ClassRunner.class)//让测试运行于Spring测试环境
public class UserTest {
@Resource
//注入userMapper
private UserMapper userMapper;
@Test
public void testGetUserById(){
User user = userMapper.getUserById(25L);
Assert.assertTrue(user != null);
}
@Test
public void testGetUserList(){
List<User> userList = userMapper.getUserList();
Assert.assertTrue(userList != null);
}
@Test
public void testDeleteUser() {
int i = userMapper.deleteUser(8L);
Assert.assertTrue(i >= 0);
}
@Test
public void testUpdateNickname() {
int i = userMapper.updateNickname("bob", 15L);
Assert.assertTrue(i >= 0);
}
@Test
public void tesAddUser() {
User user = new User();
user.setEmail("[email protected]");
user.setPhoneNumber("13498");
user.setUsername(UUID.randomUUID().toString().substring(0, 8));//用户名取随机的uuid的前八位
user.setNickname("marry");
user.setPassword("marry234");
int i = userMapper.addUser(user);
Assert.assertTrue(i >= 0);
}
}
7.建一个controller,用于指定获取指定id所对应的用户信息
package com.dlj.springbootdemo.controller;
import com.dlj.springbootdemo.dao.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
/**
* @author ashley
* @date 2019/9/24-18:09
*/
@RestController
public class UserTest {
@Autowired
private UserMapper userMapper;
//浏览器访问http://localhost:8080/getUser?id=xx即可查看对应id的用户信息
@RequestMapping(value = "/getUser", method = RequestMethod.GET)
public Object getUser(@RequestParam long id) {
return userMapper.getUserById(id);
}
}
目录结构:
启动MySQL和spring boot在浏览器访问:
数据库表信息:
idea返回日志: