Mybatis入门(1)

mybatis 在前端对数据库进行增删改查和登录注册 Springboot 对数据库进行增删改查 首先要实现在idea里面能实现对数据看的增删改查,最后再实现前后端交互 1.首先在数据库里面先建好数据库(test01)和表(t_user) 2.配置文件pom.xml <?xml version="1.0" encoding="UTF-8"?&g 阅读详情

MyBatis简介

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

介绍接不多说了,下面开始写代码

准备事项

开发工具:IDEA, Idea中需要安装插件MyBatis plugin来支持开发MyBatis,这个插件非常的有用,安装和具体的作用,大家百度哈,这里只将mybatis

新建工程

在idea中新建一个简单的java工程,创建成功后的目录如下:

然后准备mybatis的包和连接数据库所用的包

mybatis的包,大家可以去 http://github.com/mybatis/mybatis-3/releases下载,还有一个大家需要到网上下载,我把这两个包上传到优快云上了,大家可以去下优快云地址,百度云地址,提取码dbjv

在工程下面新建一个lib目录,将这个两个包放在lib目录下面

这里还没有结束,还要在项目中显示报这两个包导入到依赖中去,点击file ->project structure->Modules->Dependecies,然后点击+号,选择第一个

创建数据库和表

在创建实体类前,我们先创建表,创建一个test数据库,再创建一个user表,并插入两行数据

DROP DATABASE IF EXISTS test;
CREATE DATABASE test DEFAULT CHARACTER SET utf8;

