注意:在使用mybatis时,要在启动类上加一个mapper扫描注解@MapperScan(“com.example.demo.mapper”)
pom.xml中加入插件
<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>
</dependency>
application.properties加入配置
//数据库连接信息(useSSL=false这个在开发的时候一定要关闭,不然会报红提示哦)
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false
spring.datasource.username =root
spring.datasource.password =daibin
//sql打印配置
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
实体类
package com.example.demo.domain;
public class Com {
private int id;
private String content;
private String con_tent;
private int com_id;
private String con;
public Com(int id, String content, int com_id) {
this.id = id;
this.content = content;
this.com_id = com_id;
}
public Com() {
}
public String getCon_tent() {
if(con_tent==null){
return "空";
}
return con_tent;
}
public String getCon() {
return con;
}
public void setCon(String con) {
this.con = con;
}
public void setCon_tent(String con_tent) {
this.con_tent = con_tent;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public int getCom_id() {
return com_id;
}
public void setCom_id(int com_id) {
this.com_id = com_id;
}
}
mapper
package com.example.demo.mapper;
import com.example.demo.domain.Com;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;
import java.util.List;
//不加这个注解后面的注入mapper会有报红提示
@Repository
public interface ComMapper {
//useGeneratedKeys是开启返回值的id映射到实体类的id上 keyProperty代表实体类的字段 keyColumn代表数据库字段
@Insert("insert into com(content,com_id) values(#{content},#{com_id})")
@Options(useGeneratedKeys=true, keyProperty="id", keyColumn="id")
int insert(Com com);
@Select("select * from com")
@Results({
//起别名(column是数据库得字段,property是实体类得别名字段)
@Result(column = "content",property = "con_tent")
//下面可以有多个这样得@Result注解(多个别名字段)
})
List<Com> getAll();
@Select("select * from com where id = #{id}")
@Results({
@Result(column = "content",property = "con")
})
Com findById(Long id);
@Update("UPDATE com SET content=#{content} WHERE id =#{id}")
void update(Com com);
@Delete("DELETE FROM com WHERE id =#{id}")
void delete(Long id);
}
service业务逻辑接口
package com.example.demo.service;
import com.example.demo.domain.Com;
import java.util.List;
public interface ComInte {
public int add(Com com);
public List<Com> getAll();
public Com getById(Long id);
public void upDate(int id);
public void del(Long id);
}
service业务逻辑实现
package com.example.demo.service.impl;
import com.example.demo.domain.Com;
import com.example.demo.mapper.ComMapper;
import com.example.demo.service.ComInte;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class ComService implements ComInte {
@Autowired
private ComMapper comMapper;
@Override
//这个注解是开启事务,如果这里面抛出异常,那么所有对数据库的操作将会回滚
@Transactional(propagation=Propagation.REQUIRED)
public int add(Com com){
comMapper.insert(com);
return com.getId();
}
@Override
public List<Com> getAll() {
return comMapper.getAll();
}
@Override
public Com getById(Long id) {
return comMapper.findById(id);
}
@Override
public void upDate(int id) {
comMapper.update(new Com(id,"世界世界",90));
}
@Override
public void del(Long id) {
comMapper.delete(id);
}
}
controlll控制器
package com.example.demo.controller;
import com.example.demo.domain.Com;
import com.example.demo.mapper.ComMapper;
import com.example.demo.service.impl.ComService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class He {
//注入service
@Autowired
private ComService comService;
//注入mapper(目的是简单得逻辑直接在控制器中执行)
@Autowired
private ComMapper comMapper;
//增
@RequestMapping("/add")
public Object add(){
return comService.add(new Com(10,"sgggsd撒",10));
}
//删
@RequestMapping("/del")
public void del(){
comService.del(35l);
}
//改
@RequestMapping("/upDate")
public void upDate(){
comService.upDate(52);
}
//查
@RequestMapping("/getAll")
public Object getAll(){
return comService.getAll();
}
//根据ID查
@RequestMapping("/getById")
public Object getById(){
return comService.getById(34l);
}
//简单得挖空数据库,所以直接在控制器中执行,没必要去service层去执行
@RequestMapping("/getAllControll")
public Object getAllControll(){
return comMapper.getAll();
}
}