mybatis

本文介绍了在SpringBoot项目中如何使用mybatis-spring-boot-starter、lombok、SpringfoxSwagger、PageHelper等依赖,以及数据库连接配置、MyBatis映射文件和RESTfulAPI控制器的实现,展示了CRUD操作的代码片段。
摘要由CSDN通过智能技术生成

依赖

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.20</version>
        </dependency>
        <!--swagger-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <!--swagger ui-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>
        <!--pagehelper-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

    <build>
        <resources>
            <!-- 扫描src/main/java下所有xx.xml文件 -->
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <!--扫描resources下所有资源-->
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
    </build>

配置文件

server:
  port: 8090
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/systemboot
    username: root
    password: 123456

# MyBatis 配置
mybatis:
#  1.xml文件放在java的mapper下xml文件中,路径要写全,并且pom中要加构建扫描src/main/java:扫描java下的所有文件
#  mapper-locations: classpath:com/example/demo/demos/web/mapper/xml/*.xml
#  2.xml文件放在resource的mapper下xml文件中,从resource文件名开始写路径,并且pom中要加构建扫描src/main/resources
#  扫描resource下的所有文件
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.example.demo.demos.web.entity

# 开启 PageHelper 插件
pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countSql

#创建表
DROP TABLE IF EXISTS `consult`;
CREATE TABLE `consult`  (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '消息ID',
	`title` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '消息标题',
  `content` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '消息内容',
  `deleted` tinyint(1) NULL DEFAULT 0 COMMENT '逻辑删除 1已删除, 0未删除',
  `create_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime(0) NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`) USING BTREE
  #创建索引
  #INDEX `idx_title`(`title`) UsING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 COLLATE = utf8mb4_general_ci COMMENT = '消息表' ROW_FORMAT = Compact;

#添加字段
ALTER TABLE `consult`
ADD COLUMN `performance` varchar(16) NULL COMMENT '绩效';

entity

@Data
public class Consult {
    private Integer id;
    private String title;
    private String content;
    private Integer deleted;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    //返回的日期类型字段数据解析成字符串 xml中查询返回字段create_time更名createTime
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private Date createTime;
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "Asia/Shanghai")
    private Date updateTime;
}

controller

@RestController
@RequestMapping("/consult")
//@Api(tags = "crud")
public class ConsultController {

    @Autowired
    private ConsultService consultService;

    @RequestMapping("/selectAll")
    public List<Consult> getAllConsults(){
        return consultService.getAllConsults();
    }

    @GetMapping("/getById/{id}")
//    @ApiOperation(value = "根据id查询")
    public Consult getConsultById(@PathVariable int id) {
        return consultService.getConsultById(id);
    }

    @PostMapping("/save")
//    @ApiOperation(value = "添加")
    public boolean createConsult(@RequestBody Consult consult) {
        return consultService.createConsult(consult);
    }

    @PutMapping("/update/{id}")
//    @ApiOperation(value = "更新")
    public boolean updateConsult(@PathVariable Integer id, @RequestBody Consult consult) {
        consult.setId(id);
        return consultService.updateConsult(consult);
    }

    @DeleteMapping("/delete/{id}")
//    @ApiOperation(value = "删除")
    public boolean deleteConsult(@PathVariable Integer id) {
        return consultService.deleteConsult(id);
    }

    @GetMapping("/pageList/{pageNum}/{pageSize}")
    public Object pageList(@PathVariable int pageNum, @PathVariable int pageSize) {
        PageHelper.startPage(pageNum, pageSize);
        List<Consult> list = consultService.getAllConsults();
        PageInfo<Consult> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

}

service

public interface ConsultService {
    Consult getConsultById(int id);
    List<Consult> getAllConsults();
    boolean createConsult(Consult consult);
    boolean updateConsult(Consult consult);
    boolean deleteConsult(Integer id);
}
@Service
public class ConsultServiceImpl implements ConsultService {

    @Autowired
    private ConsultMapper consultMapper;

    @Override
    public Consult getConsultById(int id) {
        return consultMapper.getConsultById(id);
    }

    @Override
    public List<Consult> getAllConsults() {
        return consultMapper.getAllConsults();
    }

    @Override
    public boolean createConsult(Consult consult) {
        consult.setDeleted(0);
        consult.setCreateTime(new Date());
        consult.setUpdateTime(new Date());
        int result = consultMapper.createConsult(consult);
        return result>0;
    }

    @Override
    public boolean updateConsult(Consult consult) {
        consult.setUpdateTime(new Date());
        return consultMapper.updateConsult(consult)>0;
    }

    @Override
    public boolean deleteConsult(Integer id) {
        return consultMapper.deleteConsult(id)>0;
    }
}

mapper

@Mapper
public interface ConsultMapper {

    Consult getConsultById(int id);
    List<Consult> getAllConsults();
    int createConsult(Consult consult);
    int updateConsult(@Param("data") Consult consult);
    int deleteConsult(Integer id);
}
<?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.example.demo.demos.web.mapper.ConsultMapper">
<!--    自定义返回类型-->
    <resultMap id="BaseResultMap" type="com.example.demo.demos.web.entity.Consult">
        <id column="id" property="id"/>
        <result column="title" property="title"/>
        <result column="content" property="content"/>
        <result column="deleted" property="deleted"/>
        <result property="createTime" column="create_time" javaType="java.util.Date"
                jdbcType="TIMESTAMP" typeHandler="org.apache.ibatis.type.DateTypeHandler" />
        <result property="updateTime" column="update_time" javaType="java.util.Date"
                jdbcType="TIMESTAMP" typeHandler="org.apache.ibatis.type.DateTypeHandler" />
    </resultMap>


        <select id="getConsultById" resultType="com.example.demo.demos.web.entity.Consult">
            SELECT * FROM consult WHERE id = #{id} and deleted=0
        </select>

<!--    <select id="getConsultById" resultMap="BaseResultMap">-->
<!--        SELECT id,title,content,deleted,create_time,update_time-->
<!--        FROM consult WHERE id = #{id} c-->
<!--    </select>-->

<!--    <select id="getAllConsults" resultMap="BaseResultMap">-->
<!--        SELECT * FROM consult where deleted=0-->
<!--    </select>-->

        <select id="getAllConsults" resultMap="BaseResultMap">
            SELECT id,title,content,deleted,create_time createTime,update_time updateTime FROM consult where deleted=0
        </select>

    <insert id="createConsult">
        INSERT INTO consult (title, content)
        VALUES (#{title}, #{content})
    </insert>

    <update id="updateConsult">
        UPDATE consult SET title = #{data.title}, content = #{data.content},update_time = #{data.updateTime}
        WHERE id = #{data.id}
    </update>

    <update id="deleteConsult">
        UPDATE consult set deleted = 1, update_time= CURRENT_TIMESTAMP WHERE id = #{id}
    </update>
</mapper>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值