SpringBoot整合Mybatis完整版

小编 2026-07-06 阅读:1214 评论:0
喜欢的朋友可以关注下,粉...

喜欢的朋友可以关注下,粉丝也缺。


自从Spring推出Boot,Cloud系列之后,一度成为热门的框架,现在大部分的招聘要求都要有相关的开发经验,借此我在这里就给大家分享一下如何玩转SpringBoot跟Mybatis。

这里我给大家提供我创建的demo下载地址

https://download.csdn.net/download/dsn727455218/10539629

在这里就不跟大家说废话,我们实际操作一番。

使用工具:

eclipse 版本随意

jdk 环境

mysql 数据库

这个工具的安装使用我就不给大家介绍,相信你们都能完成。

SpringBoot项目创建的方式:

1.访问 http://start.spring.io/ 

这个是最为简单的 输入项目名,包名,以及项目类型后,版本现在基本都是2.0+,下载导入到开发工具即可

2.Spring Boot CLI  cmd命令操作

下载安装地址:http://docs.spring.io/spring-boot/docs/current/reference/html/getting-started-installing-spring-boot.html 

下载安装配置环境我就不多做介绍,很简单的操作这不是我介绍的重点

3.利用eclipse来创建SpringBoot 这才是我介绍的重点

首先我们需要在eclipse上面集成STS,至于这是什么,自己可以去Sping的官网看介绍。

eclipse安装:

Help -> Eclipse Marketplace…
Search或选择“Popular”标签,选择Spring Tool Suite (STS) for Eclipse插件,安装

网络不好的可以下载有点慢,慢慢等安装。

new project ,选择spring -> spring starter project

这里写图片描述

按自己的信息填写,我这里项目名叫demo1


选择版本和组件

 
我这里选了2.0.3版本,现在基本都是2.0+的版本,选了mysql和web,mybatis,因为是web项目,都会选择web这个选项,其他的可以按自己需要选择,点击 Finish ,就会有一个新项目,不过需要等待几分钟,sts工具会生成spring boot目录的结构及文件


这就是我们最终的结构。

这里需要提示一点如果没有dependencies包,检查一下项目目录下.classpath 里面是否有
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER"/>

没有就加上,重启eclipse即可,其他原因我就不做多的说明,相信你们能够发现。

接下来我们就来创建包

controller :控制层

dao:数据接口

service:实现类

mapper:这里是放dao层的xml文件 也就是mybatis的

entity:实体类

这几个包是做什么的你们应该能开明白


就是这个样子的

pom.xml 配置文件


这里我只是配置一个基础的,如果需要更加详细的配置文件可以参考我的另一篇文章

https://blog.csdn.net/dsn727455218/article/details/81028192

接下来我们就写写代码try-try

首先我们需要先创建一个userinfo表 字段(id,username,userpass,name)

对应的实体类UserInfo

/** * @author dsn * * @version 创建时间:2018年7月5日 上午11:30:00  */package com.bootdemo.entity;/** * @author dsn * @version 创建时间:2018年7月5日 上午11:30:00 */public class UserInfo {    /**     * @return the id     */    public int getId() {        return id;    }    /**     * @param id     *            the id to set     */    public void setId(int id) {        this.id = id;    }    /**     * @return the username     */    public String getUsername() {        return username;    }    /**     * @param username     *            the username to set     */    public void setUsername(String username) {        this.username = username;    }    /**     * @return the userpass     */    public String getUserpass() {        return userpass;    }    /**     * @param userpass     *            the userpass to set     */    public void setUserpass(String userpass) {        this.userpass = userpass;    }    /**     * @return the name     */    public String getName() {        return name;    }    /**     * @param name     *            the name to set     */    public void setName(String name) {        this.name = name;    }    private int id;    private String username;    private String userpass;    private String name;}

dao层接口UserInfoMapper 这里我是继承了BaseMapper父类,一些方法是可以共用的

