Mybatis-基于代理实现CURD

简介: 基于代理实现CURD根据ID查询在持久层接口中添加findById方法public User findById(Integer id);在用户的映射配置文件中配置

基于代理实现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();
    }
目录
相关文章
|
8月前
|
SQL Java 数据库连接
Mybatis如何使用mapper代理开发
Mybatis如何使用mapper代理开发
|
9月前
|
XML Java 数据库连接
探秘MyBatis:手写Mapper代理的源码解析与实现
探秘MyBatis:手写Mapper代理的源码解析与实现
103 1
|
9月前
|
SQL Java 数据库连接
MyBatis精髓揭秘:Mapper代理实现的黑盒探索
MyBatis精髓揭秘:Mapper代理实现的黑盒探索
150 1
|
9月前
|
XML Java 数据库连接
调用mybatisplus的封装CURD方法出现报错
调用mybatisplus的封装CURD方法出现报错
52 0
|
9月前
|
Java 数据库连接 mybatis
在SpringBoot集成下,Mybatis的mapper代理对象究竟是如何生成的
在SpringBoot集成下,Mybatis的mapper代理对象究竟是如何生成的
136 0
|
9月前
|
SQL XML Java
|
9月前
|
SQL XML Java
一文彻底搞懂Mybatis系列(三)之mybatis完成增删改查CURD功能超级详细
一文彻底搞懂Mybatis系列(三)之mybatis完成增删改查CURD功能超级详细
|
9月前
|
设计模式 SQL Java
Mybatis源码分析系列之第四篇:Mybatis中代理设计模型源码详解
Mybatis源码分析系列之第四篇:Mybatis中代理设计模型源码详解
|
9月前
|
XML 缓存 Java
MyBatis原理分析之获取Mapper接口的代理对象
MyBatis原理分析之获取Mapper接口的代理对象
199 0
|
Java 数据库连接 数据库
MyBatis CURD操作深度解析
MyBatis提供了<insert>、<update>和<delete>等元素来执行插入、更新和删除操作。以下是一个简单的插入操作的例子
195 0
MyBatis CURD操作深度解析