use test;
CREATE TABLE user(
  id int(11) NOT NULL AUTO_INCREMENT,
  user_name varchar(255) NOT NULL,
  password varchar(255) NOT NULL,
  age int(11) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO user VALUES(1,'guolin','123456',18);
INSERT INTO user VALUES(2,'love','123456',18);

创建实体类

在src下创建一个dto的包,并dto包下创建一个User的实体类

package dto;

public class User {
    private Integer id;
    private String userName;
    private String password;
    private Integer age;

    /*setter and getter*/
}

然后在src下面创建一个resources的包,并将其设置项目resources模块,具体操作,单击file -> project structure -> Modules:当resources文件夹右下角出现一个黄色小图标时就ok

 

将resources包设置成项目的resources模块后,接下来的我们的配置文件,以及实体类对应的xml文件都放在它下面

创建配置文件mybatis.xml

在resources下面新建一个mybatis的xml文件,填入一下配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 驼峰转换 -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="admin"/>
            </dataSource>
        </environment>
    </environments>
    
</configuration>

配置User.xml

resources下新建一个mapper文件,然后在mapper下新建一个User.xml,项目中与实体类映射的xml我们都放到mapper下

<?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="dto">
    <select id="listUser" resultType="dto.User">
      select * from user;
    </select>
</mapper>

这里namespace为dto,我们这里还没有使用接口绑定,所以指向的是我们的实体类的包,这里引用一下官网的解释

然后我们写了一个select语句,id为listUser,resultType表示返回类型,我们这里是User类型,然后我们要到mybatis中配置一下,这样mybatis才能找到我们user.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!-- 驼峰转换 -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true" />
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="admin"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 映射文件 -->
    <mappers>
        <mapper resource="mapper/User.xml"/>
    </mappers>
</configuration>

测试类

在src下新建一个test包,在包下新建一个Test类

package test;

import dto.User;
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.List;

public class Test {
    public static void main(String[] args) throws Exception{
        // 根据 mybatis-config.xml 配置的信息得到 sqlSessionFactory
        String resource = "mybatis.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 然后根据 sqlSessionFactory 得到 session
        SqlSession session = sqlSessionFactory.openSession();
        // 最后通过 session 的 selectList() 方法调用 sql 语句 listStudent
        List<User> listStudent = session.selectList("listUser");
        for (User user : listStudent) {
            System.out.println("ID:" + user.getId() + ",NAME:" + user.getUserName());
        }
    }
}

运行结果

增删改查

在User.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="dto">
    <select id="listUser" resultType="dto.User">
      select * from user;
    </select>

    <insert id="addUser" parameterType="dto.User">
        insert into user (id, user_name,password,age)
        values(#{id},#{userName},#{password},#{age})
    </insert>

    <delete id="deleteUser" parameterType="dto.User">
        delete from user where id = #{id}
    </delete>

    <update id="updateUser" parameterType="dto.User">
        update user set user_name = #{userName},password = #{password} where id = #{id}
    </update>

    <select id="selectUserById" parameterType="java.lang.Integer" resultType="dto.User">
        select * from user where id = #{id}
    </select>
</mapper>

测试类

package test;

import dto.User;
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.List;

public class Test {
    public static void main(String[] args) throws Exception{
        // 根据 mybatis-config.xml 配置的信息得到 sqlSessionFactory
        String resource = "mybatis.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 然后根据 sqlSessionFactory 得到 session
        SqlSession session = sqlSessionFactory.openSession();

        //增加语句
        User user1 = new User();
        user1.setId(3);
        user1.setUserName("xuchao");
        user1.setPassword("123456");
        user1.setAge(18);
        session.insert("addUser",user1);

        //删除语句
        User user2 = new User();
        user1.setId(1);
        session.delete("deleteUser",user2);

        //根据id查询单个user信息
        User user3 = session.selectOne("selectUserById",2);

        //更新语句
        user3.setUserName("chenzixin");
        user3.setPassword("1997");
        session.update("updateUser",user3);

        // 最后通过 session 的 selectList() 方法调用 sql 语句 listStudent
        List<User> listStudent = session.selectList("listUser");
        for (User user : listStudent) {
            System.out.println("ID:" + user.getId() + ",NAME:" + user.getUserName() + ",PASSWOED:" + user.getPassword());
        }
        session.commit(); //提交修改
        session.close();  //关闭
    }
}

新增一个id为3的user,然后删除id为1的用户,根据id查询为2的用户,最后修改用户2的信息,运行结果如下:

MyBatis高级映射

一对一查询,首先我们将user的数据全部删除,然后再将创建一张card表,并重新在user表中插入两条数据,card表也插入两条数据

use test;

create table card(
    id int(11) NOT NULL auto_increment,
    id_card int(11) NOT NULL,
    primary key(id)

)ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO user VALUES(1,'guolin','123456',18);
INSERT INTO user VALUES(2,'chenzixin','123456',18);

INSERT INTO card VALUES(1,1996);
INSERT INTO card VALUES(2,1997);

这里的user中的id与card中id是对应的,没有再设置外键,下面来看一下我们的sql语句

使用resultType

mybatis有两种属性来表示返回类型resultType和resultMap,我们先来看第一种

resultType返回期望类型的类的完全限定名或别名,我们要新建一个java实体类来映射我们上述的一对一的结果

在dto包下面新建一个OneToOne类

package dto;

public class OneToOne {
    private Integer id;
    private String userName;
    private String password;
    private Integer age;
    private Integer idCard;
    
    /* setter and getter */
}

在上面的User.xml中增加如下的<select>类型的查询语句

<select id="findByIdCard" parameterType="java.lang.Integer" resultType="dto.OneToOne">
        select
	      user.*,
          card.*
        from
	      user,card
        where user.id = card.id and card.id_card = #{v};
</select>

测试类

package test;

import dto.OneToOne;
import dto.User;
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.HashMap;
import java.util.List;
import java.util.Map;

public class Test {
    public static void main(String[] args) throws Exception{
        // 根据 mybatis-config.xml 配置的信息得到 sqlSessionFactory
        String resource = "mybatis.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 然后根据 sqlSessionFactory 得到 session
        SqlSession session = sqlSessionFactory.openSession();

        OneToOne one = session.selectOne("findByIdCard",1997);
        System.out.println(one);

        session.commit(); //提交修改
        session.close();  //关闭
    }
}

运行结果

上面打印使用log4j打印出了sql,大家可以配置一下,首先在lib目录下导入log4j-1.2.17.jar(这里是我使用的版本号,大家也可以使用别的版本)的包,然后在src新建log4j.properties配置文件,并输入一下内容:

log4j.rootLogger=DEBUG, stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%-5p] %c - %m%n
#show sql
log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG 

使用resultMap

先来创建card表的实体类,dto包中新建Card类

package dto;

public class Card {
    private Integer id;
    private Integer idCard;
    private User user;   //引入一个User对象

    /* seeter and getter */
   
}

然后我们再新建一个Card.xml,同样是放在mapper目录下,使用resultMap来实现上诉例子

<?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="dto">
    <resultMap id="resultByCard" type="dto.Card">
        <id property="id" column="id"/>
        <result property="idCard" column="id_card"/>
        <association property="user" javaType="dto.User">
            <id property="id" column="id"/>
            <result property="userName" column="user_name"/>
            <result property="password" column="password"/>
            <result property="age" column="age"/>
        </association>
    </resultMap>
    
    <select id="selectByCard" parameterType="java.lang.Integer" resultMap="resultByCard">
      select
	      user.*,
           card.*
        from
	      user,card
        where user.id = card.id and card.id_card = #{v};
    </select>
</mapper>

这里需要在mybatis.xml中配置一下,不然mybatis就无法找到我们这些映射的文件

    <!-- 映射文件 -->
    <mappers>
        <mapper resource="mapper/User.xml"/>
        <mapper resource="mapper/Card.xml"/>
    </mappers>

测试类

package test;

import dto.Card;
import dto.OneToOne;
import dto.User;
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.HashMap;
import java.util.List;
import java.util.Map;

public class Test {
    public static void main(String[] args) throws Exception{
        // 根据 mybatis-config.xml 配置的信息得到 sqlSessionFactory
        String resource = "mybatis.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 然后根据 sqlSessionFactory 得到 session
        SqlSession session = sqlSessionFactory.openSession();

        Card one = session.selectOne("selectByCard",1997);
        System.out.println(one);

        session.commit(); //提交修改
        session.close();  //关闭
    }
}

运行结果

这里查询一个idCard为1997的用户信息,如何想的上面这个输出值,Card和User类需要添加toString()方法,否者你得到只会是类在jvm中的地址串

一对多映射

下面我们来看看一对多映射,这里我们再重新建两张表,class表和student表,在class表中只插入条数据,student中插入两条

use test;

CREATE TABLE class(
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE student(
  id int(11) NOT NULL AUTO_INCREMENT,
  name varchar(255) NOT NULL,
  class_id int(11) NOT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


INSERT INTO class VALUES(1,'一班');

INSERT INTO student VALUES(1,'guolin',1);
INSERT INTO student VALUES(2,'chenzixin',1)

然后来看一下我们这次的sql语句

实体类

创建实体类Class1和Student,还是位于dto包下,因为Class是java中的关键字,所以我们用Class1

package dto;

import java.util.List;

public class Class1 {
    private Integer id;
    private String name;
    List<Student> list; 

    /* setter and getter */
}


package dto;

public class Student {
    private Integer id;
    private String name;
    private Integer classId;
    
    /* setter and getter */
}


上面Class1中引用了一个包含Student对象的list对象,表明一个班中包含哪些学生,下面创建Class1.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="dto">
    <resultMap id="resultByClass1" type="dto.Class1">
        <id property="id" column="id"/>
        <result property="name" column="name"/>
        <collection property="list" ofType="dto.Student">
            <id property="id" column="id"/>
            <result property="name" column="name"/>
            <result property="classId" column="class_id"/>
        </collection>
    </resultMap>

    <select id="selectByClass1" parameterType="java.lang.Integer" resultMap="resultByClass1">
      select
	class.*,
        student.*
      from
	    class,student
      where class.id = student.class_id and class.id= #{parameter};
    </select>
</mapper>

测试类

package test;

import dto.*;
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.HashMap;
import java.util.List;
import java.util.Map;

public class Test {
    public static void main(String[] args) throws Exception{
        // 根据 mybatis-config.xml 配置的信息得到 sqlSessionFactory
        String resource = "mybatis.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        // 然后根据 sqlSessionFactory 得到 session
        SqlSession session = sqlSessionFactory.openSession();

        Class1 one = session.selectOne("selectByClass1",1);
        System.out.println(one);
        
        session.commit(); //提交修改
        session.close();  //关闭
    }
}

运行结果

这里的结果有问题,list中应该有两条数据,Total也打印的是2,证明应该有两条,还有就是list中的name应该是student的名字,这里看上去被class的name覆盖了。百度后发现原因是由于class中的name属性覆盖了student中的name属性,至于为什么明明查出来两条数据,最后只打印一条的原因是因为class表和student表的id相同导致。

具体原因请参见此博客

下面我们来修改,修改Class1.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="dto">
    <resultMap id="resultByClass1" type="dto.Class1">
        <id property="id" column="c_id"/>
        <result property="name" column="s_name"/>
        <collection property="list" ofType="dto.Student">
            <id property="id" column="s_id"/>
            <result property="name" column="s_name"/>
            <result property="classId" column="class_id"/>
        </collection>
    </resultMap>

    <select id="selectByClass1" parameterType="java.lang.Integer" resultMap="resultByClass1">
        select
            c.id as c_id,
            c.name as c_name,
            s.id as s_id,
            s.name as s_name,
            s.class_id
        from
            class c,student s
        where c.id = s.class_id and c.id= 1;
    </select>
</mapper>

这里我们为class和student分别取了别分,其中id和那么字段也取了别名,同时resultMap中的column也要相应修改

测试类不改,再次运行

结果正确,list中两条数据,并且name属性也没有被覆盖

多对多映射

 

1.Mybatis入门 Mybatis入门+jdbc了解+数据库连接池(共享单车)+lombok(简化java开发) 阅读详情

相关推荐

使用Dify打造视频生成工作流:从提示词到视频的完整指南

Dify作为开源LLM应用开发平台,通过可视化工作流编排实现从文本到视频的端到端生成,将创意周期从天级缩短至分钟级。核心流程包括提示词工程、视频API调用、存储分发和结果反馈。

牛奶夹心巧克力 3436

Mybatis XML配置和session.方式增删改查

环境搭建参考上一章,本节内容通过更新userMapper.xml和test测试类实现增删改查 1、userMapper.xml代码 &lt;?xml version="1.0" encoding="UTF-8" ?&gt; &lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.o...

tangbin0505的博客 595

STC8H DMA 串口1全双工中断方式收发通讯C语言

串口1全双工中断方式收发通讯程序。 通过PC向MCU发送数据, MCU将收到的数据自动存入DMA空间. 当DMA空间存满设置大小的内容后,通过串口1的DMA自动发送功能把存储空间的数据原样返回. 用定时器做波特率发生器,建议使用1T模式(除非低波特率用12T),并选择可被波特率整除的时钟频率,以提高精度。

czhaii的专栏 1467

MyBatis(1)

MyBatis开发入门一、MyBatis简介1.简介2. 与Hibernate的区别二、MyBatis环境的构建三、MyBatis的工作原理四、开发MyBatis入门程序1. 创建web项目,并添加相关jar包2.创建日志文件3.创建持久化类4.创建映射文件5.创建mybatis的配置文件6.创建测试类 MyBatis是主流的Java持久层框架之一,它与Hibernate一样,也是有一种ORM(Object/Relational Mapping,及对象关系映射)框架。具有性能优异、高度的灵活性、可优化性、

weixin_42322925的博客 1951

国科大学习资料--高级软件工程-复习题选择题答案

国科大学习资料–高级软件工程(罗铁坚 魏峻 刘丹)-复习题选择题答案 ’‘

无名何许人的博客 1166

AI Agent的数据安全与隐私保护措施

AI Agent(人工智能代理)作为一种能够感知环境、做出决策并采取行动的智能实体,在现代社会的各个领域中得到了广泛的应用,如智能客服、自动驾驶、金融风险评估等。随着其应用的不断拓展,AI Agent处理和存储的数据量急剧增加,这些数据包含了大量的个人敏感信息和商业机密。因此,确保AI Agent的数据安全与隐私保护变得至关重要。本文的目的在于全面探讨AI Agent的数据安全与隐私保护措施,涵盖从数据的采集、存储、处理到传输的整个生命周期。

AGI×大数据,开启智能时代的认知跃迁;解码AGI,赋能数据驱动的智能革命。 2870

Maven&&Mybatis

Maven和Mybatis

lorikiller的博客 423

告别 DIFY 构建卡顿 / 失败!巧用 Makefile 一键构建本地 WEB 镜像,附核心避坑指南

本文详细介绍了DIFY本地源码构建WEB镜像的完整流程,重点解决因官方npm源不稳定导致的构建失败问题。通过修改web/Dockerfile文件启用国内npmmirror镜像源,可大幅提升依赖下载速度和稳定性。在DIFY根目录执行封装好的make build-web命令即可一键完成构建,无需手动编写复杂docker命令。文章还提供了前置环境准备、构建结果验证等实用指导,帮助开发者高效完成DIFY前端二次开发后的镜像构建验证。

2501_93651177的博客 183

MyBatis创建数据库与表

这里写目录一、创建数据库与表1、在Navicat里创建MySQL数据库testdb2、创建用户表 - t_user3、在用户表里插入3条记录二,创建Maven项目 - MyBatisDemo1.在pom文件里添加相应的依赖2.添加了新的依赖,单击一下红圈指定的刷新按钮三,创建与用户表对应的用户实体类 - User四,创建用户实体关系映射配置文件五,创建MyBatis配置文件六,创建日志属性文件 一、创建数据库与表 1、在Navicat里创建MySQL数据库testdb 2、创建用户表 - t_user

weixin_46704325的博客 6616

【DaVinci Developer专题】-36-创建一个“既读又写”的Sender Receiver Port(SR PR-Port)

有时会遇到SWC需要对一个Port进行“既可以读,也可以写”的操作。以下图为例,Test_A_SWC中Test_A_Port是P-Port;Test_B_SWC中Test_A_Port是R-Port。Test_C_SWC需要对Test_A_Port同时进行“读”和“写”。 该篇将详细介绍PR-Port的创建方法。 目录 1 创建一个S/R Port Interface 2 将一个PR-Port端口添加至Application Component 3 PR-Port端口初始化 4 Run.

「汽车电子助手」的博客 3013

瑞芯微RK3588/RK3576平台采集BT1120(fpga)驱动调试记录

本文介绍了在RK3576/RK3588平台上采集FPGA传输的BT1120数据的方法。主要内容包括:1)硬件连接需确认管脚复用和图像格式(通常为uyvy_2x8);2)设备树配置要点,如I2C总线设置、BT1120模式指定等;3)驱动适配注意事项,包括时钟极性、分辨率格式等关键参数;4)测试方法,通过media-ctl和v4l2-ctl工具验证数据采集。文中特别指出RK3576和RK3588配置的通用性,并提供了常见问题的排查思路。

