新建Spring Boot空项目
在Intellij Idea 中点击 File -> New -> New Project,选择Spring initializr,如下图所示:
一路根据自己的需要进行设置,直到如下图所示的向导页面,勾选Mybatis和MySQL。
创建数据库和表
启动MySQL数据库进程。在这里我们使用最简单例子:学生表。该表包含3个字段,id,name和age。其中id字段为主键,并且设定为自增长。
创建数据库和表的语句如下所示:
CREATE DATABASE DEMO CHARACTER SET UTF8;
CREATE TABLE STUDENT (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(40),
age INT
);
创建Entity类
该Student实体类的成员变量对应Student表中的每个字段
// Student.java
public class Student {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Student student = (Student) o;
if (id != student.id) return false;
if (age != student.age) return false;
return name != null ? name.equals(student.name) : student.name == null;
}
@Override
public int hashCode() {
int result = id;
result = 31 * result + (name != null ? name.hashCode() : 0);
result = 31 * result + age;
return result;
}
}
在Spring Boot配置MySQL的连接
在resource目录中的application.yml文件中写入以下配置。本例子中使用YAML进行配置。
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/demo
username: root
password: root
编写Mapper
java代码及解释如下:
// 使用@Mapper注解标记MyBatis的Mapper,在使用的地方能够利用@Autowired注入
@Mapper
public interface StudentDAO {
// 使用参数的方式拼接SQL
@Insert("INSERT INTO student(name, age) VALUES(#{name}, #{age})")
int save1(@Param("name") String name, @Param("age") int age);
// 使用bean的方式
@Insert("INSERT INTO student(name, age) VALUES(#{name}, #{age})")
int save2(Student student);
// 使用Map的方式
@Insert("INSERT INTO student(name, age) VALUES(#{name, jdbcType=VARCHAR}, #{age, jdbcType=INTEGER})")
int save3(Map<String, Object> map);
@Select("SELECT * FROM student WHERE name = #{name}")
Student read(@Param("name") String name);
@Select("SELECT * FROM student")
List<Student> readAll();
@Update("UPDATE student SET age = #{age} WHERE name = #{name}")
int update(Student student);
@Delete("DELETE FROM student WHERE name = #{name}")
int delete(Student student);
@Select("SELECT COUNT(1) FROM student")
int count();
}
编写测试类
@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoTest {
@Autowired
private StudentDAO studentDAO;
@Test
private void test() {
// 参数方式插入数据
studentDAO.save1("Paul", 27);
// bean方式插入数据
Student student = new Student();
student.setName("Kate");
student.setAge(25);
studentDAO.save2(student);
// Map方式插入数据
Map<String, Object> student2 = new HashMap<>();
student2.put("name", "Mary");
student2.put("age", 24);
// 获取记录条数
Assert.assertEquals(3, studentDAO.count());
// 读取数据
Student student = studentDAO.read("Paul");
student.setAge(20);
// 更新数据
studentDAO.update(student);
// 删除数据
studentDAO.delete(student);
}
}