MyBatis之二:简单增删改查

  这一篇在上一篇的基础上简单讲解如何进行增删改查操作。

  一、在mybatis的配置文件conf.xml中注册xml与注解映射

<!-- 注册映射文件 -->
    <mappers>
        <!-- 通过xml方式映射 -->
        <mapper resource="com/mybatis/crud/userMapper.xml" />
        <!-- 通过注解方式映射 -->
        <mapper class="com.mybatis.crud.IUserMapper" />
    </mappers>

  二、在这个com.mybatis.crud包下面新建userMapper.xml文件与IUserMapper接口

    1、userMapper.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="com.mybatis.crud.userMapper">

    <insert id="addUser" parameterType="com.mybatis.crud.User">
        insert into users(id_id,name_n,age_a) values(#{id},#{name},#{age})
    </insert>

    <delete id="deleteUser" parameterType="int">
        delete from users where
        id_id=#{id}
    </delete>

    <update id="updateUser" parameterType="com.mybatis.crud.User">
        update users set
        name_n=#{name},age_a=#{age} where id_id =#{id}
    </update>

    <select id="getAllUsers" resultType="com.mybatis.crud.User"
        resultMap="usermap">
        select *
        from Users
    </select>

    <resultMap type="com.mybatis.crud.User" id="usermap">
        <id property="id" column="id_id" />
        <result property="name" column="name_n" />
        <result property="age" column="age_a" />
    </resultMap>

    <select id="getUser" parameterType="int" resultType="com.mybatis.crud.User"
        resultMap="usermap">
        select *
        from Users where id_id=#{id}
    </select>
</mapper>

    2、IUserMapper接口定义如下

package com.mybatis.crud;

import java.util.List;
import java.util.Properties;

import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Result;
import org.apache.ibatis.annotations.Results;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.type.JdbcType;

public interface IUserMapper {

    @Insert("insert into users(id_id,name_n,age_a) values(#{id},#{name},#{age})")
    public int add(User user);

    @Delete("delete from users where id_id=#{id}")
    public int deleteById(int id);

    @Update("update users set name_n=#{name},age_a=#{age} where id_id =#{id}")
    public int update(User user);

    @Select("select * from Users where id_id=#{id}")
    @Results({
            @Result(property = "id", column = "id_id", jdbcType = JdbcType.INTEGER),
            @Result(property = "name", column = "name_n", jdbcType = JdbcType.VARCHAR),
            @Result(property= "age", column = "age_a", jdbcType = JdbcType.INTEGER) })
    public User getById(int id);

    @Select("select * from Users")
    @Results({
        @Result(property = "id", column = "id_id", jdbcType = JdbcType.INTEGER),
        @Result(property = "name", column = "name_n", jdbcType = JdbcType.VARCHAR),
        @Result(property= "age", column = "age_a", jdbcType = JdbcType.INTEGER) })
    public List<User> getAll();

}

  三、新建一个获取SqlSessionFactory的工具类

package com.mybatis.util;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.mybatis.demo.test;

public class MybatisUtils {

    public static SqlSessionFactory getFactory(){
        String resource = "conf.xml";
        InputStream inputStream = test.class.getClassLoader().getResourceAsStream(resource);
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        return sessionFactory;
    }

}    

  四、实际测试代码如下

package com.mybatis.crud;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Test;

import com.mybatis.util.MybatisUtils;

public class TestCrud {

    //方法名称上面F11键 即可运行测试方法

    @Test
    public void testAdd() {
        SqlSessionFactory factory = MybatisUtils.getFactory();
        SqlSession session = factory.openSession(true);

        String statement = "com.mybatis.crud.userMapper.addUser";
        User user1 = new User();
        user1.setId(199);
        user1.setName("wrrrugggcj");
        user1.setAge(296);
        System.out.println("[xml]新增影响行数:"+session.insert(statement, user1));

        User user2 = new User();
        user2.setId(198);
        user2.setName("wrrrugggcjeee");
        user2.setAge(26);

        IUserMapper userMapper = session.getMapper(IUserMapper.class);
        System.out.println("[注解]新增影响行数:"+userMapper.add( user2));

        session.close();
    }

    @Test
    public void testUpdate() {
        SqlSessionFactory factory = MybatisUtils.getFactory();
        //默认手动提交
        SqlSession session = factory.openSession();

        String statement = "com.mybatis.crud.userMapper.updateUser";
        User user1 = new User();
        user1.setId(199);
        user1.setName("199");
        user1.setAge(89);
        System.out.println("[xml]修改影响行数:"+session.update(statement, user1));

        User user2 = new User();
        user2.setId(198);
        user2.setName("198");
        user2.setAge(89);
        IUserMapper userMapper = session.getMapper(IUserMapper.class);
        System.out.println("[注解]修改影响行数:"+userMapper.update(user2));

        //提交
        session.commit();
        session.close();

    }

    @Test
    public void testDelete() {
        SqlSessionFactory factory = MybatisUtils.getFactory();

        SqlSession session = factory.openSession(true);

        String statement = "com.mybatis.crud.userMapper.deleteUser";
        System.out.println("[xml]删除影响行数:"+session.delete(statement,199)); 

        IUserMapper userMapper = session.getMapper(IUserMapper.class);
        System.out.println("[注解]删除影响行数:"+userMapper.deleteById(198)); 

        session.close();
    }

    @Test
    public void testGetAllusers() {
        SqlSessionFactory factory = MybatisUtils.getFactory();

        SqlSession session = factory.openSession(true);

        String statement = "com.mybatis.crud.userMapper.getAllUsers";
        List<User> users = session.selectList(statement);
        System.out.println("[xml]查询用户列表:"+users);

        IUserMapper userMapper = session.getMapper(IUserMapper.class);
        System.out.println("[注解]查询用户列表:"+userMapper.getAll());

        session.close();

    }
}

  

  至此,一个基于mybatis的简单增删改就完成了,不过建议在阅读这篇文章的时候先将入门篇看一遍就可以了。

时间: 2024-08-09 23:50:58

MyBatis之二:简单增删改查的相关文章

MyBatis学习之简单增删改查操作、MyBatis存储过程、MyBatis分页、MyBatis一对一、MyBatis一对多

一.用到的实体类如下: Student.java [html] view plaincopy package com.company.entity; import java.io.Serializable; import java.util.Date; public class Student implements Serializable{ private static final long serialVersionUID = 1L; private int id; private Stri

idea+spring4+springmvc+mybatis+maven实现简单增删改查CRUD

在学习spring4+springmvc+mybatis的ssm框架,idea整合简单实现增删改查功能,在这里记录一下. 原文在这里:https://my.oschina.net/finchxu/blog/3007984 工作环境: Windows 10 jdk8(1.8) IntelliJ IDEA spring 4 和 springMVC MySQL 5.7 maven 3.3 mybatis 3.4 DBCP Tomcat 8.5 项目上传到了Github方便查看:https://gith

Redis之五种数据类型的简单增删改查

开心一笑 乌龟受伤.让蜗牛去买药.过了2个小时.蜗牛还没回来.乌龟急了骂道:他妈的再不回来老子就死了!这时门外传来了蜗牛的声音:你他妈再说老子不去了! 提出问题 Redis五种数据类型的简单增删改查命令??? 解决问题 假设你已经安装Redis服务器: 假设你已经打开Redis cli命令行工具: 假设你对Redis有所了解: Redis简单增删改查例子 例一:字符串的增删改查 #增加一个key为ay_key的值 127.0.0.1:6379> set ay_key "ay" O

Android中使用Sqlite数据库 (二) 增删改查

定义接口 package com.example.android_db.service; import java.util.List; import java.util.Map; public interface PersonService { public boolean addPerson(Object[] params); public boolean deletePerson(Object[] params); public boolean updatePerson(Object[] p

[EF]使用EF简单增删改查

目录 认识EF 添加数据 删除数据 修改数据 查询数据 总结 认识EF ADO.NET Entity Framework 是微软以ADO.NET为基础所发展出来的对象关系对伊(O/R Mapping)解决方案,早起被称为ObjectSpage,最新版本EF6. 实体框架Entity Framework是ADO.NET中的一组支持面向数据的软件应用程序的技术.是微软的一个ORM框架. 什么是O/R Mapping 广义上,ORM指的是面向对象模型和关系数据库的数据结构之间的相互转换. 狭义上,OR

Linq to SQL 简单增删改查

Linq to SQL 简单增删改查 用Linq大大减少了对数据库的一般操作所需的编码量. 运行下面事例之前,首先建一个叫做Alien的数据库表. CREATE TABLE [dbo].[Aliens](    [Id] [int] IDENTITY(1,1) NOT NULL primary key,    [Name] [nchar](10) NULL,) 建一个console项目,在项目里添加一个Linq To Sql类文件(.dbml以及两个附属文件),把Alien表从服务器资源管理器拖

kendoUI 简单增删改查

1  目前学习主要基于kendoUI英文API文档(http://docs.telerik.com/kendo-ui/introduction) 2  在已经搭建的MVC+EF+kendo UI的基础上实现Kendo UI增删改查功能 3 增删改查代码示例: 3-1:主要展示前台实现代码,因为后台代码不是唯一,可自行配置,返回JSON数据 3-1:html代码如下 3-1-1:查询和列表展示 HTML代码,列表展示只需要一个div标签 ,如下(div id="grid"><

Asp.net Core 2.1使用 EF Core 简单增删改查操作数据库

Asp.net Core 2.1使用 EF Core 简单增删改查操作数据库 大概步骤如下5步: 1.创建项目(Asp.net Core 2.1项目) 2.项目使用EF Core 3.建立实体 4.生成迁移文件(生成数据库) 5.使用VS工具生成视图.控制器代码 示例代码下载  https://github.com/ZhMartincheng/NetCoreDemo.git 1.创建项目(Asp.net Core 2.1项目) 选择.net core 版本2.1 基础项目创建成功 2.项目使用E

MyBatis学习系列二之增删改查

数据库的经典操作:增删改查. 在这一章我们主要说明一下简单的查询和增删改,并且对程序接口做了一些调整,以及对一些问题进行了解答. 1.调整后的结构图: 2.连接数据库文件配置分离: 一般的程序都会把连接数据库的配置单独放在.properties 文件中,然后在XML文件中引用,示例如下: config.properties: driver=oracle.jdbc.OracleDriver url=jdbc:oracle:thin:@127.0.0.1:1521:orcl username=pho