3. SpringBoot 整合 Mybatis+mysql

现在Mybatis用的是最多的了 当然后面还有Mybatis-plus Fluent Mybatis 之后会讲到

1. 引入依赖

        <!--web模块必要依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--注解方式书写set/get 构造函数 非常好用-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
		 <!--mybatis-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>
   <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.20</version>
        </dependency>

注意版本的选择
在这里插入图片描述

2. 配置文件设置

#设置请求的端口号
server.port=9999

#数据库配置
spring.datasource.username=bb
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#修改成自己的ip和库名
spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai

#mybaits相关配置

#设置xml的映射文件路径 必须!!!
mybatis.mapper-locations=classpath:mapper/*.xml
#设置基础pojo的包名 可以在xml中省略包名前缀
mybatis.type-aliases-package=cn.bb.springbootstart.pojo
#会在控制台打印出对应的sql语句
logging.level.cn.bb=debug

3.创建数据库表

在这里插入图片描述

新建一个 test 数据库 创建user表

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `desc` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) 
) 

4. 实体类 mapper 生成

这里我使用的是idea 的插件 mybatis code helper 直接一键生成 非常好用

也要破解版的 不过我是花钱了的 自己斟酌吧

如图所示 在这里插入图片描述

4.1 User类

如果在数据表字段里写了注释 也会自动生成的

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User implements Serializable {
    private Integer id;

    private String name;

    private Integer age;

    private String desc;

    private static final long serialVersionUID = 1L;
}

4.2 UserMapper 类

注意这上面的@Mapper注解 可以在每个Mapper类上加

或者在入口类统一加上扫描注解 @MapperScan("mappe类所在的包名")

如我这里的包名为 cn.bb.springbootstart.mapper

@Mapper
public interface UserMapper {
    int deleteByPrimaryKey(Integer id);

    int insert(User record);

    int insertSelective(User record);

    User selectByPrimaryKey(Integer id);

    int updateByPrimaryKeySelective(User record);

    int updateByPrimaryKey(User record);
}

4.3 UserMapper.xml

注意对应的namespacetype要改成自己的包名 不要一味的复制

<?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="cn.bb.springbootstart.mapper.UserMapper">
<!--改成自己的类名-->
  <resultMap id="BaseResultMap" type="cn.bb.springbootstart.pojo.User">
    <!--@mbg.generated-->
    <!--@Table `user`-->
    <id column="id" jdbcType="INTEGER" property="id" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="age" jdbcType="INTEGER" property="age" />
    <result column="desc" jdbcType="VARCHAR" property="desc" />
  </resultMap>
  <sql id="Base_Column_List">
    <!--@mbg.generated-->
    id, `name`, age, `desc`
  </sql>
  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
    <!--@mbg.generated-->
    select 
    <include refid="Base_Column_List" />
    from `user`
    where id = #{id,jdbcType=INTEGER}
  </select>
  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
    <!--@mbg.generated-->
    delete from `user`
    where id = #{id,jdbcType=INTEGER}
  </delete>
  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="cn.bb.springbootstart.pojo.User" useGeneratedKeys="true">
    <!--@mbg.generated-->
    insert into `user` (`name`, age, `desc`
      )
    values (#{name,jdbcType=VARCHAR}, #{age,jdbcType=INTEGER}, #{desc,jdbcType=VARCHAR}
      )
  </insert>
  <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="cn.bb.springbootstart.pojo.User" useGeneratedKeys="true">
    <!--@mbg.generated-->
    insert into `user`
    <trim prefix="(" suffix=")" suffixOverrides=",">
      <if test="name != null">
        `name`,
      </if>
      <if test="age != null">
        age,
      </if>
      <if test="desc != null">
        `desc`,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
      <if test="name != null">
        #{name,jdbcType=VARCHAR},
      </if>
      <if test="age != null">
        #{age,jdbcType=INTEGER},
      </if>
      <if test="desc != null">
        #{desc,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>
  <update id="updateByPrimaryKeySelective" parameterType="cn.bb.springbootstart.pojo.User">
    <!--@mbg.generated-->
    update `user`
    <set>
      <if test="name != null">
        `name` = #{name,jdbcType=VARCHAR},
      </if>
      <if test="age != null">
        age = #{age,jdbcType=INTEGER},
      </if>
      <if test="desc != null">
        `desc` = #{desc,jdbcType=VARCHAR},
      </if>
    </set>
    where id = #{id,jdbcType=INTEGER}
  </update>
  <update id="updateByPrimaryKey" parameterType="cn.bb.springbootstart.pojo.User">
    <!--@mbg.generated-->
    update `user`
    set `name` = #{name,jdbcType=VARCHAR},
      age = #{age,jdbcType=INTEGER},
      `desc` = #{desc,jdbcType=VARCHAR}
    where id = #{id,jdbcType=INTEGER}
  </update>
</mapper>

其他service controller就省略的 反正调用的还是这个mapper类

5. 测试增删改查

我们直接在测试文件夹里直接测试了 效果图就不上了 很简单的东西

@SpringBootTest
class SpringbootstartApplicationTests {
    @Autowired
    private UserMapper userMapper;
    @Test
    void insert() {
        User user = new User();
        User user2 = new User();
        user.setName("bb");
        user2.setName("didi");
        userMapper.insertSelective(user);
        userMapper.insertSelective(user2);
    }
    @Test
    void delete() {
        userMapper.deleteByPrimaryKey(1);
    }
    @Test
    void update() {
        User user = new User();
        user.setId(2);
        user.setDesc("打水");
        userMapper.updateByPrimaryKey(user);
    }

    @Test
    void select() {
        System.out.println(userMapper.selectByPrimaryKey(2));
    }

}

想拓展的话就在xml文件中新增即可

你的笑容怡人如晚霞般,在川流不息的时光中,神采飞扬。 -「 时光」

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值