Mybatis-基于代理实现CURD

基于代理实现CURD

根据ID查询

在持久层接口中添加findById方法

public User findById(Integer id);

在用户的映射配置文件中配置

<select id="findById" resultType="com.jd.domain.User">
        select id,userName as userName ,birthday as birthday,sex as sex,
        address as address from user WHERE  yn=1 and id=#{id}
    </select>

细节:

resultType属性:

        用于指定结果集的类型。

parameterType属性:

       用于指定传入参数的类型。

sql语句中使用#{}字符: 它代表占位符,相当于原来jdbc的?,都是用于执行语句时替换实际的数据。 具体的数据是由#{}里面的内容决定的。

#{}中内容的写法: 由于数据类型是基本类型,所以此处可以随意写。 

在测试类添加测试

 /**
     * 根据id查询
     * @throws Exception
     */
    @Test
    public void test1() throws Exception {
        //1、读取配置文件
        InputStream in=Resources.getResourceAsStream("SqlMapConfig.xml");
        //2、创建SqlSessionFactory的构建者对象
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        //3、使用构建者创建工厂对象SqlSessionFactory
        SqlSessionFactory factory= builder.build(in);
        //4、使用SqlSessionFactory创建SqlSession
        SqlSession session=factory.openSession();
        //5、使用SqlSession创建dao接口的代理对象
        UserMapper userDao =session.getMapper(UserMapper.class);
        //6、使用代理对象执行查询方法
        User user =userDao.findById(2);
        System.out.println(user);
        //7、释放资源
        session.close();
        try {
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

保存操作

在持久层接口中添加新增方法

/**
 * 保存操作
 */
public int save(User user);

在用户的映射配置文件中配置

<insert id="save" parameterType="com.jd.domain.User">
        insert into user(userName,address,sex,birthday) values(#{userName},#{address},#{sex},#{birthday})
    </insert>

添加测试类中的测试方法

 /**
     * 保存操作
     */
    @Test
    public void saveTest() throws Exception{
        InputStream in=Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory=builder.build(in);
        SqlSession session=factory.openSession();
        UserMapper userMapper=session.getMapper(UserMapper.class);
        User user = new User();
        user.setBirthday(new Date());
        user.setUserName("hhh");
        user.setSex("nna");
        user.setAddress("di");
        try {
            userMapper.save(user);
        }catch (Exception e){
            System.out.println("保存失败");
        }
        session.commit();
        session.close();
        in.close();
    }

用户更新

在持久层接口中添加更新方法

/**
 * 修改操作
 */
public int update(User user);

在用户的映射配置文件中配置

 <update id="update" parameterType="com.jd.domain.User">
        update user set userName=#{userName},address=#{address},sex=#{sex},birthday=#{birthday}
        where id=#{id}
    </update>

加入更新的测试方法

 /**
     * 修改操作
     */
    @Test
    public void updateTest() throws Exception{
        InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory =builder.build(in);
        SqlSession session =factory.openSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        User user = new User();
        user.setBirthday(new Date());
        user.setSex("女");
        user.setAddress("修改地址");
        user.setUserName("修改用户名");
        user.setId(10);
        try{
            int res = userMapper.update(user);
            if (res==1){
                System.out.println("更新数据成功");
            }
        }catch (Exception e){
            System.out.println("更新数据失败");

        }
        session.commit();
        session.close();
        in.close();
    }

用户删除

在持久层接口中添加删除方法

/**
 * 删除操作
 */
public int delete(Integer id);

在用户的映射配置文件中配置

 <delete id="delete" parameterType="java.lang.Integer">
        delete from user where id=#{id}
    </delete>

加入删除的测试方法

 /**
     * 删除操作
     */
    @Test
    public void deleteTest() throws Exception{
        InputStream in=Resources.getResourceAsStream("SqlMapConfig.xml");
        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
        SqlSessionFactory factory = builder.build(in);
        SqlSession session = factory.openSession();
        UserMapper userMapper = session.getMapper(UserMapper.class);
        try {
            int res = userMapper.delete(8);
            if (res==1){
                System.out.println("删除成功");
            }
        }catch (Exception e){
            System.out.println("删除失败");
        }
        session.commit();
        session.close();
        in.close();
    }
发布了311 篇原创文章 · 获赞 58 · 访问量 28万+

猜你喜欢

转载自blog.csdn.net/qq_30353203/article/details/103608690