栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis学习(1)配置遇到的问题及增删改查

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis学习(1)配置遇到的问题及增删改查

Mybatis 环境
  • jdk1.8
  • mysql5.7
  • maven3.6.1
  • idea
如何获取学习Mabatis
  • maven仓库


    org.mybatis
    mybatis
    3.4.6

  • GitHub release发行版

  • SSM都是有配置文件的,对照官网学习 mybatis官网

写第一个Mybatis程序
  1. 搭建环境
//创建一个父工程导入依赖,mybatis,mysql-connector.junit

        
            mysql
            mysql-connector-java
            5.1.47
        
        
        
            org.mybatis
            mybatis
            3.4.6
        
        
            junit
            junit
            4.12
        

    
  1. 在父工程里面新建一个maven的module,配置核心资源配置文件pom.xml

  2. 在官方文档找到配置语句,resource下面创建mybatis-config.xml文件,复制进去,修改好driver,url…




    
        
            
            
                
                
                
                
            
        
    

  1. 利用官方文档写一个mybatis的工具类
public class myBatisUtil {
    private static SqlSessionFactory sqlSessionFactory;
    static {
        String resource = "org/mybatis/example/mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    }

    public static SqlSession getSession() {
        return sqlSessionFactory.openSession();
    }
}
  1. 编写实体类
public class User {
    private int id;
    private String name;
    private String pwd;

    public User() {
        
    }

    public User(int id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }
}
  1. 编写操作数据库的DAO层,包括接口和实现接口的 xml 文件
//要实现的接口
public interface UserDao {
    List getUserList();
}
//mapper.xml文件,相当于用配置的方式来实现接口




    
    
        select * from mybatis.user
    

  1. 很重要的一步,在.config里面配置

    

  1. junit编写测试类
public class UserDaoTest {
    @Test
    public void test() {
        SqlSession sqlSession= myBatisUtil.getSession();
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List list=mapper.getUserList();

        for (User user : list) {
            System.out.println(user);
        }
    }
}
  1. 出现的问题
  • could not find xx.config 原因是在pom.xml下面写的资源过滤有问题

    
        
            src/main/java
            
                ***.xml
            
            true
        
    
    下面这段加上就会出问题
    //--------------
    
        
            src/main/resources
            
                ***.xml
            
            true
        
    
    //-------------

  • org.apache.ibatis.exceptions.PersistenceException:

    Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
这个问题只需要把useSSL=true改成 useSSL=false就好了
CRUD
  • 对数据库mybatis.user的增删改查

  • 注意的地方

    1. sqlsession用完需要关闭 sqlsession.close()

    2. 增删改的操作都需要提交事务sqlsession.commit()

//UserMapper接口的编写
public interface UserMapper {
    //查询全部用户
    List getUserList();

    //查询单个用户
    User getUserById(int id);

    //增加一个用户
    int addUser(User user);

    //修改用户信息
    int updateUser(User user);

    //删除一个用户
    int deleteUser(int id);

}
//对应UserMapper.xml配置文件的编写



    
        SELECT * FROM mybatis.user WHERe id=#{id}
    

    
        INSERT into mybatis.user (id,name,pwd) VALUES (#{id},#{name},#{pwd})
    

    
        UPDATE mybatis.user set id=#{id},name=#{name},pwd=#{pwd} WHERe id=#{id}
    

    
        DELETE FROM mybatis.user WHERe id=#{id}
    

//测试类编写
public class UserDaoTest {
    @Test
    public void test() {
        SqlSession sqlSession= myBatisUtil.getSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List list=mapper.getUserList();

        for (User user : list) {
            System.out.println(user);
        }
    }

    @Test
    public void getUserById() {
        SqlSession sqlSession=myBatisUtil.getSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User userById = mapper.getUserById(3);
        System.out.println(userById);

        sqlSession.close();
    }

    @Test
    public void addUer() {
        SqlSession sqlSession = myBatisUtil.getSession();
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        int res=userMapper.addUser(new User(4, "xpc", "00000000"));
        System.out.println("插入成功"+res);
        //增删改需要提交事务
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void updateUser() {
        SqlSession sqlSession = myBatisUtil.getSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int res=mapper.updateUser(new User(2, "zhangsan", "aaa"));
        if (res>0) {
            System.out.println("修改成功"+res);
        }
        sqlSession.commit();
        sqlSession.close();
    }

    @Test
    public void deleteUser() {
        SqlSession sqlSession = myBatisUtil.getSession();

        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int res = mapper.deleteUser(2);
        if (res > 0) {
            System.out.println("删除成功" + res);
        }
        sqlSession.commit();
        sqlSession.close();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/299378.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号