用MyBatis进行数据库的增删改查

前提是MyBatis环境部署好了,参考地址:

https://www.cnblogs.com/package-java/p/10316536.html

为了方便演示,我提前在数据库插入了数据方便查询

1. 创建新的数据库`tedu_ums`;
 
    CREATE DATABASE tedu_ums;
 
2. 在新数据库中创建数据表`t_user`,表中至少包含id, username, password, age, phone, email这6个属性;  
 
    USE tedu_ums;
 
    CREATE TABLE t_user (
        id INT AUTO_INCREMENT,
        username VARCHAR(20) UNIQUE NOT NULL,
        password VARCHAR(20) NOT NULL,
        age INT,
        phone VARCHAR(20),
        email VARCHAR(50),
        PRIMARY KEY(id)
    ) DEFAULT CHARSET=utf8;
 
3. 添加不少于10条数据;
 
    INSERT INTO t_user  
        (username, password, age, phone, email)  
    VALUES  
        (‘root‘, ‘1234‘, 18, ‘13800138001‘, ‘[email protected]‘),
        (‘admin‘, ‘4567‘, 19, ‘13800138002‘, ‘[email protected]‘),
        (‘jack‘, ‘1234‘, 20, ‘13800138003‘, ‘[email protected]‘),
        (‘tom‘, ‘1234‘, 22, ‘13800138010‘, ‘[email protected]‘),
        (‘jerry‘, ‘1234‘, 25, ‘13800138011‘, ‘[email protected]‘),
        (‘rose‘, ‘1234‘, 21, ‘13800138004‘, ‘[email protected]‘),
        (‘mike‘, ‘1234‘, 22, ‘13800138005‘, ‘[email protected]‘),
        (‘lily‘, ‘1234‘, 23, ‘13800138006‘, ‘[email protected]‘),
        (‘lucy‘, ‘1234‘, 24, ‘13800138007‘, ‘[email protected]‘),
        (‘mary‘, ‘1234‘, 25, ‘13800138008‘, ‘[email protected]‘),
        (‘alex‘, ‘1234‘, 26, ‘13800138009‘, ‘[email protected]‘);
 
4. 查询所有数据;
 
    SELECT id,username,password,age,phone,email FROM t_user;

一、创建实体类

每张数据表都应该有1个对应的实体类,所以,创建`cn.tedu.mybatis.entity.User`类,属性的数量与类型请参考数据表的设计:

package cn.tedu.mybatis.entity;

public class User {
    private Integer id;
    private String username;
    private String password;
    private Integer age;
    private String phone;
    private String email;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", password=" + password + ", age=" + age + ", phone="
                + phone + ", email=" + email + "]";
    }

}

二、创建接口,声明抽象方法

创建`cn.tedu.mybatis.mapper.UserMapper`接口,并在接口中声明“插入用户数据”的抽象方法:

package cn.tedu.mybatis.mapper;

import cn.tedu.mybatis.entity.User;

public interface UserMapper {
    Integer addnew(User user);//增
    User findById(Integer id);//查
    Integer updatenew(User user);//改
    Integer deletenew(Integer id);//删

}

关于抽象方法,在MyBatis中,执行的操作如果是增、删、改,返回值均使用`Integer`,表示受影响的行数;方法的名称可以自定义,只要不违反Java的命名规则即可,另外,不允许在接口中使用重载机制;参数也可以自定义,如果执行的是增加操作,参数应该是与数据表对应的实体类的类型。

三、配置接口所在的包并配置配置XML文件的位置与数据源

1、在MyBatis中,通过`MapperScannerConfigurer`类扫描持久层接口的,所以,应该在`spring-dao.xml`文件中进行配置:
 2、MyBatis通过`SqlSessionFactoryBean`获取数据源,并且扫描配置了SQL语句的XML文件,最终由MyBatis框架来执行SQL语句,所以,需要在`spring-dao.xml`中配置`SqlSessionFactoryBean`:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
    xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"
    xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:util="http://www.springframework.org/schema/util"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
    <!-- 加载数据库的配置文件 -->
    <util:properties id="dbConfig" location="classpath:db.properties"></util:properties>
