SpringBoot (3) 集成Mybatis实现简单的增删改查

1,新建项目
在这里插入图片描述

2,加入所需依赖(jar)

        <!-- web支持 -->      
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
      <!--  mybatis 模块 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
     <!-- mysq连接驱动 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
      <!--  测试模块 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
      <!--   junit测试包 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>

3,配置所需属性

#数据源 配置
spring.datasource.driver-class-name= com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&charaterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=****
mybatis 配置
#配置扫描实体类
mybatis.type-aliases-package=indi.lwc.springboot2.entity
#配置扫描映射文件
mybatis.mapper-locations=classpath:mapper/*.xml

4,编写启动类

package indi.lwc.springboot2;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
//@MapperScan 可以指定要扫描的mapper类路径
@MapperScan("indi.lwc.springboot2.dao") //扫描该包下的接口
public class Springboot2Application {

    public static void main(String[] args) {
        SpringApplication.run(Springboot2Application.class, args);
    }

}

5,编写业务相关代码(大家根据自己的需求编写),

package com.example.servicehello.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;

import java.util.Date;

public class Emp {
    private Integer eno;
    private String ename;
    private String esex;
    private Float sal;
    private Integer dno;
    private Date join_date;
    private Integer elevel;
    private String password;
    private String face;


    public Emp(){}

    public Emp(String eName){
        this.ename = eName;
    }

    public Integer getEno() {
        return eno;
    }

    public void setEno(Integer eno) {
        this.eno = eno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public String getEsex() {
        return esex;
    }

    public void setEsex(String esex) {
        this.esex = esex;
    }

    public Float getSal() {
        return sal;
    }

    public void setSal(Float sal) {
        this.sal = sal;
    }

    public Integer getDno() {
        return dno;
    }

    public void setDno(Integer dno) {
        this.dno = dno;
    }


    public Date getJoin_date() {
        return join_date;
    }

    public void setJoin_date(Date join_date) {
        this.join_date = join_date;
    }

    public Integer getElevel() {
        return elevel;
    }

    public void setElevel(Integer elevel) {
        this.elevel = elevel;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getFace() {
        return face;
    }

    public void setFace(String face) {
        this.face = face;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "eno=" + eno +
                ", ename='" + ename + '\'' +
                ", esex='" + esex + '\'' +
                ", sal=" + sal +
                ", dno=" + dno +
                ", join_date=" + join_date +
                ", elevel=" + elevel +
                ", password='" + password + '\'' +
                '}';
    }
}
package com.example.servicehello.mapper;

import com.example.servicehello.entity.Emp;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface EmpDao {

    /**
     * 根据员工名and密码查询员工
     * @param ename
     * @param password
     * @return
     */
   Emp queryEmpByNameAndPwd(@Param("ename") String ename,
                            @Param("password") String password);

    /**
     * 根据员工编号查询员工
     * @param eno
     * @return
     */
   Emp queryEmpByEno(int eno);

    /**
     * 查询用户
     * @param emp
     * @return
     */
   List<Emp> queryEmps(@Param("emp") Emp emp,
                       @Param("pageIndex") int pageIndex,
                       @Param("pageSize") int pageSize);

    /**
     * 新增用户
     * @param emp
     * @return
     */
   int insertEmp(@Param("emp") Emp emp);

    /**
     * 更新员工
     * @param emp
     * @return
     */
   int updateEmp(@Param("emp") Emp emp);


    /**
     * 根据id删除员工
     * @param eno
     * @return
     */
   int deleteEmpById(int eno);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "htt//mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.servicehello.mapper.EmpDao">
    <sql id="queryEmp">
        select * from emp
    </sql>
    <select id="queryEmpByNameAndPwd" resultType="com.example.servicehello.entity.Emp">
        <include refid="queryEmp"></include>
        where ename=#{ename} and password=#{password}
    </select>
    <select id="queryEmps" resultType="com.example.servicehello.entity.Emp">
        <include refid="queryEmp"></include>
        <where>
            <if test="emp!=null and emp.ename!=null">
                and ename = #{emp.ename}
            </if>
            <if test="emp!=null and emp.esex!=null">
                and esex = #{emp.esex}
            </if>
            <if test="emp !=null and emp.dno!=null">
                and dno = #{dno}
            </if>
        </where>
        LIMIT #{pageIndex},#{pageSize}
    </select>
    <select id="queryEmpByEno" resultType="com.example.servicehello.entity.Emp">
        <include refid="queryEmp"></include>
        where eno = #{eno}
    </select>
    <insert id="insertEmp" keyProperty="eno" keyColumn="eno">
        insert emp(ename,esex,sal,dno,join_date,elevel,password) value
        (
            #{emp.ename},
            #{emp.esex},
            #{emp.sal},
            #{emp.dno},
            #{emp.join_date},
            #{emp.elevel},
            #{emp.password}
        )
    </insert>
    <update id="updateEmp">
        update  emp
        <set>
            <if test="emp!=null and emp.ename!=null">
                ename = #{emp.ename},
            </if>
            <if test="emp!=null and emp.esex!=null">
                esex = #{emp.esex},
            </if>
            <if test="emp!=null and emp.sal!=null">
                sal  = #{emp.sal},
            </if>
            <if test="emp!=null and emp.dno!=null">
                dno = #{emp.dno},
            </if>
            <if test="emp!=null and emp.elevel!=null">
                elevel = #{emp.elevel}
            </if>
        </set>
        where eno = #{emp.eno}
    </update>
    <delete id="deleteEmpById">
        delete from emp where eno = #{eno}
    </delete>
