Mybatis(二)--实现CRUD

Ubuntu20.04安装Torque-6.1.2单机版(踩坑篇) 说明:PBS排队系统原先是在Centos7安装使用很顺利,但是有客户需求在Ubuntu20.04上使用,着手在Ubuntu20.04安装上安装的时候发现很多报错,并不能顺利安装,网上查找到的教程,有的说是让放弃转slurm,有的是换源安装,但是安装好的版本很低,有许多bug,不是很好用。经过自己慢慢摸索之后,改了部分配置以及源码之后,能够顺利安装,再次记录一下踩坑心得,与大家一起分享学习。如有问题,欢迎大家来撩。............... 阅读详情

上篇文章介绍了mybatis入门,在入门案例中使用了查询所有操作,这篇文章介绍mybatis中对数据库里的CRUD操作,在这之前,先导入日志分析工具log4j

一、日志分析工具log4j

  1. 导入依赖jar包
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.5</version>
</dependency>
  1. 添加配置文件

    该配置文件只需要添加至resource文件夹下即可,log4j会自动读取。文件名为log4j.properties

log4j.rootLogger=DEBUG,A1
log4j.logger.org.apache=DEBUG
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss,SSS} [%t] [%c]-[%p] %m%n
  1. 结果

在这里插入图片描述
配置完成之后控制台会出现很多的日志信息

二、CRUD操作

注意:这里只给出Dao接口类和对应的UserDaoConfig配置文件以及测试类的代码,对于CRUD操作只需要修改这两个地方

1. 查询操作
  1. 查询所有

com.Dao.userDao

    /**
     * 查询所有
     */
    List<User> findAll();

UserDaoConfig配置文件

    <select id="findAll" resultType="com.Domain.User">
        select * from user
    </select>

为避免测试类出现大量的重复代码,使用如下简化:

public class Test {
    InputStream in;
    SqlSessionFactoryBuilder builder;
    SqlSessionFactory build;
    SqlSession session;
    UserDao userDao;
    @Before
    public void init() throws IOException {
        in = Resources.getResourceAsStream("MapperConfig.xml");
        builder = new SqlSessionFactoryBuilder();
        build = builder.build(in);
        session = build.openSession();
        userDao = session.getMapper(UserDao.class);
    }

    /**
     * 测试查询所有
     * @throws IOException
     */
    @org.junit.Test
    public void testFindALll() throws IOException {
        List<User> users = userDao.findAll();
        for (User user : users) {
            System.out.println(user);
        }
    }
    @After
    public void destory() throws IOException {
        //手动提交事务
        session.commit();
        in.close();
        session.close();
    }

}
  1. 根据id查询

com.Dao.userDao

    /**
     * 根据id查询
     * @param userId
     * @return
     */
    User findById(Integer userId);

UserDaoConfig配置文件

    <select id="findById" parameterType="int" resultType="com.Domain.User">
        select * from user where id = #{id}
    </select>
  • select 标签:书写查询sql语句
  • id属性:用于指定该sql语句对应那个方法
  • parameterType:用于指定传入参数的类型,这里处基本数据类型外,其他类要写全限定类
  • resultType:用于指定结果集的类型。
  • #{}:表示占位符,与jdbc中的?作用类似

测试代码

@org.junit.Test
public void testFindById(){
	User user = userDao.findById(42);
	System.out.println(user);
}
2.保存操作
  1. 新增用户

com.Dao.userDao

/**
     * 新增用户
     * @param user
     */
    void saveUser(User user);

