1.pom.xml 添加mysql,mybatis等依賴。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
2.application.yml:添加數據庫連接信息和mybatis配置信息(默認使用hikari高性能連接池)
server:
port: 8080
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/mybatis-demo?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
driver-class-name: com.mysql.jdbc.Driver
mybatis:
mapper-locations: classpath*:mapper/**/*Mapper.xml
configuration:
map-underscore-to-camel-case: true # 開啓駝峯命名自動轉換
logging:
level:
root: debug
3.入口類添加註解@EnableTransactionManagement,激活事務管理
@SpringBootApplication
@EnableTransactionManagement
public class MybatistestApplication {
public static void main(String[] args) {
SpringApplication.run(MybatistestApplication.class, args);
}
}
4.創建實體類(數據庫創建對應表)
/**
* @Author 犀角
* @Date 2019/9/18 8:42
* @Description
*/
public class Person {
private String id;
private String name;
private String sex;
private Integer age;
private String phone;
private String address;
public String getId(){ return id;}
public void setId(String id) { this.id = id;}
public String getName(){ return name; }
public void setName(String name) { this.name = name; }
public String getSex() { return sex; }
public void setSex(String sex) { this.sex = sex; }
public Integer getAge() { return age; }
public void setAge(Integer age) { this.age = age; }
public String getPhone() { return phone; }
public void setPhone(String phone) { this.phone = phone; }
public String getAddress() { return address; }
public void setAddress(String address) { this.address = address; }
@Override
public String toString() {
return "Person{" +
"id='" + id +'\''+
",name='"+ name +'\''+
",sex='" + sex + '\'' +
",age=" +age +
",phone='" + phone + '\'' +
",address='" + address +'\'' +
'}';
}
}
5.添加 dao 層,使用註解方式以及Mapper映射(在resources
文件夾下新建一個文件夾mapper
:)
/**
* @Author 犀角
* @Date 2019/9/18 9:05
* @Description
*/
@Mapper
public interface PersonDao {
/**
* 查詢所有Person
* @return
*/
List<Person> list();
/**
* 新增person
* @param person
* @return
*/
Integer insert(Person person);
/**
* 刪除person
* @param id
* @return
*/
Integer delete(String id);
/**
* 刪除person
* @param list
* @return
*/
Integer deleteList(@Param("list") List<String> list);
/**
* 修改person
* @param person
* @return
*/
Integer update(Person person);
}
<?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.jst.mybatis.demo.dao.PersonDao">
<resultMap id="personMap" type="com.jst.mybatis.demo.model.Person"></resultMap>
<select id="list" resultMap="personMap">
SELECT
*
FROM
PERSON
</select>
<insert id="insert">
INSERT INTO
PERSON
(id,`name`,sex,age,phone,address)
VALUES
(#{id},#{name},#{sex},#{age},#{phone},#{address})
</insert>
<delete id="delete">
DELETE FROM PERSON
WHERE id=#{id}
</delete>
<delete id="deleteList">
DELETE FROM PERSON
WHERE id in
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</delete>
<update id="update">
update PERSON set
name = #{name},
sex = #{sex},
age = #{age},
phone = #{phone},
address=#{address}
where id = #{id}
</update>
</mapper>
6.添加 service 層,並在該層進行事務管理
package com.jst.mybatis.demo.service;
import com.jst.mybatis.demo.model.Person;
import java.util.List;
/**
* @Author 犀角
* @Date 2019/9/17 17:50
* @Description
*/
public interface PersonService {
/**
* 查詢所有person
* @return
*/
List<Person> list();
/**
* 新增person
* @param person
*/
Integer insert(Person person);
/**
* 刪除person
* @param id
*/
Integer delete(String id);
/**
* 刪除person
* @param id
*/
Integer deleteList(List<String> id);
/**
* 修改person
* @param person
*/
Integer update(Person person);
}
Service 實現層
package com.jst.mybatis.demo.service;
import com.jst.mybatis.demo.dao.PersonDao;
import com.jst.mybatis.demo.model.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Author 犀角
* @Date 2019/9/17 20:57
* @Description
*/
@Service
public class PersonServiceImpl implements PersonService {
@Autowired
private PersonDao personDao;
@Override
public List<Person> list() {
return personDao.list();
}
@Override
public Integer insert(Person person) {
return personDao.insert(person);
}
@Override
public Integer delete(String id) {
return personDao.delete(id);
}
@Override
public Integer deleteList(List<String> id) {
return personDao.deleteList(id);
}
@Override
public Integer update(Person person){
return personDao.update(person);
}
}
7.Controller層
package com.jst.mybatis.demo.controller;
import com.jst.mybatis.demo.model.Person;
import com.jst.mybatis.demo.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* @Author 犀角
* @Date 2019/9/17 17:39
* @Description
*/
@RestController
@RequestMapping("/mybatis/demo")
public class PersonController {
@Autowired
private PersonService personService;
@RequestMapping(method = RequestMethod.GET,value = "list")
public List<Person> list(){
return personService.list();
}
@PostMapping("insert")
public Integer insert(@RequestBody Person person){
return personService.insert(person);
}
@PostMapping("delete")
public Integer delete(@RequestParam String id){
return personService.delete(id);
}
@PostMapping("deleteList")
public Integer deleteList(@RequestBody List<String> id){
return personService.deleteList(id);
}
@PostMapping("update")
public Integer update(@RequestBody Person person){
return personService.update(person);
}
}
- @RequestParam 用於將請求參數區數據映射到功能處理方法的參數上,value:參數名字,即入參的請求參數名字,如userName表示請求的參數區中的名字爲userName的參數的值將傳入,required:是否必須,默認是true,表示請求中一定要有相應的參數,否則將報404錯誤碼;
- @Controller和@RestController的區別