mybatis入门,CRUD,万能Map,模糊查询


第一个Mybatis程序

核心配置文件mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>


    
        
            
            
                
                
                
                
            
        
    
    
        
    

编写mybatis工具类

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 sqlSessionFactory.openSession();
    }
}

编写代码

  • 实体类User
public class User {
    private int id;
    private String username;
    private String password;
}
//重写方法toString方法等
  • Dao接口UserMapper.java
public interface UserMapper {
    List getUserList();
}
  • 接口实现类Mapper配置文件UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>


  

  • test类
public class test {
    @Test
    public void test1(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List userList = userMapper.getUserList();

        for (User user : userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }
}
  • 约定大于配置

    
        
        src/main/resources/
        
            **/*.properties
             **/*.xml
        
        true
        

        
        src/main/java
        
            **/*.properties
            **/*.xml
        
        true
     

CRUD

  • UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>


    

    

    

    

    

  • UserMapper.java
public interface UserMapper {
    List getUserList();

    User getUserById(int id);

    void addUser(User user);

    void updateUser(User user);

    void deleteUser(int id);
}
  • test.java
public class test {
    @Test
    public void getUserList_test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List userList = userMapper.getUserList();

        for (User user : userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }

    @Test
    public void getUserById_test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = userMapper.getUserById(1);
        System.out.println(user);
        sqlSession.close();
    }

    @Test
    public void addUser_test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
         userMapper.addUser(new User(66,"zhang", "7777"));
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void updateUser_test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.updateUser(new User(2,"oooo", "000000"));
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void deleteUser_test(){
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.deleteUser(10);
        sqlSession.commit();
        sqlSession.close();
    }
}

万能的Map查询

  • Map被用为构造器
User getUserByMapId(Map map);

@Test
public void getUserByMapId_test() {
    SqlSession sqlSession = MybatisUtils.getSqlSession();
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    Map map = new HashMap<>();
    map.put("mapId", 1);
    User user = userMapper.getUserByMapId(map);
    System.out.println(user);
    sqlSession.commit();
    sqlSession.close();
}

模糊查询怎么写

  • java执行代码的时候,使用通配符% %
List userlist = mapper.getUserLike("%张%");
  • 在sql拼接中使用通配符!
select * from db4.user where name like "%"#{value}"%"