bingdund的博客 916

【Mybatis从0到1学习|第一天】mybatis入门知识

【代码】【Mybatis从0到1学习|第一天】mybatis入门知识。

shenqibaobao的博客 481

uniapp - 详细解决 H5 网页报错 Uncaught Error: Async component timed out after ? ms.(移动端h5页面白屏或加载缓慢失败,超时报错处理)

uni-app,vue3,网页,h5,移动端,手机H5页面,浏览器,报错,uniapp报错,Asynccomponenttimedoutafter,如何解决这个问题,vue3Asynccomponenttimedoutafter,异步组件超时了怎么办,async,详细解决方案,AsyncComponents异步组件,导致页面打不开了,白屏什么也不显示,网页载入非常慢卡顿,vue3网站报错,超时,nuxt3,详细解决方案,浏览器控制台报错,爆红并且页面卡住了,依旧报错,找不到异步组件的报错

🏆 前端领域优质创作者 3781

1、mybatis入门案例

mybatis 1、mybatis概述 mybatis是一个持久层框架,用java编写的。 它封装了jdbc操作的很多细节,使开发者只需要关注sql语句本身,而无需关注注册驱动,创建连接等繁杂过程 它使用了ORM思想实现了结果集的封装。 ORM: ​ Object Relational Mappging 对象关系映射 ​ 简单的说: ​ 就是把数据库表和实体类及实体类的属性对应起来 ​ 让我们可以操作实体类就实现操作数据库表。 ​ user User ​ id userId ​