/** * @author dsn * * @version 创建时间:2018年7月5日 上午11:35:10  */package com.bootdemo.dao;import com.bootdemo.entity.UserInfo;/** * @author dsn * @version 创建时间:2018年7月5日 上午11:35:10 */public interface UserInfoMapper extends BaseMapper<UserInfo> {    //添加单个对象    //    public int insert(User entity);}

BaseMapper

package com.bootdemo.dao;import java.util.List;import org.apache.ibatis.annotations.Param;public interface BaseMapper<T> {    //添加单个对象    public int insert(T entity);    //修改单个对象    public int update(T entity);    //删除单个对象    public int delete(T entity);    public int deletebyname(T entity);    //查询单个对象    public T select(T entity);    //查询多个对象    public List<T> query();    //根据分页查询多个对象    public List<T> selectbypage(@Param(value = "pageSize") int pageSize, @Param(value = "currentPage") int currentPage);    //根据搜索条件查询    public List<T> searchbytj(@Param(value = "st") String st, @Param(value = "et") String et,            @Param(value = "con") String con);    //查询总条数    public int selectCount();}

service层UserInfoService 同样的我继承了BaseService

/** * @author dsn * * @version 创建时间:2018年7月5日 上午11:35:36  */package com.bootdemo.service;import com.bootdemo.entity.UserInfo;/** * @author dsn * @version 创建时间:2018年7月5日 上午11:35:36 */public interface UserInfoService extends BaseService<UserInfo> {}

BaseService

package com.bootdemo.service;import java.util.List;import org.apache.ibatis.annotations.Param;public interface BaseService<T> {    // 添加单个对象    public int insert(T entity) throws Exception;    // 修改单个对象    public int update(T entity) throws Exception;    // 删除单个对象    public int delete(T entity) throws Exception;    public int deletebyname(T entity);    // 查询单个对象    public T select(T entity);    //查询多个对象    public List<T> query();    //分页查询多个对象    public List<T> selectbypage(@Param(value = "pageSize") int pageSize, @Param(value = "currentPage") int currentPage);    //根据搜索条件查询    public List<T> searchbytj(@Param(value = "st") String st, @Param(value = "et") String et,            @Param(value = "con") String con);    //查询总条�?    public int selectCount();}

mapper文件UserInfoMapper.xml 这是mybatis的sql

<?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.bootdemo.dao.UserInfoMapper" >  <resultMap id="userResultMap" type="com.bootdemo.entity.UserInfo" >    <id column="id" property="id" jdbcType="INTEGER" />    <result column="name" property="name" jdbcType="VARCHAR" />    <result column="username" property="username" jdbcType="VARCHAR" />    <result column="userpass" property="userpass" jdbcType="VARCHAR" />  </resultMap>  <select id="selectList" parameterType="UserInfo" resultMap="userResultMap">  	select    id,username,userpass,name    from userinfo     <where>        disable='1'         <if test="key!=null">            and (            username = #{key,jdbcType=VARCHAR}                or            name = #{key,jdbcType=VARCHAR}            )        </if>    </where>  </select>  <insert id="insert" parameterType="UserInfo"         useGeneratedKeys="true" keyProperty="id">         insert into userinfo(name,username,userpass)               values(#{name},#{username},#{userpass})    </insert></mapper>

controller层UserInfoController

/** * @author dsn * * @version 创建时间:2018年7月12日 下午2:04:58  */package com.bootdemo.controller;import javax.annotation.Resource;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.bind.annotation.RestController;import com.bootdemo.entity.UserInfo;import com.bootdemo.service.UserInfoService;/** * @author dsn * @version 创建时间:2018年7月12日 下午2:04:58 */@RestController@RequestMapping("user")public class UserInfoController {    @Resource    public UserInfoService userinfoService;    @RequestMapping("/add.do")    @ResponseBody    public String addUser(UserInfo user, String msg) {        System.out.println(user.getUsername());        try {            int insert = userinfoService.insert(user);            if (insert == 1) {                msg = "插入成功";            } else {                msg = "插入成功";            }        } catch (Exception e) {            e.printStackTrace();        }        return msg;    }}

需要注意的是我们需要在DemoApplication里面添加


扫描映射文件不然启动项目会报错的

同样也可以再mapper接口类里面加@Mapper注解,两者皆可

我们只需要运行DemoApplication文件即可。


成功界面,我们会看到Spring大大的logo

平常我们web项目都是在tomcat等容器里面启动,这里为什么不需要呢,是SpringBoot已经集成了tomcat,所以不需要我们在配置了。


如果有的码友需要看注解的源码那么打开dependencies


一些jdbc等等常用的配置文件信息都可以查看的。

这里我给大家提供我创建的demo下载地址

https://download.csdn.net/download/dsn727455218/10539629

如有需要可以加我Q群【308742428】大家一起讨论技术。

后面会不定时为大家更新文章,敬请期待。

喜欢的朋友可以关注下,粉丝也缺。



版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表