Mybatis简单的CURD

简单说明使用感觉

Mybatis的使用不像javaEE那边的Servlet那样和数据库链接要写很多请求try,catch,还要关闭连接,反反复复的判断,就算是一写代码可以复用也得写好多。而Mybatis使用方便,在配置文件中连接完数据就可以使用起来,语法也相对轻松许多。

连接数据库的配置文件

# 应用名称
spring.application.name=demo

#数 据 源 配 置
spring.datasource.url=jdbc:mysql://localhost:3306/数据库名?characterEncoding=UTF-8&serverTimezone=GMT
spring.datasource.username=账号
spring.datasource.password=密码
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#统一编码
server.servlet.encoding.charset=UTF-8
server.servlet.encoding.enabled=true
server.tomcat.uri-encoding=UTF-8

# 应用服务 WEB 访问端口
server.port=8080
#下面这些内容是为了让MyBatis映射
#指定Mybatis的实体目录
mybatis.type-aliases-package=com.example.demo.mybatis.entity
#指定MybatisMapper文件
mybatis.mapper-locations=classpath:mappers/*xml

这种简单的配置连接网上也挺多的,基本上非常容易就上手,然后就开始CURD了

Mybatis的CURD

我这里就拿我做的demo为例子
先写个实体类放在entity包里面,在写个mapper包下的对应实体类的接口文件(比如你实体类叫User,那么接口就可叫UserMapper,比较方便记忆)
而在写在接口中的抽象方法需要在mappers文件夹下的xml文件下实现,这个mappers文件夹下的xml主要写sql语句与mapper包下的接口一一对应。
最后在controller包下写接口,然后在里面调用mapper包的接口就可以实现CURD
下面就来看看代码:
实体类(对应数据库表中的相应列名)

@Data
public class Student {

    private Integer studentID;

    private String className;

    private String studentName;

    private String studentSex;

    private Date studentCreateTime;

    private Date studentReworkTime;

    private Integer studentDelete;

    private Date addClassTime;
}

mapper接口:

@Mapper
@Component
public interface MybatisDemoStudentMapper {

    //返回所有信息
    List<MybatisDemoStudent> findAll();
    //根据名字查询
    MybatisDemoStudent findByName(String studentName);
    //添加信息
    void addStudent(MybatisDemoStudent student);
    //删除信息(物理删除)
    void deleteStudent(Integer studentID);
    //更新信息
    void updateStudent(MybatisDemoStudent student);
}

mappers文件夹下的xml文件:

<?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.mybatis.mapper.MybatisDemoStudentMapper">
    <select id="findAll" resultType="com.example.demo.mybatis.entity.MybatisDemoStudent">
        SELECT * FROM student_dp
    </select>

    <select id="findByName" parameterType="string" resultType="com.example.demo.mybatis.entity.MybatisDemoStudent">
        select * from student_dp where student_dp.studentName = #{studentName}
    </select>

    <insert id="addStudent" parameterType="com.example.demo.mybatis.entity.MybatisDemoStudent">
        insert into student_dp(className,studentName,studentSex,studentCreateTime,studentReworkTime,
        addClassTime,studentDelete)
             values(#{className},#{studentName},#{studentSex},#{studentCreateTime},#{studentReworkTime},
             #{addClassTime},#{studentDelete})
        <selectKey  resultType="java.lang.Integer" keyProperty="studentID" order="AFTER">
            SELECT LAST_INSERT_ID() AS studentID
        </selectKey>
    </insert>

    <delete id="deleteStudent" parameterType="integer" >
        delete from student_dp where studentID = #{studentID}
    </delete>

    <update id="updateStudent" parameterType="com.example.demo.mybatis.entity.MybatisDemoStudent" >
        update student_dp set className = #{className},studentName = #{studentName}, studentSex = #{studentSex},
        studentCreateTime = #{studentCreateTime}, studentReworkTime = #{studentReworkTime},
        addClassTime = #{addClassTime}, studentDelete = #{studentDelete} where studentID = #{studentID}
    </update>

</mapper>

xml文件主要写简单的数据库操作,而复杂的数据库操作又得多个简单操作复合在一起,这就得写在service中对mapper接口继承,然后写复杂数据库操作在新的方法中。这里就不详细说明了。
最后就是写反馈前端的接口了:
controller包下的接口文件

@RestController
@RequestMapping("/studentmybatis")
public class MybatisDemoStudentController {

    @Autowired
    private MybatisDemoStudentMapper mybatisDemoStudentMapper;

    /**
     * http://127.0.0.1:8080/studentmybatis/findAll
     * @return 返回学生表所有信息
     */
    @GetMapping("/findAll")
    public List<MybatisDemoStudent> findAll(){
        return mybatisDemoStudentMapper.findAll();
    }

    /**
     * http://127.0.0.1:8080/studentmybatis/findByName?name=
     * @param name 学生姓名
     * @return 返回查询学生的信息
     */
    @GetMapping("/findByName")
    public MybatisDemoStudent findByName (@RequestParam("name") String name){
        return mybatisDemoStudentMapper.findByName(name);
    }

    /**
     * 基本功能:增加学生
     * http://127.0.0.1:8080/studentmybatis/addStudent
     * @return http://127.0.0.1:8080/studentmybatis/findAll
     */
    @GetMapping("/addStudent")
    public String addStudnet(){
        SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" );
        Date date= new Date();
        simpleDateFormat.format(date.getTime());
        MybatisDemoStudent student = new MybatisDemoStudent();
        student.setClassName("普通一班");
        student.setAddClassTime(date);
        student.setStudentDelete(0);
        student.setStudentName("刘近");
        student.setStudentSex("女");
        student.setStudentCreateTime(date);
        student.setStudentReworkTime(date);
        mybatisDemoStudentMapper.addStudent(student);
        return "http://127.0.0.1:8080/studentmybatis/findAll";
    }

    /**
     * 基本功能:删除学生
     * http://127.0.0.1:8080/studentmybatis/deleteStudent?studentID=
     * @param studentID 学生编号
     * @return http://127.0.0.1:8080/studentmybatis/findAll
     */
    @GetMapping("/deleteStudent")
    public String deleteStudent(@RequestParam("studentID") Integer studentID) {
        mybatisDemoStudentMapper.deleteStudent(studentID);
        return "http://127.0.0.1:8080/studentmybatis/findAll";
    }

    /**
     * 基本功能:修改学生信息
     * http://127.0.0.1:8080/studentmybatis/updateStudent
     * @return http://127.0.0.1:8080/studentmybatis/findAll
     */
    @GetMapping("/updateStudent")
    public String updateStudent(){
        SimpleDateFormat simpleDateFormat =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" );
        Date date= new Date();
        simpleDateFormat.format(date.getTime());
        MybatisDemoStudent student = new MybatisDemoStudent();
        student.setStudentID(9);
        student.setClassName("普通一班");
        student.setAddClassTime(date);
        student.setStudentDelete(0);
        student.setStudentName("刘近");
        student.setStudentSex("男");
        student.setStudentCreateTime(date);
        student.setStudentReworkTime(date);
        mybatisDemoStudentMapper.updateStudent(student);
        return "http://127.0.0.1:8080/studentmybatis/findAll";
    }

看上有点多,主要是没前端页面不好测试添加修改数据,就直接在代码中写死了,但当有前端页面的时候只要传Bean的实体对象就行了。

这样就完成CURD了,接口显示的都是一堆字符串,信息内容正确即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值