weixin_44230693的博客 263

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

《Mybatis入门到精通》——1. Mybatis入门

Mybatis学习前—— 关注点分离 它是最经典的架构设计原则之一。 1. 架构中需要变化的部分, 一定要能够非常清晰地被识别出来 。 2. 若架构中某部分发生变化,则该变化不会影响到其他部分。 3. 若架构中某部分需要扩展,则该扩展也不会影响到其他部分 。 架构能做到关注点分离,才能做到真正意义上的解耦;最经典的的就是“前后端分离”; 前后端分离 针对前端,需要将界面展现与数据展现相分离: 针对后端,不仅要清晰地理解业务逻辑,善于将数据进行合理的建模,最终还要做到将业务逻辑与数据逻辑相分离

娜娜米的博客 1459

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【mybatis - 1】一文入门mybatis源码

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。应该是目前最火的ORM框架。它的实现原理非常简单。我以最简单的代码示例来帮助大家入门mybatis源码。

叁滴水 的博客 3953

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MyBatis入门1

mybatis是什么?有什么特点?它是一款半自动的ORM持久层框架,具有较高的SQL灵活性,支持高级映射(一对一,一对多),动态SQL,延迟加载和缓存等特性,但它的数据库无关性较低什么是ORM?为什么mybatis是半自动的ORM框架?

