本文所使用的代码编辑器为IntelliJ IDEA,这里简单介绍一下如何使用IDEA新建一个SpringBoot项目。
File—>New—>Project—>Spring Initializr
选择JDK版本,点击Next
输入项目包名,选择语言,打包方式,java版本,版本号等,点击Next
后面会使用mybatis,所以这里选择MyBatis Framework依赖,其他依赖项可以根据自己的项目需要选择,当然,这里也可以什么也不选择,后面再pom.xml文件中来添加。至此,一个基础的SpringBoot项目就搭建好了。
如果在新建项目的时候选择了mybatis依赖可直接跳过此步骤。
打开pom文件加入以下依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
数据库相关配置,包括数据库地址、用户名、数据库密码等。
打开resources文件夹下的application.properties文件,初始时此文件为空,在此处配合数据库地址、用户名、密码、编码方式、时区等,如上所示。
A处为配置数据库表对应JavaBean中的实体包路径和对应的mapper文件路径
此处必须配置MapperScan,否则不能使用,关于mapper的使用后面会说到。到这里相关的配置项差不多已经完成了,可以开始使用mybatis了。
新建数据库表需要映射到java文件的类,注意:这里的所有类都必须建立在之前所指定的com.example.demo.dao.entity 包下。
package com.example.demo.dao.entity;
import java.util.Date;
public class Person {
/**
* 主键
*/
private String personId;
/**
* 姓名
*/
private String name;
/**
*年龄
*/
private Integer age;
/**
*生日
*/
private Date birthDay;
/**
*爱好
*/
private String hobby;
public String getPersonId() {
return personId;
}
public void setPersonId(String personId) {
this.personId = personId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirthDay() {
return birthDay;
}
public void setBirthDay(Date birthDay) {
this.birthDay = birthDay;
}
public String getHobby() {
return hobby;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
}
mapper对应数据库中增删改查的操作,mapper的使用有两种方式,一:不使用xml直接在mapper.java文件中使用注解完成;二:使用xml方式。
package com.example.demo.dao.mapper;
import com.example.demo.dao.entity.Person;
import org.apache.ibatis.annotations.*;
import java.util.Date;
public interface PersonMapper {
/**
* 增
*
* @param person
*/
@Insert("INSERT INTO person(PERSON_ID,NAME,AGE,BIRTH_DAY,HOBBY) VALUES(" +
"#{personId}, #{name}, #{age},#{birthDay}, #{hobby})")
void addPerson(Person person);
/**
* 删
*
* @param personId
*/
@Delete("DELETE FROM person WHERE PERSON_ID=#{personId}")
void deletePerson(String personId);
/**
* 改
*
* @param person
*/
@Update("UPDATE person SET NAME = #{name},AGE = #{age},BIRTH_DAY = #{birthDay},HOBBY = #{hobby} WHERE PERSON_ID = #{personId}")
void updatePerson(Person person);
/**
* 查
*
* @param personId
* @return
*/
@Select("SELECT * FROM person WHERE PERSON_ID = #{personId}")
@Results(
{
@Result(property = "personId", column = "PERSON_ID"),
@Result(property = "name", column = "NAME"),
@Result(property = "age", column = "AGE"),
@Result(property = "birthDay", column = "BIRTH_DAY", javaType = Date.class),
@Result(property = "hobby", column = "HOBBY")
}
)
Person queryPerson(String personId);
}
使用注解方法可以直接调用此接口实现增删改查不用创建xml,就是代码看起来不太简洁。
1、新建mapper.java文件
package com.example.demo.dao.mapper;
import com.example.demo.dao.entity.Person;
public interface PersonMapperByXml {
/**
* 增
*
* @param person
*/
void addPerson(Person person);
/**
* 删
*
* @param personId
*/
void deletePerson(String personId);
/**
* 改
*
* @param person
*/
void updatePerson(Person person);
/**
* 查
*
* @param personId
* @return
*/
Person queryPerson(String personId);
}
2、创建mapper.xml文件
注意xml文件必须建立在上文配置中指定的文件夹下且必须和mapper.java文件同名。
<mapper namespace="com.example.demo.dao.mapper.PersonMapperByXml">
<resultMap id="PersonMap" type="com.example.demo.dao.entity.Person">
<result column="PERSON_ID" property="personId"/>
<result column="NAME" property="name"/>
<result column="AGE" property="age"/>
<result column="BIRTH_DAY" property="birthDay" javaType="Date"/>
<result column="HOBBY" property="hobby"/>
resultMap>
<insert id="addPerson" parameterType="com.example.demo.dao.entity.Person"
statementType="CALLABLE">
insert into person(PERSON_ID, NAME, AGE, BIRTH_DAY, HOBBY)
values (#{personId}, #{name}, #{age}, #{birthDay}, #{hobby})
insert>
<delete id="deletePerson" parameterType="String" statementType="CALLABLE">
delete
from person
where PERSON_ID = #{personId}
delete>
<update id="updatePerson" parameterType="com.example.demo.dao.entity.Person" statementType="CALLABLE">
update person
set NAME = #{name},
AGE = #{age},
BIRTH_DAY = #{birthDay},
HOBBY = #{hobby}
where PERSON_ID = #{personId}
update>
<select id="queryPerson" parameterType="String" resultMap="PersonMap">
select *
from person
where PERSON_ID = #{personId}
select>
mapper>
注意:id对应mapper.java文件中的方法名,parameterType为方法输入参数类型。
package com.example.demo.controller;
import com.example.demo.dao.entity.Person;
import com.example.demo.dao.mapper.PersonMapper;
import com.example.demo.dao.mapper.PersonMapperByXml;
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.RestController;
import java.util.Date;
@RestController
public class DemoController {
@Autowired
private PersonMapperByXml personMapperByXml;
@Autowired
private PersonMapper personMapper;
@RequestMapping(value = "/addPerson", method = RequestMethod.GET)
public void addPerson() {
Person person = new Person();
person.setPersonId("11111111111111111");
person.setName("张三");
person.setAge(20);
person.setBirthDay(new Date());
person.setHobby("画画");
personMapper.addPerson(person);
// personMapperByXml.addPerson(person);
}
@RequestMapping(value = "/deletePerson", method = RequestMethod.GET)
public void deletePerson() {
personMapper.deletePerson("11111111111111111");
// personMapperByXml.deletePerson("11111111111111111");
}
@RequestMapping(value = "/queryPerson", method = RequestMethod.GET)
public void queryPerson() {
Person person = personMapper.queryPerson("11111111111111111");
System.out.println(person.getName());
}
@RequestMapping(value = "/updatePerson", method = RequestMethod.GET)
public void updatePerson() {
Person person = personMapper.queryPerson("11111111111111111");
System.out.println(person.getName());
person.setName(person.getName() + "A");
personMapperByXml.updatePerson(person);
}
}
最后附上Demo下载链接