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

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文件中

     <mappers>
        <package name="com.li.mapper"/>
    </mappers>
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语句是错误不好查找。

猜你喜欢

转载自blog.csdn.net/lirui1212/article/details/105850196