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月前
|
SQL Java 数据库连接
深入 MyBatis-Plus 插件:解锁高级数据库功能
Mybatis-Plus 提供了丰富的插件机制,这些插件可以帮助开发者更方便地扩展 Mybatis 的功能,提升开发效率、优化性能和实现一些常用的功能。
173 26
深入 MyBatis-Plus 插件:解锁高级数据库功能
|
1月前
|
SQL Java 数据库连接
持久层框架MyBatisPlus
持久层框架MyBatisPlus
42 1
持久层框架MyBatisPlus
|
1月前
|
SQL 安全 Java
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。Wrapper 类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。
23 1
MyBatis-Plus条件构造器:构建安全、高效的数据库查询
|
18天前
|
SQL Java 数据库连接
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
canal-starter 监听解析 storeValue 不一样,同样的sql 一个在mybatis执行 一个在数据库操作,导致解析不出正确对象
|
2月前
|
Java 关系型数据库 MySQL
springboot学习五:springboot整合Mybatis 连接 mysql数据库
这篇文章是关于如何使用Spring Boot整合MyBatis来连接MySQL数据库,并进行基本的增删改查操作的教程。
151 0
springboot学习五:springboot整合Mybatis 连接 mysql数据库
|
2月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
66 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
2月前
|
缓存 Cloud Native 安全
探索阿里巴巴新型ORM框架:超越MybatisPlus?
【10月更文挑战第9天】在Java开发领域,Mybatis及其增强工具MybatisPlus长期占据着ORM(对象关系映射)技术的主导地位。然而,随着技术的发展,阿里巴巴集团推出了一种新型ORM框架,旨在提供更高效、更简洁的开发体验。本文将对这一新型ORM框架进行探索,分析其特性,并与MybatisPlus进行比较。
47 0
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
4月前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
57 1
|
4月前
|
SQL 关系型数据库 MySQL
解决:Mybatis-plus向数据库插入数据的时候 报You have an error in your SQL syntax
该博客文章讨论了在使用Mybatis-Plus向数据库插入数据时遇到的一个常见问题:SQL语法错误。作者发现错误是由于数据库字段中使用了MySQL的关键字,导致SQL语句执行失败。解决方法是将这些关键字替换为其他字段名称,以避免语法错误。文章通过截图展示了具体的操作步骤。