Mybatis 开发 DAO 之 Mapper 动态代理

使用 Maven 搭建 Mybatis 环境:https://blog.csdn.net/qq_42322548/article/details/89913220

一、创建项目

创建一个 Maven 项目。

1、添加 jar 包依赖。


    
    
        org.mybatis
        mybatis
        3.5.1
    
    
    
        mysql
        mysql-connector-java
        8.0.13
    
    
    
        junit
        junit
        4.12
    
    
    
        org.projectlombok
        lombok
        1.18.8
        provided
    

2、设置资源文件路径,使 Maven 能编译 resource 文件夹之外的资源文件。


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

3、目录结构。

Mybatis 开发 DAO 之 Mapper 动态代理_第1张图片

二、创建实体类

这里使用了 Lombok:https://blog.csdn.net/qq_42322548/article/details/91438451

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private int id;
    private String account;
    private String password;
    private String name;
    private int phone;
}

三、添加 JDBC 配置文件

在 resource 文件夹新建 jdbc.properties 配置文件,保存配置相关的信息。

# mysql驱动包名
driver=com.mysql.cj.jdbc.Driver
# 数据库连接地址
url=jdbc:mysql://localhost:3306/demo_1? serverTimezone=GMT &useUnicode=true& characterEncoding=utf8
# 用户名
username=root
# 密码
password=root

四、添加配置 Mybatis

在 resource 文件夹新建 mybatis-config.xml 。




    
    
    
    
        
    
    
    
        
            
            
            
            
            
                
                
                
                
            
        
    
    
    
        
    

五、创建 sql 映射文件

在 mapper 文件夹新建 UserMapper.xml 文件,并在 Configuration.xml 文件中加载该文件。

编写 mapper.xml(映射文件)和 mapper.java 需要遵循一个开发规范:

  • mapper.xml中namespace就是mapper.java的类全路径。
  • mapper.xml中statement的id和mapper.java中方法名一致。
  • mapper.xml中statement的parameterType指定输入参数的类型和mapper.java的方法输入参数类型一致
  • mapper.xml中statement的resultType指定输出结果的类型和mapper.java的方法返回值类型一致。



    
    
        insert into users values (#{id}, #{account}, #{password}, #{name},  #{phone})
    
    
    
        delete from users where id = #{id}
    
    
    
        update users set account = #{account}, password = #{password}, name = #{name},  phone = #{phone} where id = #{id}
    
    
    
    
    

六、创建 UserMapper 接口

在 mapper 文件夹新建 UserMapper 接口,并将 sql 映射文件中的 namespace 改成 UserMapper 接口的地址。

public interface UserMapper {
    /**
     * 增
     * @param user
     */
    void insertUser(User user);
    /**
     * 删
     * @param user
     */
    void deleteUser(User user);
    /**
     * 改
     * @param user
     */
    void updateUser(User user);
    /**
     * 通过id查找
     * @param user
     * @return
     */
    User queryUserById(User user);
    /**
     * 通过名字模糊查找
     * @param name
     * @return
     */
    List queryUserByName(String name);
}

七、编写测试类

在 test 文件夹 新建 junit 测试类。

public class test {
    private SqlSessionFactory sqlSessionFactory = null;
    @Before
    public void init() throws Exception{
        // 创建SqlSessionFactoryBuilder对象
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        // 加载mybaits-config.xml配置文件
        InputStream inputStream = Resources.getResourceAsStream("mybaits-config.xml");
        // 创建SqlsessionFactory
        this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
    }
    @Test
    public void testInsert(){
        // 获取sqlSession,和spring整合后由spring管理
        SqlSession sqlSession = this.sqlSessionFactory.openSession();
        // 从sqlSession中获取Mapper接口的代理对象
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = new User(1, "123", "abc", "张三", 110);
        userMapper.insertUser(user);
        // 和spring整合后由spring管理
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void testDelete(){
        SqlSession sqlSession = this.sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        userMapper.deleteUser(1);
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void testQueryUserById(){
        SqlSession sqlSession = this.sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        User user = new User();
        user.setId(1);
        User userResult = userMapper.queryUserById(user);
        System.out.println(userResult);
    }

    @Test
    public void testQueryUserByName(){
        SqlSession sqlSession = this.sqlSessionFactory.openSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        List userList = userMapper.queryUserByName("张");
        System.out.println(userList);
    }
}

你可能感兴趣的:(Mybatis)