zoukankan      html  css  js  c++  java
  • 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的简单增删改就完成了,不过建议在阅读这篇文章的时候先将入门篇看一遍就可以了。

  • 相关阅读:
    Hibernate(7)关联关系_单向1对n
    Hibernate(6)关联关系_单向n对1
    Hibernate(5)session的方法
    Hibernate(4)简单的HelloWorld
    Hibernate(3)配置文件hibernate.cfg.xml
    Hibernate(2)映射文件Xxx-hbm.xml
    hadoop和spark的区别
    Elasticsearch的乐观并发控制和分片管理
    ArrayAdapter requires the resource ID to be a TextView
    activity打开失败,Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
  • 原文地址:https://www.cnblogs.com/wucj/p/5148742.html
Copyright © 2011-2022 走看看