mn0402的博客 1096

Mybatis快速入门1

JUnit 是一个用于编写和运行单元测试的 Java 框架。单元测试是针对软件中的最小可测试单元(通常是方法)进行测试的过程。JUnit 提供了一组注解和断言方法,可以帮助开发者编写和运行测试用例,并且可以方便地进行测试结果的断言和验证。添加 JUnit 依赖首先需要将 JUnit 框架添加到项目的依赖中。可以通过 Maven、Gradle 或手动下载 JUnit JAR 文件来添加依赖。编写测试类创建一个测试类,并使用@Test注解标记测试方法。

alsby的博客 590

Mybatis入门,day1

Mybatis入门,day1

weixin_67485772的博客 494

MyBatis学习总结(1)——MyBatis快速入门

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34379433的博客 184

Chp1-Mybatis入门

Mybatis是一款开源、轻量级的数据持久层框架,用于简化JDBC开发MyBatis 内部封装了 JDBC,简化了加载驱动、创建连接、创建 statement 等繁杂的过程,开发者只需要关注 SQL 语句本身支持定制化 SQL、存储过程以及高级映射,可以在实体类和 SQL 语句之间建立映射关系,是一种半自动化的 ORM 实现。

qq_44042106的博客 450

深入浅出MyBatis【1】MyBatis入门

