mybatis中使用注解实现增删改查

文章目录

        • 1.导入单元测试的jar包
        • 2.操作数据库的方法
        • 3.注解的sql代码
        • 4.测试

1.导入单元测试的jar包

 <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

2.操作数据库的方法

我们知道增、删、改需要每次提交事务,所以在写工具类传入参数自动提交事务。

public class MybatisUtils {
    private static SqlSessionFactory sqlSessionFactory;
    static{
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //默认参数不提交事务
    public static SqlSession getSqlSession() {
        return getSqlSession(false);
    }
    //如果添加这个参数,就会自动提交事务
    public static SqlSession getSqlSession(boolean flag){
        return sqlSessionFactory.openSession(flag);
    }
}

3.注解的sql代码

注意:注解的sql代码和xmlsql代码一致。接口要绑定在mybatis-config.xml文件中

     
        
    
public interface UserMapper {
    @Select("select * from user")
    //查询所有用户
    List<User> selectUser();

    //根据用户id查询
    User selectById(int id);

    @Select("select * from user where name=#{username} and pwd=#{password}")
    //根据用户姓名,密码查询 两个以上的参数要使用注解
    User selectByUsernamePwd(@Param("username") String username,@Param("password") String password);

    @Insert("insert into user (id,name,pwd) values (#{id},#{name},#{pwd})")
    //增加用户信息
    int addUser(User user);

    @Update({"update user set name=#{name},pwd=#{pwd} where id=#{id}"})
    //修改用户信息
    int updateUser(User user);

    @Delete("delete from user where id=#{id}")
    //根据id删除用户信息
    int deleteUserById(int id);

}

4.测试

public class UserMapperTest {

    @Test
    public void testSelectUser() {
        //获取session 连接
        SqlSession session = MybatisUtils.getSqlSession(true);
        //获得接口对象
        UserMapper mapper = session.getMapper(UserMapper.class);
        List<User> users = mapper.selectUser();
        for (User user : users) {
            System.out.println(user);
        }

    }

    @Test
    public void testSelectById() {
        //获取session 连接
        SqlSession session = MybatisUtils.getSqlSession(true);
        //获得接口对象
        UserMapper mapper = session.getMapper(UserMapper.class);
        User user = mapper.selectById(4);
        System.out.println(user);

    }

    @Test
    public void testSelectByUsernamePwd() {
        //获取session 连接
        SqlSession session = MybatisUtils.getSqlSession(true);
        //获得接口对象
        UserMapper mapper = session.getMapper(UserMapper.class);
        User user = mapper.selectByUsernamePwd("刘德华", "19600808");
        System.out.println(user);
    }

    @Test
    public void testAddUser() {
        //获取session 连接
        SqlSession session = MybatisUtils.getSqlSession(true);
        //获得接口对象
        UserMapper mapper = session.getMapper(UserMapper.class);
        int user = mapper.addUser(new User(6, "黄晓明", "66666"));
        System.out.println(user);//增加成功打印 1

    }

    @Test
    public void testUpdateUser() {
        //获取session 连接
        SqlSession session = MybatisUtils.getSqlSession(true);
        //获得接口对象
        UserMapper mapper = session.getMapper(UserMapper.class);
        int user = mapper.updateUser(new User(6, "郑恺", "456333"));
        System.out.println(user);

    }

    @Test
    public void testDeleteUserById() {
        //获取session 连接
        SqlSession session = MybatisUtils.getSqlSession(true);
        //获得接口对象
        UserMapper mapper = session.getMapper(UserMapper.class);
        int user = mapper.deleteUserById(3);
        System.out.println(user);
    }

}

扩展:xml和注解可以同时使用注解对应一些复杂的业务逻辑无法完成在编写sql语句是错误不好查找。

你可能感兴趣的:(框架部分)