MyBatis之CRUD

1.MyBatis之CRUD

1.1 查询

mybatis配置请参考:https://blog.csdn.net/Yearingforthefuture/article/details/115683636
namespace:全限定类名,后面记得加类名。com.test.dao.UserDao
id:指具体方法名称。
parameterType:参数类型。
resultType:返回结果类型。
UserDao.java

public interface UserDao {
    //根据Id查询用户
    User getUserById(int id);
}

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.test.dao.UserDao">
  <select id="getUserById" parameterType="int" resultType="com.test.pojo.User">
      select * from user where id=#{id}
  </select>
</mapper>

测试

@Test
    public void test2() {
        SqlSession sqlSession = null;
        try {
            //1.获取session对象
            sqlSession= MybatisUtils.getSqlSession();
            //2.获取Dao对象
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            User user = userDao.getUserById(1);
            System.out.println(user);
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            //3.关闭sqlSession
            sqlSession.close();
        }
    }

1.2 增加

注意:
增删改必须加上提交事务!!!
在UserMapper.xml中insert标签没有返回值
UserDao.java

public interface UserDao {
    //增加用户
    int addUser(User user);
}

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.test.dao.UserDao">
  <insert id="addUser"  parameterType="com.test.pojo.User" >
      insert into user(id, name, pwd) values (#{id},#{name},#{pwd});
  </insert>
</mapper>

测试

@Test
    public void test3() {
        SqlSession sqlSession = null;
        try {
            //1.获取session对象
            sqlSession= MybatisUtils.getSqlSession();
            //2.获取Dao对象
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            int num = userDao.addUser(new User(4, "哈哈", "1233333"));
            if (num > 0) {
                System.out.println("插入成功!");
            }
            sqlSession.commit();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            //3.关闭sqlSession
            sqlSession.close();
        }
    }

1.3 修改

UserDao.java

public interface UserDao {
    //修改用户
    int updateUser(User user);
}

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.test.dao.UserDao">
  <update id="updateUser" parameterType="com.test.pojo.User" >
      update user set name=#{name},pwd=#{pwd} where id=#{id};
  </update>
</mapper>

测试

 @Test
    public void test4() {
        SqlSession sqlSession = null;
        try {
            //1.获取session对象
            sqlSession= MybatisUtils.getSqlSession();
            //2.获取Dao对象
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            int num = userDao.updateUser(new User(4, "呵呵", "123123123"));
            if (num > 0) {
                System.out.println("修改成功!");
            }
            sqlSession.commit();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            //3.关闭sqlSession
            sqlSession.close();
        }
    }

1.4 删除

UserDao.java

public interface UserDao {
    //删除用户
    int deleteUser(int id);
}

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.test.dao.UserDao">
  <delete id="deleteUser" parameterType="int" >
      delete from user where id=#{id}
  </delete>
</mapper>

测试

@Test
    public void test5() {
        SqlSession sqlSession = null;
        try {
            //1.获取session对象
            sqlSession= MybatisUtils.getSqlSession();
            //2.获取Dao对象
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            int num = userDao.deleteUser(4);
            if (num > 0) {
                System.out.println("删除成功!");
            }
            sqlSession.commit();
        } catch (Exception e){
            e.printStackTrace();
        }finally {
            //3.关闭sqlSession
            sqlSession.close();
        }
    }

2. 万能Map

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

演示:
UserDao.java

public interface UserDao {
    //修改用户名称
    int updateUser2(Map<String,Object> map);
}

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.test.dao.UserDao">
  <update id="updateUser2" parameterType="map" >
      update user set name=#{userName} where id=#{userId};
  </update>
</mapper>

测试

@Test
    public void test6() {
        SqlSession sqlSession = null;
        try {
             sqlSession = MybatisUtils.getSqlSession();
            UserDao userDao = sqlSession.getMapper(UserDao.class);
            Map<String,Object> map = new  HashMap<String,Object>();
            map.put("userName","刘备");
            map.put("userId",3);
            int num = userDao.updateUser2(map);
            if (num > 0) {
                System.out.println("修改成功!");
            }
            sqlSession.commit();
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            sqlSession.close();
        }
    }
  • Map传递参数,直接在sql中取出key即可!【parameterType=“map”】
  • 对象传递参数,直接在sql中取对象的属性即可!【parameterType=“Object”】
  • 只有一个基本类型参数的情况下,可以直接在sql中取到!
  • 多个参数用Map,或者注解!

3. 模糊查询

1.Java代码执行的时候,传递通配符% %

List<User> userList = mapper. getUserlike ("%李%");

2.在sq|拼接中使用通配符% %

select * from mybatis.user where name like "%"#{value}"%"
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看rEADME.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值