UserDaoConfig配置文件

    <!-- 增  -->
    <insert id="saveUser" parameterType="com.Domain.User" >
        insert into user (username,birthday,sex,address) values (#{username}, #{birthday}, #{sex}, #{address})
    </insert>

测试代码

/**
     * 保存用户
     */
    @org.junit.Test
    public void testSaveUser(){
        User user = new User();
        user.setBirthday(new Date());
        user.setSex("男");
        user.setUsername("zhangsan");
        user.setAddress("西安市");
        System.out.println(user);
        userDao.saveUser(user);
    }
  • insert:书写insert插入sql语句
  • 注意:这里必须要手动提交事务,如果不提交事务,mybatis会自动回滚事务,那么就不能保存。
session.commit();

注意:新增用户的id返回值。因为这里的id是AUTO_INCREMENT是自增长的,如果要返回当前新增的用户的id值,那么就要在UserDaoConfig配置文件中insert标签中加入

    <!-- 增  -->
    <insert id="saveUser" parameterType="com.Domain.User" >
        <selectKey keyColumn="id" keyProperty="id" resultType="int" >
            select last_insert_id();
        </selectKey>
        insert into user (username,birthday,sex,address) values (#{username}, #{birthday}, #{sex}, #{address})
    </insert>

然后运行
在这里插入图片描述

3.删除操作

com.Dao.userDao

/**
* 删除用户
* @param id
* @return int
*/
int deleteUser(int id);

UserDaoConfig配置文件

    <!-- 删除用户 -->
    <delete id="deleteUser" parameterType="int">
        delete from user where id = #{id}
    </delete>

测试代码

    @org.junit.Test
    public void testDeleteuser(){
        int deleteuser = userDao.deleteUser(42);
        System.out.println(deleteuser);
    }

4.更新操作

com.Dao.userDao

    /**
     * 更新用户
     */
    int updateUser(User user);

UserDaoConfig配置文件

    <!-- 更新用户 -->
    <update id="updateUser" parameterType="com.Domain.User" >
        update user set username = #{username}, birthday = #{birthday}, sex = #{sex}, address = #{address} where id = #{id}
    </update>
5.模糊查询
  1. #{}的方式

com.Dao.userDao

/**
* 模糊查询
* @return
*/
List<User> fingByName(String username);

UserDaoConfig配置文件

    <!-- 模糊查询 -->
    <select id="fingByName" parameterType="String" resultType="com.Domain.User">
        select * from user where username like #{username};
    </select>

测试代码

@org.junit.Test
public void testFindByName(){
    List<User> users = userDao.fingByName("%王%");
    for (User user : users) 
        System.out.println(user);
    }
}

注意:在sql语句中模糊查询时要加入%%,但是我们在配置文件内没有加入,所以要在传入参数的时候加入,不加入则没法模糊查询

  1. ${}的方式

UserDaoConfig配置文件

    <select id="fingByName" parameterType="String" resultType="com.Domain.User">
        select * from user where username like '%${value}%';
    </select>

测试代码里就不用%%了,这中方法明显是使用拼接字符串的方式。并且需要注意的是${}里面的值只能写value写其他内容则会报错

6.聚合函数

com.Dao.userDao

int findtotal();

UserDaoConfig配置文件

    <select id="findtotal" resultType="int">
        select count(id) from user;
    </select>

测试代码

@org.junit.Test
public void testFindTatal(){
    int count = userDao.findtotal();
    System.out.println(count);
}

三、#{}与${}

#{}表示一个占位符号

​ 通过#{}可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 jdbc 类型转换,#{}可以有效防止 sql 注入。 #{}可以接收简单类型值或 pojo 属性值。 如果 parameterType 传输单个简单类型值,#{}括号中可以是 value或其它名称。

${}表示拼接 sql 串

​ 通过${}可以将 parameterType 传入的内容拼接在 sql 中且不进行 jdbc 类型转换, 可 以 接 收 简 单 类 型 值 或 p o j o 属 性 值 , 如 果 p a r a m e t e r T y p e 传 输 单 个 简 单 类 型 值 , {}可以接收简单类型值或 pojo 属性值,如果 parameterType 传输单个简单类型值, 可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,{}括号中只能是 value。

不使用resultType的方式

​ 前面讲的CRUD的操作传入的参数都是使用了resultType这个标签来实现的,其实也可以不使用这个标签,例如:

com.Dao.userDao

/**
* 不使用resultType的方式
*/
User findById2(@Param("id") int id);

UserDaoConfig配置文件

	<select id="findById2" resultType="com.Domain.User">
        select * from user where id =  #{param1};
    </select>

可以使用@Param的方式来实现

四、mybatis的sql配置文件

1.parameterType

parameterType在Dao的配置文件中充当传入参数的作用,它的格式为:

  • 实体类:全限定类名(没有设置别名的情况下)
  • 基本数据类型和String类:包名,类名,直接写类型名称

基本数据类型和String类型,可以不用写全限定类名的原因是,mybatis已经将基本数据类型和String类设置了别名,所以只需要使用别名就可以。当然,mybatis还支持自定义别名,设置方法如下:在主配置文件下,配置typeAliases标签,这个后面说明。

2.resultType

​ resultType属性可以指定结果集类型,支持的结果集类型和parameterType一样,当然也有定义别名。需要注意的是如果结果集是实体类,那么实体类的属性要和数据库中的表的列名要一致。

3.resultMap

​ 使用resultType必须要求数据库表中的列名和实体类的属性值要一致,如果不一致则会封装不到数据,当然在数据库的层面上提供了一个解决办法,就是在sql语句中设置别名,不过这个方法有点麻烦。对于每条sql语句都要设置别名。

​ mybatis为我们提供了一个解决办法(这里还要注意:mysql在windows下是不区分大小写的)。就是使用resultMap封装结果集。

实体类的属性(getter和setter方法去掉get(set)后将首字母小写):

public class User {
    private Integer userid;
    private String userName;
    private String userSex;
    private Date userBirthday;
    private String userAddress;

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getUserSex() {
        return userSex;
    }

    public void setUserSex(String userSex) {
        this.userSex = userSex;
    }

    public Date getUserBirthday() {
        return userBirthday;
    }

    public void setUserBirthday(Date userBirthday) {
        this.userBirthday = userBirthday;
    }

    public String getUserAddress() {
        return userAddress;
    }

    public void setUserAddress(String userAddress) {
        this.userAddress = userAddress;
    }

    @Override
    public String toString() {
        return "User{" +
                "userid=" + userid +
                ", userName='" + userName + '\'' +
                ", userSex='" + userSex + '\'' +
                ", userBirthday=" + userBirthday +
                ", userAddress='" + userAddress + '\'' +
                '}';
    }
}

现在查询所有肯定是查询不到的、
在这里插入图片描述
但是还是有部分数据被查询到了,这是因为mysql在windows下不区分大小写的原因。接下来就是要配置dao配置文件

userDaoConfig.xml

 <resultMap id="userMap" type="com.Domain.User">
        <id column="id" property="userid"></id>
        <result column="username" property="userName"></result>
        <result column="sex" property="userSex"></result>
        <result column="address" property="userAddress"></result>
        <result column="birthday" property="userBirthday"></result>
    </resultMap>

    <!--配置查询所有-->
    <select id="findAll" resultMap="userMap">
        select id, username, sex as usersex, birthday from user
    </select>
  • type属性:指定实体类的全限定类名
  • id属性:唯一标识,在sql语句的标签内使用
  • id标签:主键字段
  • result标签:非主键字段
  • column属性:数据库列名
  • property属性:实体类属性名称

指定好resultMap的配置之后,要在sql语句标签中使用resultMap属性,值为设置的id,这样就可以解决数据库列名和实体类属性值不一样的问题了。

4.sql标签

使用sql标签,可以将一些常用的sql语句封装好,要用的时候直接引用即可

<sql id="default">
        select * from user
</sql>


    <!--配置查询所有-->
    <select id="findAll" resultType="com.Domain.User">
        <include refid="default"></include>
    </select>

五、主配置文件详解

主配置文件中的常见标签以及顺序

configuration
    properties(属性)
        --property
    -settings(全局配置参数)
        --setting
    -typeAliases(类型别名)
        --typeAliase
        --package
    -environments(环境集合属性对象)
        --environment(环境子属性对象)
            ---transactionManager(事务管理)
            ---dataSource(数据源)
    -mappers(映射器)
        --mapper
        --package

这里需要特别注意的是这些个配置文件的顺序,是不能颠倒的,xml的约束是很严格的。

1.properties

这个标签主要是改造dataSource的,在没使用这个标签之前,我们是这样配置的

<dataSource type="POOLED">
	<!-- 配置连接数据库的4个基本信息 -->
	<property name="driver" value="com.mysql.jdbc.Driver"/>
	<property name="url" value="jdbc:mysql://localhost:3306/user?characterEncoding=UTF-8"/>
	<property name="username" value="root"/>
	<property name="password" value="213213"/>
</dataSource>

在这里写显得比较冗余,这里可以使用一个properties标签,将这些信息写入配置文件,其中的resource属性可以用来指定配置文件的路径。

主配置文件MapperConfig.xml

  <properties resource="db.properties"></properties>        

db.properties

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/user?characterEncoding=UTF-8
username=root
password=213213

配置好了properties标签之后,在dataSource数据源中就可以直接通过${key},这里的key指的是在配置文件内使用的key。

<!-- 配置数据源(连接池) -->
            <dataSource type="POOLED">
                <!-- 配置连接数据库的4个基本信息 -->
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>

需要注意的是,db.properties需要写在类路径下,当然这个maven工程就要在resource目录下了。

properties的属性:

  • resource:用于指定 properties 配置文件的位置,要求配置文件必须在类路径下
  • url:指定资源的url,不常用

当然,如果不想重新建一个配置文件,也可以在properties标签下有一个子标签propertie,在子标签中有2个属性,name和value,这两个属性的用处很显然,name就是key,对应着配置文件中key,value。

    <properties>
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/user?characterEncoding=UTF-8"/>
        <property name="username" value="root"/>
        <property name="password" value="213213"/>
    </properties>
2.typeAliases

这个标签在前面已经提到过,这个标签是用来设置别名的,在resulttype或者是resulyMap中要写全限定类名,如果每个配置都要这么书写则会很麻烦,于是mybatis给我们提供了这么一个标签,去写别名

  • typeAlias :单个定义别名
    • alias:别名名称
    • type:要设置别名的类
  • package:批量别名定义,扫描整个包下的类,别名为类名(首字母大写或小写都可以)
    <typeAliases>
        <typeAlias type="com.Domain.User" alias="user"></typeAlias>
        <package name="com.Domain"/>
    </typeAliases>
3.mappers

这个标签是用来配置dao配置文件的映射标签,其中有个子标签mapper指定其resource属性或者class属性

RH850从0搭建Autosar开发环境【17】- Davinci Configurator之DCM模块配置详解(下) 阅读详情

相关推荐

别再为Word转PDF表格变形发愁了!Aspose.Words for Java 19.5 保姆级避坑指南

本文详细介绍了使用Aspose.Words for Java 19.5解决Word转PDF时表格变形问题的完整方案。从格式转换原理到实战技巧,涵盖固定表格宽度、禁用自动调整、强制文本换行等核心方法,并提供高级场景应对策略和性能优化建议,帮助开发者高效处理复杂文档转换需求。

weixin_28702105的博客 263

Spring Boot电商项目45:购物车模块三:【购物车列表】接口;(遇到了【mybatis多表关联查询时,一种图快的、不建议的方式】;)

说明: (1)

小枯林的博客 2734

FAGLB03余额显示异常排查与修复指南

本文针对SAP新总账中FAGLB03报表余额显示异常问题,提供了专业的排查与修复指南。文章深入剖析了数据不一致的核心原因,如FAGLFLEXT汇总表与凭证明细不同步、年度余额结转(FAGLGVTR)失败等,并详细介绍了使用FAGLF03进行精准诊断、通过SE38执行标准调整程序TFC_ADJUST_VZ进行修复的标准操作流程,帮助用户快速恢复数据一致性,确保财务报表的准确性。

weixin_29313423的博客 305

Parameter 'userid' not found. Available parameters are [arg1, arg0, param1, param2]的解决办法

HTTP Status 500 – Internal Server Error Type异常报告 消息Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.Bindin...

fenger_c的博客 2万+

Windows下高效部署llama.cpp:从环境配置到模型量化的完整指南

本文提供了一份详尽的Windows系统下部署llama.cpp的完整指南。内容涵盖从Python环境配置、使用CMake与MinGW编译工具链的搭建,到编译llama.cpp项目、获取并转换模型为GGUF格式,以及执行模型量化和基础推理测试的全过程。指南旨在帮助开发者在普通Windows电脑上,无需高端显卡,仅凭CPU即可高效运行大语言模型,并重点解决了部署过程中常见的环境与编译错误。

weixin_28841265的博客 874

微信小程序真机HTTPS证书链失效排查与修复指南

HTTPS证书信任链是保障Web通信安全的基础机制,其核心在于客户端能否通过服务器提供的证书及其上级签发者,逐级回溯至自身预置的可信根证书。在微信小程序场景中,由于客户端不复用系统根证书库,而是采用固化、精简且更新滞后的自研CA白名单,导致大量符合浏览器标准的证书(如Let’s Encrypt新版ISRG Root X1、TrustAsia等)在真机环境下触发net::ERR_CERT_AUTHORITY_INVALID错误。该问题本质是证书链断裂或签名算法/密钥长度不合规,而非域名配置或CORS策略异常。

weixin_33935636的博客 665

Mybatis学习日记(三)——使用@param方法传递多个参数

在上一篇博客中,我们介绍了单个参数的增删改查,然而在实际的开发中,经常会遇到多个接口参数的情况。在之前的例子中,我们都是将多个参数合并到一个JavaBean中,但是不可能每次都为不同的参数创建一个新的JavaBean,所以需要使用其他方式来传递多个参数,常见的方法有使用Map类型和使用@param注解。 使用Map类型方法主要是将需要传递的参数添加到一个Map集合中,再将Map集合作为Mybat...

黄书胜的博客 1万+

非华为电脑也能用上鸿蒙生态?手把手教你给Win10/Win11装上最新华为电脑管家(附移动应用引擎开启方法)

本文详细介绍了如何在非华为品牌的Windows 10/11电脑上安装华为电脑管家并启用移动应用引擎,实现鸿蒙生态的无缝协同体验。从BIOS设置到安装步骤,再到性能优化和常见问题解决,手把手教你解锁跨设备高效工作流。

weixin_42542669的博客 4025

【Mybatis学习总结二】Mybatis操作数据表的CRUD实现

本节内容学习了如何通过Mybatis实现对数据库的增删改查操作。一共有两种实现方式,一是基于XML的实现;第二种是基于注解的实现。 下面来具体介绍两种方法的具体实现: 一、基于XML的实现  1    还是基于第一节中建立的User.java实体类;  2    新建一个工具类MybatisUtils.java(因为在后面的测试类中要得到sqlsessionFactory,代码都是一样的,

noaman_wgs的博客 888

VxWorks系列 快速导航

Vxworks系列快速阅览导航

Mr.Sugarcane 1296

热力学仿真软件:SimScale_(1).SimScale入门与基础操作

导航栏:位于页面顶部,包含项目管理、仿真设置、结果分析等主要功能。项目列表:展示用户创建的所有项目。工作区:用于进行具体的操作,如几何建模、网格划分、边界条件设置等。控制台:显示操作日志和仿真进度。网格划分是将几何模型离散化为一系列小单元的过程,这些单元用于求解热力学方程。SimScale提供了多种网格划分方法,包括结构化网格和非结构化网格。SimScale提供了丰富的API接口,用户可以通过编程语言进行二次开发,实现自动化仿真和结果分析。项目管理:创建、删除和管理项目。几何建模:创建、导入和修复几何模型。

kkchenjj的博客 1847

Mybatis学习总结(二).Mybatis普通方式实现CRUD及动态代理方式实现CRUD

普通方式实现CRUD user.java public class User { private Long id; // 用户名 private String userName; // 密码 private String password; // 姓名 private Strin

邢宇超的博客 706

西门子TP900精智系列触摸屏和三菱Q系列PLC以太网通信的组态步骤

西门子TP900精智系列触摸屏和三菱Q系列PLC以太网通信的组态步骤

Robot_PLC_HMI_Automation 6092

二、Mybatis实现CRUD注意点及resultMap

二、Mybatis实现CRUD注意点 持久层接口和持久层接口的映射配置必须在相同的包下,即xml文件即userMapper接口 持久层中mapper标签的namespace必须为持节层接口的全限名。 CRUD对应的标签为select,insert,delete,update。并非所有的标签都为select。且其中的id属性必须与持久层中的接口方法名一致。 关于MyBatis查询用户映射配置文件的几个属性: <select id="findAllById" resultType="com

weixin_35798336的博客 947

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

用mybatis实现简单的CRUD(二:注解实现)

在上篇的基础上修改https://blog.csdn.net/weixin_42565135/article/details/90237240 1.不需要用mapper.xml文件,定义sql映射的接口(不需要写实现类,实现的方法是动态产生的) package db.youhua; import java.util.List; import org.apache.ibatis.annot...

小蜗牛的博客 380

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

MyBatis学习(二)——实现CRUD

文章目录1.实现查询 1.实现查询 CONTAC:实现拼接

观山奇的博客 236

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Mybatis 框架学习(二)—— 简单CRUD的实现

1、Mybatis 代码的增删改查 2.万能 Map 的使用 3. Mybatis 的模糊查询使用

rain67的博客 294

MyBatis(二)基于代理Dao实现CRUD操作

文章目录1.基于代理Dao实现CRUD操作1.1 编写实体类和持久层接口1.2 编写主配置文件1.3 编写映射配置文件ognl表达式{}和${}的区别1.4 编写测试类2.SqlMapConfig.xml配置文件2.1 配置内容和顺序2.2 properties属性2.3 typeAliases(类型别名)2.4 mappers(映射器)3.Mybatis的参数深入3.1 parameterTyp...

博主很懒,没有简介~ 533

MyBatis 学习总结(二)——MyBatis 实现 crud 操作

MyBatis 实现 crud 操作基于 xml 的 crud 操作1.搭建 MyBatis 的 环境(导入jar包,配置xml文件等),学习总结一有详细内容,这里略过。 2.编写表对应实体类的映射xml文件UserMapper.xml<mapper namespace="com.wsb.mybatis.test.UserMapper"> <select id="getUser" para

programer_bei的博客 602

MyBatis学习(二)之MyBatis 增删改查CRUD的实现。

记录自己在狂神说java中的学习情况,文章里有自己学习的理解和扩展,新手难免有理解偏差或者错误,恳请大佬指正。 Java自学 MyBatis CRUDMyBatis的CRUD1.1 namespace1.2 select1.3 insert1.4 update总结 在16. Java MyBatis的基础上,进行CRUD的学习。 MyBatis的CRUD 1.1 namespace 在mapper.xml文件中的namespace的包名要和Dao/Mapper接口的包名一致! 即<mapper nam

学习是为了让运气刚好能碰上你的努力 324

使用MyBatis对数据库中表实现CRUD操作(二)

使用MyBatis对数据库中表实现CRUD操作(二) 一、使用MyBatis对表实现CRUD操作 1.定义sql映射   userMapper.xml <?xml version="1.0" encoding="UTF-8"?> <!D...

diechang2381的博客 219

mybatis学习总结(二)之配置文件实现crud操作

一、使用MyBatis对表执行CRUD操作——基于XML的实现 1.sql映射xml文件 &lt;!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"&gt; &lt;!-- namespace:命名空间,对statement的信息进...

A struggling white 287

Mybatis入门(二)利用statement方式实现CRUD

2.1 创建一张数据库表 这是我的student表 2.2 建立与该表映射的对象 Student.java 我在Student.java文件中也设置了三个变量,和数据库表中的三个变量一一映射。 然后利用IDEA直接生成各个变量的get和set方法,以及to string 方法和构造方法。 package one; public class Student { int id; String name; String gname; public Student(int id

Lu0v0Lu的博客 296

mybatis mysql crud_mybatis实现CRUD操作(mysql数据库)(二)

接着前一篇继续说1.创建了test2包与util包2.MybatisUtils类的代码package com.kpzc.util;import java.io.InputStream;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder...

weixin_39888268的博客 130

MyBatis入门教程(二):实现CRUD

上一篇MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对users表执行CRUD操作。本文中使用到的测试环境是上一篇博文中的测试环境。 一、使用MyBatis对表执行CRUD操作——基于XML的实现 1、定义sql映射xml文件   userMapper.

汤圆学Java 690

MyBatis学习(二)--利用MyBatis实现CRUD操作

文章目录一、查询表记录1.在映射器配置文件里引入结果映射元素2.添加按姓名查询用户记录功能(1)添加映射语句(2)在UserMapper接口里添加findByName()方法(3)TestUserMapper里添加测试方法testFindByName()二、插入表记录三、更新表记录四、删除表记录 一、查询表记录 1.在映射器配置文件里引入结果映射元素 在引入映射结果后,运行TestUserMapper会出现如下错误 我们将UserMapper文件中所绑定的SQL语句注释,然后再次运行程序,结果正确

weixin_46705517的博客 265
上一篇: Mybatis(一)--快速入门
下一篇: Mybatis(三)--高级查询
四五又十
博客等级 码龄8年 378粉丝 175原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值