​ 2001年,Clinton Begin发起了一个名为iBATIS的开源项目,最初侧重于密码软件的研发,后来发展成为一款基于Java的持久层框架。​ 2004年,Clinton将iBATIS的名字和源码捐赠给了Apache软件基金会。​ 2010年,核心开发团队决定离开Apache软件基金会,并且将iBATIS改名为MyBatis。​ MyBatis是一款优秀的支持自定义SQL查询、存储过程和高级映射的持久层框架,消除了几乎所有的JDBC代码和参数的手动设置以及结果集的检索。

mf97532的博客 630

MyBatis入门(1)

1MyBatis是一块优秀的持久层框架,用于简化JDBC的开发。2MyBatis本是Apache的一个开源项目iBatis,2010年这个项目由Apache迁移到了google code,并且改名为MyBaits。2013年11月迁移到Github。3官网MyBatis中文网。4持久层:指的就是持久化操作的层,通常指数据访问层(dao),是用来操作数据库的。简单来说,MyBatis是更简单完成程序和数据库交互的框架,也就是更简单的操作和读取数据库工具。

cool_tao6的博客 1268

【MyBatis从入门到入土】1 - MyBatis入门

文章目录MyBtis从入门到入土0 基础1 简介1.1 什么是Mybatis1.2 持久化1.3 持久层1.4 为什么需要MyBatis2 第一个MyBatis程序2.1 搭建环境2.2 创建一个新模块Modul2.3 编写代码2.4 测试 MyBtis从入门到入土 0 基础 学习MyBtis之前,需要对一下技术有一定的了解: Java基础 Mysql JDBC:Java Database Connectivity Maven Junit 1 简介 1.1 什么是Mybatis 简介 Mybatis官

Cap220590的博客 433

Mybatis从入门到精通1-1

2,Mybatis 2.1 Mybatis概述 2.1.1 Mybatis概念 MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发 MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github 官网:https://mybatis.org/mybatis-3/zh/index.html 持久层:

helpluozhao123的博客 219
上一篇: SpringAOP详解
下一篇: Java基础(3): 集合目录
GL60708
博客等级 码龄10年 5粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值