</mapper>

6,最后我们用测试类来测试一下。

package com.example.springbootdemothymeleafview.mapper;


import com.example.springbootdemothymeleafview.BaseTest;
import com.example.springbootdemothymeleafview.entity.Emp;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;


import java.util.Date;
import java.util.List;


public class EmpDaoTest extends BaseTest {

    @Autowired
    private EmpDao empDao;



    @Test
    public void testQueryEmps(){
        List<Emp> list = empDao.queryEmps(new Emp(),4,5);
        for (Emp e: list
             ) {
            System.out.println(e.toString());
        }
    }

    @Test
    public void testQeuryEmpByEno(){
       Emp emp =  empDao.queryEmpByEno(1);
       System.out.println(emp.toString());
    }

    @Test
    public void testDeleteEmpById(){
        int effectNumer = empDao.deleteEmpById(1);
        System.out.println("====="+effectNumer);
    }


    @Test void testInsertEmp(){
        Emp emp = new Emp();
        emp.setEname("test");
        emp.setEsex("test");
        emp.setJoin_date(new Date());
        emp.setSal(212F);
        emp.setPassword("123456");
        emp.setFace("test");
        emp.setDno(1);
        emp.setElevel(1);

        empDao.insertEmp(emp);
    }


    @Test
    public void testUpdateEmp(){
        Emp emp = new Emp();
        emp.setEno(1);
        emp.setEname("test");
        emp.setEsex("test");
        emp.setJoin_date(new Date());
        emp.setSal(212F);
        emp.setPassword("123456");
        emp.setFace("test");
        emp.setDno(1);
        emp.setElevel(1);

        empDao.updateEmp(emp);
    }

}

源代码:

https://download.csdn.net/download/qq_44538738/12313981

1. 添加MyBatisMyBatis-SpringBoot-Starter依赖 在pom.xml文件中添加以下依赖: ``` <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> ``` 2. 配置数据源 在application.properties或application.yml中配置数据源信息,如: ``` spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8 spring.datasource.username=root spring.datasource.password=root ``` 3. 创建实体类和Mapper接口 创建实体类和对应的Mapper接口,如: ``` public class User { private Long id; private String username; private String password; // getter and setter } public interface UserMapper { List<User> findAll(); User findById(Long id); void insert(User user); void update(User user); void delete(Long id); } ``` 4. 创建Mapper XML文件 在resources目录下创建Mapper XML文件,定义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.example.mapper.UserMapper"> <resultMap id="BaseResultMap" type="com.example.model.User"> <id column="id" property="id" /> <result column="username" property="username" /> <result column="password" property="password" /> </resultMap> <select id="findAll" resultMap="BaseResultMap"> SELECT * FROM user </select> <select id="findById" resultMap="BaseResultMap"> SELECT * FROM user WHERE id=#{id} </select> <insert id="insert"> INSERT INTO user (username, password) VALUES (#{username}, #{password}) </insert> <update id="update"> UPDATE user SET username=#{username}, password=#{password} WHERE id=#{id} </update> <delete id="delete"> DELETE FROM user WHERE id=#{id} </delete> </mapper> ``` 5. 注册Mapper 在Spring Boot中,可以使用@MapperScan注解扫描Mapper接口,并自动注册到Spring容器中,如: ``` @SpringBootApplication @MapperScan("com.example.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } } ``` 6. 调用Mapper方法 在Service或Controller中注入Mapper,并调用Mapper方法,如: ``` @Service public class UserService { @Autowired private UserMapper userMapper; public List<User> findAll() { return userMapper.findAll(); } public User findById(Long id) { return userMapper.findById(id); } public void insert(User user) { userMapper.insert(user); } public void update(User user) { userMapper.update(user); } public void delete(Long id) { userMapper.delete(id); } } ``` 以上就是使用Spring Boot集成MyBatis实现增删改查的步骤。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不像程序猿的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值