<!--     配置数据源 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="url" value="#{dbConfig.url}"></property>
<property name="driverClassName" value="#{dbConfig.driver}"></property>
<property name="username" value="#{dbConfig.username}"></property>
<property name="password" value="#{dbConfig.password}"></property>
<property name="initialSize" value="#{dbConfig.initialSize}"></property>
<property name="maxActive" value="#{dbConfig.maxActive}"></property>
</bean>
<!-- 扫描持久层接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 配置接口文件所在的包 -->
<property name="basePackage" value="cn.tedu.mybatis.mapper"></property>
</bean>
<!-- 或取数据源 -->
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:mappers/*.xml"></property>
</bean>

</beans>

四、在XML中配置接口方法对应的SQL语句

在`src/main/resources`下创建名为`mappers`文件夹,创建名为UserMapper.xml的文件

根节点必须是`<mapper>`,且根节点的`namespace`表示对应的接口文件,然后,添加子节点,以对应接口中的抽象方法:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
 "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<!-- 根节点必须是mapper -->
<!-- namespace对应的接口文件 -->
<mapper namespace="cn.tedu.mybatis.mapper.UserMapper">
    <!-- 根据执行的操作类型选择节点 -->
    <!-- id:对应的抽象方法的方法名 -->
    <!-- 值:#{}括号里面的是User的属性名 -->
    <insert id="addnew">
        INSERT INTO t_user(
        username,password,age,phone,email
        ) value(
        #{username},#{password},#{age},#{phone},#{email}
        )
    </insert>
    <select id="findById" resultType="cn.tedu.mybatis.entity.User">
        SELECT id,username,password,age,phone,email FROM t_user WHERE id=#{id}
    </select>
    <insert id="addnewone">
        INSERT INTO t_user(
        username,password,age,phone,email
        ) value(
        #{username},#{password},#{age},#{phone},#{email}
        )
    </insert>
    <update id="updatenew">
        UPDATE t_user SET
        username=#{username},
        password=#{password},
        age = #{age},
        phone = #{phone},
        email=#{email}
        WHERE
        id=#{id}
    </update>
    <delete id="deletenew">
        DELETE FROM t_user WHERE age=#{age}
    </delete>
</mapper>

五、在测试类中测试

package web;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import cn.tedu.mybatis.entity.User;
import cn.tedu.mybatis.mapper.UserMapper;

public class TestDemo01 {
    AbstractApplicationContext ac;
    UserMapper mapper;
    @Before
    public void doBefore() {
        ac = new ClassPathXmlApplicationContext("spring-dao.xml");
        mapper = ac.getBean("userMapper",UserMapper.class);//根据id或取对象
    }
    @After
    public void doafter() {
        ac.close();
    }
/*    测试插入*/
    @Test
    public void add() {
        User user = new User();
        user.setUsername("学海无崖");
        user.setPassword("12345600");
        Integer row = mapper.addnew(user);
        System.out.println("row:"+row);
    }
/*    测试查询*/
    @Test
    public void findById() {
        Integer id=8;
        User user = mapper.findById(id);
        System.out.println(user);
    }
/*    测试修改*/
    @Test
    public void updatenew() {
        User user = new User();
        user.setUsername("小珠佩琦");
        user.setPassword("5548");
        user.setAge(18);
        user.setEmail("[email protected]");
        user.setPhone("448484");
        user.setId(6);
        Integer num = mapper.updatenew(user);
        System.out.println("num:"+num);
    }
/*    测试删除*/
    @Test
    public void deletenew() {
        Integer age = 60;
        Integer row = mapper.deletenew(age);
        System.out.println("row:"+row);
    }

}

原文地址:https://www.cnblogs.com/package-java/p/10327215.html

时间: 2024-08-29 19:56:22

用MyBatis进行数据库的增删改查的相关文章

MyBatis对数据库的增删改查操作,简单示例

之前一直实用Hibernate进行开发,最近公司在使用Mybatis,根据网上的示例,做了一个简单的Demo,以便日后复习 总体结构如下图 首先是创建一个工程,然后导入两个jar包,然后编写mybatis的jdbc配置文件Configuration.xml Configuration.xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-/

