mybatis 使用注解进行增删改查(CRUD)

mybatis 注解CRUD

1.在mybatisUtils中设置事务的自动提交

public class MybatisUtils {
    private static  SqlSessionFactory sqlSessionFactory;
    static {
        //使用mybatis第一步:获取sqlSessionFactory对象
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource); ;
             sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
public static SqlSession getSqlSqlSession(){
        return sqlSessionFactory.openSession(true);

    }

2.mapper文件中写入注解方式:

//使用注解进行增删改查
    //根据id查询用户
    @Select("select * from user where id = #{id}")
    User selectUserById(@Param("id") int id);
    //添加一个用户
    @Insert("insert into user (id,name,pwd) values (#{id},#{name},#{pwd})")
    int addUser3(User user);
    //修改一个用户
    @Update("update user set name=#{name},pwd=#{pwd} where id = #{id}")
    int updateUser(User user);
    //根据id删除用
    @Delete("delete from user where id = #{id}")
    int deleteUser1(@Param("id")int id);

3.测试类

//注解增删改查 测试类
    //查找用户
    @Test
    public void testSelectUserById() {
        SqlSession session = MybatisUtils.getSqlSqlSession();
        UserMapper mapper = session.getMapper(UserMapper.class);

        User user = mapper.selectUserById(7);
        System.out.println(user);

        session.close();
    }
    //添加用户
    @Test
    public void testaddUser3() {
        SqlSession session = MybatisUtils.getSqlSqlSession();
        UserMapper mapper = session.getMapper(UserMapper.class);

        User user = new User(9, "小玲", "123456");
        mapper.addUser3(user);

        session.close();
    }
    //修改
    @Test
    public void testUpdateUser() {
        SqlSession session = MybatisUtils.getSqlSqlSession();
        UserMapper mapper = session.getMapper(UserMapper.class);

        User user = new User(5, "熊猫", "zxcvbn");
        mapper.updateUser(user);

        session.close();
    }
    //删除
    @Test
    public void testDeleteUser() {
        SqlSession session = MybatisUtils.getSqlSqlSession();
        UserMapper mapper = session.getMapper(UserMapper.class);

        mapper.deleteUser1(2);

        session.close();
    }
    【注意点:增删改一定记得对事务的处理】本文中设置自动提交,所以在测试类中不用再次提交。

关于@Param

@Param注解用于给方法参数起一个名字。以下是使用原则:

  1. 在方法只接受一个参数的情况下,可以不使用@Param。
  2. 在方法接受多个参数的情况下,建议一定要使用@Param注解给参数命名。
  3. 如果参数是 JavaBean , 则不能使用@Param。
  4. 不使用@Param注解时,参数只能有一个,并且是Javabean。

#与$的区别

#{} 的作用主要是替换预编译语句(PrepareStatement)中的占位符? 【推荐使用】

INSERT INTO user (name) VALUES (#{name});
INSERT INTO user (name) VALUES (?);

${} 的作用是直接进行字符串替换

INSERT INTO user (name) VALUES ('${name}');
INSERT INTO user (name) VALUES ('xiong');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值