mybatis的理解(下)(注解开发)

2023-12-14 04:42:51

http://t.csdnimg.cn/kcPCy??? log4j(日志的配置)

http://t.csdnimg.cn/IWa9H? mybatis的理解(上)(包括xml配置信息进行CRUD)

http://t.csdnimg.cn/weXLx? mybatis的理解(中)(Mapper代理开发)

首先我们看一下项目结构

????????注解进行CRUD,其实和xml文件配置一样,只不过注解开发把SQL语句写到了接口上面,而xml文件配置把sql语句写到xml文件配置里面。还有一点就是在使用注解进行CRUD的时候,需要在上述结构当中的mybatis-config.xml当中,把com.dao.IUserDao映射进去。

????????值得注意的是,注解进行CRUD确实是方便,但是SQL语句一复杂不利于我们阅读SQL,所以为了方便注解只能进行简单的增、删、改、查,假如SQL复杂的话还是需要xml文件配置。

??????? 下面是IUserDao接口源码(进行了简单的CRUD)

package com.dao;

import com.pojo.scores;
import com.pojo.zhang;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface IUserDao {
    /**
     * 查询所有的数据
     */
    @Select("select * from scores")
    List<scores> findAll();

    /**
     * 保存用户
     */
    @Insert("insert into zhang(id,name,age) values(#{id},#{name},#{age})")
    void saveUser(zhang z);

    /**
     *修改用户
     */
    @Update("update zhang set name=#{name},age=#{age} where id=#{id}")
    void updateUser(zhang z);

    /**
     * 根据Id查询一条记录,以JavaBean方式返回
     * @param id
     * @return
     */
    @Select("select * from zhang where id=#{id}")
    zhang selectIdMessage(Integer id);
}

然后就是实现该接口的实现类,这里我们就使用TestResult01包下的CRUDTest类进行实现。源码如下:

package TestResult01;

import com.dao.IUserDao;
import com.pojo.scores;
import com.pojo.zhang;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class CRUDTest {
    private static InputStream in;
    private static SqlSessionFactory build;
    private static SqlSession sqlSession;
    private static IUserDao userDao;

    @Before
    public void init() throws IOException {
        //1.读取mybatis的核心配置文件
        in = Resources.getResourceAsStream("config/mybatis-config.xml");
        //2.通过配置信息获取一个SqlSessionFactory
        build = new SqlSessionFactoryBuilder().build(in);
        //3.通过工厂获取一个sqlSession对象
        sqlSession = build.openSession();
        userDao = sqlSession.getMapper(IUserDao.class);
    }

    @After
    public void destroy() throws IOException {
        sqlSession.commit();
        sqlSession.close();
        in.close();
    }
    @Test
    public void testFindAll() {
        List<scores> all = userDao.findAll();
        for (scores scores : all) {
            System.out.println(scores);
        }

    }
    
    @Test
    public void testSave(){
        zhang zhang = new zhang();
        zhang.setName("小梅");
        zhang.setAge(20);
        zhang.setId(3);
        userDao.saveUser(zhang);
    }

    /**
     * 修改数据
     */
    @Test
    public void TestUpdate(){
        zhang zhang1 = new zhang();
        zhang1.setName("小清");
        zhang1.setAge(18);
        zhang1.setId(3);
        userDao.updateUser(zhang1);
    }
    @Test
    public void selectIdMessage(){
        zhang z = userDao.selectIdMessage(1);
        System.out.println(z);
    }
}

文章来源:https://blog.csdn.net/2301_77707071/article/details/134793615
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。