MyBatis框架入门小案例(关于用mybatis框架对数据库的增删改查)

1.新建一个maven项目,建好相对应的包,在https://mvnrepository.com中导入MyBatis需要的依赖,复制到配置文件中 2.在resources文件下添加mybatis-config.xml文件和mapper文件夹,mybatis-config.xml是连接mysql的主要配置,mapper文件夹存放的是对数据库增删改查的映射 mybatis-config.xml配置如下: <?xml version="1.0" encoding="utf-8

java jdbc 连接mysql数据库 实现增删改查

好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打交道非常基础的一个知识,也是比较接近底层的,在实际的工作中大家用得更多的其实还是比较成熟的框架,例如Hibernate.Mybatis. 但是作为这些成熟框架的底层的jdbc却也是我们应该去掌握的,只有了解了jdbc的增删改查,这样在以后如果有兴趣去研究Hibernate或者Mybatis的源代码的

【Hibernate】Hibernate的在Eclipse+Mysql的配置、安装,纯Java,利用Annotation与HQL完成数据库的增删改查

这篇文章有很多槽点,在Hibernate4.x上面用着Hibernate3.x的写法去写.而且程序中放到Eclipse中会有一大堆警告,但是这好歹也在一定程度上完成了Hibernate的入门.毕竟现在很多介绍Hibernate的书籍都是用Hibernate3.x的写法去写.上次那篇<[Hibernate]最简单的Hibernate工程--账号注册系统>(点击打开链接)杂糅Struts的技术其实是不对的.因为Hibernate完成的是,从Java到数据库,从数据库到Java的任务.之后Java与

android中SQLite数据库的增删改查

1.数据库帮助类PersonSQLiteOpenHelper package com.wzw.sqllitedemo.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteOpenHelper

Windows下安装MySQLdb, Python操作MySQL数据库的增删改查

这里的前提是windows上已经安装了MySQL数据库,且配置完毕,能正常建表能操作.在此基础上只需安装MySQL-python-1.2.4b4.win32-py2.7.exe就ok了,只有1M多.这个有点类似jdbc里的那个jar包. 下载链接:http://sourceforge.net/projects/mysql-python/ , 百度云盘 :http://pan.baidu.com/s/1dDgnfpR 密码:7bna 接着import MySQLdb就能使用了,下面给出测试代码:

TP框架中 数据库的增删改查

框架会用到数据库的内容,这一篇就是关于数据库的增删改查. 数据库的操作,无疑就是连接数据库,然后对数据库中的表进行各种查询,然后就是对数据的增删改的操作, 想要操作数据库,第一步必然是要:链接数据库 一.链接数据库 (1)找到模块文件夹中的Conf文件夹,然后进行编写config.php文件 我这里是这样的文件路径 (2)打开这个config.php文件,然后找到父类配置文件convention.php文件,将关于"数据库"的部分复制粘贴到config.php配置文件中(父类的conv

mysql笔记--数据库基本增删改查 修改表结构

数据库基本增删改查 1. 增-添加/插入数据,insert into 插入哪张表,那些列,什么值, 语句:insert into 表名(列1,列2,列3)values (值1,值2,值3): 可以不按原列的顺序插入,也可以插入部分列,但是值与列要一一对应,不能混乱!!! 一次插入多行数据 : Insert into 表名(列1,列2)values (值1,值2),(值1,值2): 2. 改-更新数据update 更新哪张表,哪些列,哪些值 语句:update 表名 set 列1=值1,列2=值2

【Visual Basic】vb6的ListView控件,对Access2003数据库的增删改查,判断是否有中文、多窗体操作

vb6对Access2003数据库的增删改查并不复杂,可以通过ado对象轻松完成,下面举个小例子,同时说明vb6中的ListView控件的使用.虽然在<[Visual Basic]列表控件ListView的增删改查.模态对话框.禁止窗口调整大小>曾经对VB.NET的ListView控件进行详细的说明,但是证明微软就是个坑爹货,vb6对于ListView实现的代码居然跟VB.NET有着彻底的不同,似乎换了一门语言似得的.改代码什么的最讨厌的. 首先,在vb6生成的工程文件夹中有着一个db1.md