Mybatis框架整合详解(从数据库创建—到—框架搭建—再到—输出) 2

简介: Mybatis框架整合详解(从数据库创建—到—框架搭建—再到—输出)

创建dao层——重中之重

基础sql

先创建一个Mapper接口,再简单的写个增、删、改、查接口

package com.xinxi2.dao;
import com.xinxi2.bean.Student;
import java.util.List;
public interface StudentMapper {
    List<Student> getList();
    int addStudent(Student student);
    int updateStudent(Student student);
    int deleteStudentbyId(int id);
}

再创建一个Mapper的XML配置文件来实现这个接口

映射规则

mapper标签中的namespace属性映射的是你刚刚创建的Mapper接口,映射的是你刚刚创建的Mapper接口的地址,映射完毕后Mapper接口和MapperXML配置文件的图标会变为一直蓝鸟和一直红鸟如果没有去网上搜索一下,下载一个idea中的Mybatis插件就好了,巨简单,我就不教了。

SpringXMl实现接口

<?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.xinxi2.dao.StudentMapper">
    <select id="getList" resultType="com.xinxi2.bean.Student">
        SELECT id,name,bigname,riqi,GradeID,age FROM student
    </select>
    <insert id="addStudent" parameterType="com.xinxi2.bean.Student" keyProperty="id" keyColumn="id" useGeneratedKeys="true">
        insert into student(id,name,bigname,riqi,GradeID,age)
        values (#{id},#{name},#{bigname},#{riqi},#{gradeid},#{age})
    </insert>
    <update id="updateStudent" parameterType="com.xinxi2.bean.Student">
        update student
        set name=#{name},bigname={bigname},riqi=#{riqi},GradeID=#{gradeid},age=#{age}
        where id=#{id}
    </update>
    <delete id="deleteStudentbyId" parameterType="int">
        delete from student where id=#{id}
    </delete>
</mapper>

你们应该也发现了每个标签都有大差不差的属性,下面是我认为常用的一些属性

常用属性

id (都能用)与namespace接口中对应的方法作的映射
parameterType (都能用)传入的参数格式
resultType (用于查询)返回的数据类型,当返回多个参数的时候,建议使用 resultMap
resultMap (用于查询)返回的数据类型,相当于对 resultType的封装。resultType、resultMap两者只能存在一个如果使用resultMap的话要把查询出来的几列数据都要声明一下。

image.png

基础sql测试

测试的漏洞

在测试之前我们要先把dao层的MapperXML配置文件放在target里面的dao层中


测试时是运行target里面的代码,我们这样写现在是有一点问题因为还没有学spring框架,这样写方便学习(注意)每次编写完一次MapperXML的文件都要复制进来一次

开始测试

package com.xinxi2;
import com.xinxi2.bean.Student;
import com.xinxi2.dao.StudentMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
public class Test {
    public static void main(String[] args) {
        //声明mybatis配置文件
        String resources="mybatis.xml";
        InputStream inputStream=null;
        SqlSessionFactory sqlSessionFactory=null;
        //获得sqlSession对象
        SqlSession sqlSession=null;
        try {
            inputStream= Resources.getResourceAsStream(resources);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession=sqlSessionFactory.openSession();
            //创建StudentDao层对象
            StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
            List<Student> list=studentMapper.getList();
            for (Student student:list){
                System.out.println(student.getName());//输出name
            }
            Student student=new Student();
            student.setName("牛牛");
            student.setBigname("牛圈");
            student.setRiqi(new Date());
            student.setGradeid(1);
            student.setAge(18);
            studentMapper.addStudent(student);
            //新镇修改删除都要有提交事务
            sqlSession.commit();
            //新增后获取的自增id
            System.out.println(student.getId());
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //关闭sqlSession
            sqlSession.close();
        }
    }
}

修改和删除就先省略了,我相信你会

进阶带参sql查询

单参数方式

一个参数的情况下但是两个参数呐?这时候就需要用到我们的@Param()注解了

@Param()注解方式


如果有两个及以上参数并且使用了@Param()注解就不需要parameterType属性了

Map方式

如果使用map方式的话在测试时,要把map当作数组来使用,sql中的#{name}要在创建map键值里要有一个k值是name

实体类方式

上面的三种方式是在特殊的情况下使用,真正常用的是实体类的方式

实体类方式测试
package com.xinxi2;
import com.xinxi2.bean.Student;
import com.xinxi2.dao.StudentMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
public class Test {
    public static void main(String[] args) {
        //声明mybatis配置文件
        String resources="mybatis.xml";
        InputStream inputStream=null;
        SqlSessionFactory sqlSessionFactory=null;
        //获得sqlSession对象
        SqlSession sqlSession=null;
        try {
            inputStream= Resources.getResourceAsStream(resources);
            sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
            sqlSession=sqlSessionFactory.openSession();
            //创建StudentDao层对象
            Student student=new Student();
            student.setName("牛牛");
            student.setBigname("牛圈");
            student.setId(1);
            StudentMapper studentMapper=sqlSession.getMapper(StudentMapper.class);
            List<Student> list=studentMapper.getListbyStudent(student);
            for (Student student1:list){
                System.out.println(student1.getName());//输出name
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //关闭sqlSession
            sqlSession.close();
        }
    }
}


相关文章
|
1月前
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
116 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
2月前
|
SQL Java 数据库连接
对Spring、SpringMVC、MyBatis框架的介绍与解释
Spring 框架提供了全面的基础设施支持,Spring MVC 专注于 Web 层的开发,而 MyBatis 则是一个高效的持久层框架。这三个框架结合使用,可以显著提升 Java 企业级应用的开发效率和质量。通过理解它们的核心特性和使用方法,开发者可以更好地构建和维护复杂的应用程序。
139 29
|
1天前
|
SQL 缓存 Java
框架源码私享笔记(02)Mybatis核心框架原理 | 一条SQL透析核心组件功能特性
本文详细解构了MyBatis的工作机制,包括解析配置、创建连接、执行SQL、结果封装和关闭连接等步骤。文章还介绍了MyBatis的五大核心功能特性:支持动态SQL、缓存机制(一级和二级缓存)、插件扩展、延迟加载和SQL注解,帮助读者深入了解其高效灵活的设计理念。
|
2月前
|
SQL Java 数据库连接
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
161 6
|
2月前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
93 2
|
4月前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
657 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
4月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
84 1
持久层框架MyBatisPlus
|
4月前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
75 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
4月前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
5月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
975 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库