zoukankan      html  css  js  c++  java
  • MyBatis入门 (二) 增删改查实现

    MyBatis入门(二)

    增删改查实现

    查询(select)

    根据id进行查询

    //UserDao接口
    public interface UserMapper {
        //查询所有
        List<User> getUserList();
        //根据id查询
        User getUserById(int id);
    
    
    }
    
    //UserDao接口实现
    <?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.godwin.mapper.UserMapper">
        <select id="getUserList" resultType="com.godwin.pojo.User">
            select * from mybatis.user;
        </select>
    
        <select id="getUserById" parameterType="int" resultType="com.godwin.pojo.User">
            select * from mybatis.user where id = #{id}
        </select>
    </mapper>
    
    @Test
        public void getUserById(){
            //第一步,获得SqlSession对象
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
    
            //获得UserMapper接口的class并返回他
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
            User user = mapper.getUserById(1);
            System.out.println(user);
            sqlSession.close();
        }
    

    增加(insert)

    //UserDao接口
    public interface UserMapper {
        //查询所有
        List<User> getUserList();
        //根据id查询
        User getUserById(int id);
        //增加
        int addUser(User user);
    
    
    
    }
    
    <?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.godwin.mapper.UserMapper">
        <select id="getUserList" resultType="com.godwin.pojo.User">
            select * from mybatis.user;
        </select>
    
        <select id="getUserById" parameterType="int" resultType="com.godwin.pojo.User">
            select * from mybatis.user where id = #{id}
        </select>
    
        <insert id="addUser" parameterType="com.godwin.pojo.User">
            insert into mybatis.user(id,name,pwd)values(#{id},#{name},#{pwd})
        </insert>
    </mapper>
    
    @Test
        public void addUser(){
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            int res = mapper.addUser(new User(5, "赵七", "1234567"));
    
            //提交事务
            sqlSession.commit();
            sqlSession.close();
        }
    

    修改(update)

    //UserDao接口
    public interface UserMapper {
        //查询所有
        List<User> getUserList();
        //根据id查询
        User getUserById(int id);
        //增加
        int addUser(User user);
        //修改
        int updateUser(User user);
    
    
    }
    
    <?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.godwin.mapper.UserMapper">
        <select id="getUserList" resultType="com.godwin.pojo.User">
            select * from mybatis.user;
        </select>
    
        <select id="getUserById" parameterType="int" resultType="com.godwin.pojo.User">
            select * from mybatis.user where id = #{id};
        </select>
    
        <insert id="addUser" parameterType="com.godwin.pojo.User">
            insert into mybatis.user(id,name,pwd)values(#{id},#{name},#{pwd});
        </insert>
    
        <update id="updateUser" parameterType="com.godwin.pojo.User">
            update mybatis.user set name=#{name},pwd=#{pwd}   where id=#{id};
        </update>
    </mapper>
    
     @Test
        public void updateUser(){
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
            int res = mapper.updateUser(new User(5,"秦七","123"));
    
            sqlSession.commit();
            sqlSession.close();
        }
    

    删除(delete)

    //UserDao接口
    public interface UserMapper {
        //查询所有
        List<User> getUserList();
        //根据id查询
        User getUserById(int id);
        //增加
        int addUser(User user);
        //修改
        int updateUser(User user);
        //删除
        int deleteUser(int id);
    
    }
    
    <?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.godwin.mapper.UserMapper">
        <select id="getUserList" resultType="com.godwin.pojo.User">
            select * from mybatis.user;
        </select>
    
        <select id="getUserById" parameterType="int" resultType="com.godwin.pojo.User">
            select * from mybatis.user where id = #{id};
        </select>
    
        <insert id="addUser" parameterType="com.godwin.pojo.User">
            insert into mybatis.user(id,name,pwd)values(#{id},#{name},#{pwd});
        </insert>
    
        <update id="updateUser" parameterType="com.godwin.pojo.User">
            update mybatis.user set name=#{name},pwd=#{pwd}   where id=#{id};
        </update>
    
        <delete id="deleteUser" parameterType="int">
            delete from mybatis.user where id = #{id};
        </delete>
    </mapper>
    
    @Test
        public void deleteUser(){
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
            int res = mapper.deleteUser(5);
    
            sqlSession.commit();
            sqlSession.close();
    
        }
    

    增删改查注意:

    //增修删必须加事务  
    sqlSession.commit();
    

    流程:

    1. 编写接口
    2. 编写对应的mapper中的sql语句
    3. 测试

    排查错误

    • 标签不要匹配错
    • resource绑定mapper,需要使用路径!
    • 读错从下往上翻
    • 程序配置文件必须符合规范
    • NullPointerException,没有注册到资源
    • maven资源没有导出问题

    Map

    假设,我们的实体类,或者数据库中的表,字段或者参数过多,我们应当考虑使用Map!

    //UserDao接口
    int addUser1(Map<String,Object>map);
    
        <insert id="addUser1" parameterType="map">
            insert into mybatis.user(id,name,pwd) values(#{userid},#{username},#{userpwd});
        </insert>
    
     @Test
        public void addUser1(){
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
            Map<String, Object> map = new HashMap<>();
            map.put("userid",5);
            map.put("username","七七");
            map.put("userpwd","233233");
    
            mapper.addUser1(map);
            sqlSession.commit();
            sqlSession.close();
        }
    
    

    Map传递参数,直接在sql中取出key即可!

    对象传递参数,直接在sql中取对象的属性即可

    只有一个基本数据类型的参数下,可以直接在sql中取到

    多个参数用Map,或者注解

    模糊查询

    1. Java代码执行的时候,传递通配符%%
    2. 在sql拼接中使用通配符!
    //UserDao接口 
    List<User> getUserLike(String value);
    
    <select id="getUserLike" resultType="com.godwin.pojo.User">
            select * from mybatis.user where name like #{value};
        </select>
    
     @Test
        public void getUserLike(){
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    
            List<User> userLike = mapper.getUserLike("%张%");
    
            for (User user : userLike) {
                System.out.println(user);
            }
    
            sqlSession.close();
        }
    

    复习笔记资料来自B站UP主:狂神说

  • 相关阅读:
    1007 素数对猜想 (20 分)
    1005 继续(3n+1)猜想 (25 分)
    1002 写出这个数 (20 分)
    1001 害死人不偿命的(3n+1)猜想 (15 分)
    mysql常用操作
    mysql乱码问题
    mysql忘记root密码
    linux开机启动
    fedora 调整屏幕亮度
    Access denied for user 'root'@'localhost' (using password:YES) 解决方案
  • 原文地址:https://www.cnblogs.com/XING-ZHI-JI-DA-XUE/p/14228519.html
Copyright © 2011-2022 走看看