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

IDEA2020.2 Mybatis入门(增删改查)

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

IDEA2020.2 Mybatis入门(增删改查)

文章目录
  • 一、使用IDEA2020.2搭建环境
    • 1.新建一个工程
    • 2.创建一个工程mybatis01
    • 3.在pom中导入jar包(mybatis,mysql,junit,log4j)
  • 二、连接数据库
    • 1.先在数据库中创建一个用来测试的表
    • 2.在IDEA中连接数据库
  • 三、创建项目
    • 1.项目的主要文件主要为如下六个文件
    • 2.首先是对应刚才在数据库中创建的表编写一个 *User实体类*
    • 3.编写 *mybatis核心配置文件*
    • 3.1介绍核心配置文件中的两个优化部分
    • 4.编写 *映射文件*
    • 5.*mybatis工具类* 的编写
    • 6.*UserDao接口* 的编写
    • 7.*测试类* 的编写
  • 四、在测试过程中遇到的一些问题
  • 注(学习来源):

一、使用IDEA2020.2搭建环境 1.新建一个工程

2.创建一个工程mybatis01

3.在pom中导入jar包(mybatis,mysql,junit,log4j)

二、连接数据库 1.先在数据库中创建一个用来测试的表

2.在IDEA中连接数据库

三、创建项目 1.项目的主要文件主要为如下六个文件

2.首先是对应刚才在数据库中创建的表编写一个 User实体类


~~代码如下:

package com.mybatis.Dao.pojo;

public class User {
    private  int id;
    private  String last_name;
    private  String Gender;
    private  String email;

    public User() {
    }

    public User(int id, String last_name, String gender, String email) {
        this.id = id;
        this.last_name = last_name;
        Gender = gender;
        this.email = email;
    }

    public int getId(int i) {
        return id;
    }

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

    public String getLast_name() {
        return last_name;
    }

    public void setLast_name(String last_name) {
        this.last_name = last_name;
    }

    public String getGender() {
        return Gender;
    }

    public void setGender(String gender) {
        this.Gender = gender;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }


    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", last_name='" + last_name + ''' +
                ", gender='" + Gender + ''' +
                ", email='" + email + ''' +
                '}';
    }
}


3.编写 mybatis核心配置文件

核心配置文件代码如下:





    

    
        
    
    
    
        
            
            
                
                
                
                
            
        
    
    
    
        
    

3.1介绍核心配置文件中的两个优化部分

第一部分:properties标签
在resources目录下建一个JDBC.propertes文件

这是JDBC.propertes文件中的内容

代码如下:

JDBC.driver=com.mysql.cj.jdbc.Driver
JDBC.url=jdbc:mysql://localhost:3306/mybatis?serverTimezone=GMT%2B8
JDBC.username=root
JDBC.password=123456

第二部分:自定义别名typeAliases标签
就是将 我这里"com.mybatis.Dao.pojo.User"这个名字取了一个别名为"user"
方便后面映射文件中resultType等调用

4.编写 映射文件

4.1映射文件的位置–在resources下的Mapper下创建的


代码如下:





    
        select * from mybatis.user
    

    
        insert into user values(#{id},#{last_name},#{gender},#{email})
    

    
        update user
        last_name=#{last_name},gender=#{gender},email=#{email} where id=#{id}
    

    
        delete from user where id = #{id}
    

    

5.mybatis工具类 的编写


代码如下:

package com.mybatis.Dao.utils;
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 java.io.IOException;
import java.io.InputStream;

public class MybatisUtils {
    //sqlSessionFactory 获取 sqlSession
        private static SqlSessionFactory sqlSessionFactory;
    static {
            try {
                //使用 mybatis 第一步:获取 sqlSessionFactory 对象
                String resource = "sqlMapperconfig.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
        //SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession(true);
        }
    }
6.UserDao接口 的编写

位置如下:

代码如下:代码中附加注释

package com.mybatis.Dao;
import com.mybatis.Dao.pojo.User;
import java.util.List;
// 这里面的代码是一个接口,对应映射文件的namespace+id值
public interface UserDao {  //UserDao对应的类路径是映射文件中的namespace
    List getUserList();
    int insert (User user);//insert对应的是映射文件中的id值
    int update(User user);//update对应的是映射文件中的id值
    int delete(int id);
    User selectOne(int id);
}
7.测试类 的编写

位置如下:

代码如下:

package com.mybatis.Dao;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.mybatis.Dao.pojo.User;
import com.mybatis.Dao.utils.MybatisUtils;
import java.util.List;
public class UserDaoTest {
    @Test
    //查询操作
    public void test01(){
        //第一步:获取 sqlSession 对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //将 MybatisUtils工具类封装成一个获取openSession()的方法(这个方法通过 MybatisUtils.getSqlSession()进行调用)
        //使用 getMapper 执行 sql 语句
        UserDao userdao = sqlSession.getMapper(UserDao.class);
        List userList = userdao.getUserList();
        for(User user:userList){
            System.out.println(user);
        }
        //关闭 sqlSession
        sqlSession.close();
    }
    @Test
    //插入操作
    public void test02(){
        //第一步:获取 sqlSession 对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //使用 getMapper 执行 sql 语句
        UserDao userdao = sqlSession.getMapper(UserDao.class);
        User user = new User(3,"aa","1","wewewe");
        int count = userdao.insert(user);
        sqlSession.commit();
        //关闭 sqlSession
        sqlSession.close();
    }
    @Test
    //更新操作
    public void test03(){
        //第一步:获取 sqlSession 对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //使用 getMapper 执行 sql 语句
        UserDao userdao = sqlSession.getMapper(UserDao.class);
        User user = new User();
        user.setId(3);
        user.setLast_name("cc");
        user.setGender("0");
        user.setEmail("xxxxxx");
        int count = userdao.update(user);
        System.out.println(count);
        //sqlSession.commit();
        //关闭 sqlSession
        sqlSession.close();
    }
    @Test
    //删除操作
    public void test04(){
        //第一步:获取 sqlSession 对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //使用 getMapper 执行 sql 语句
        UserDao userdao = sqlSession.getMapper(UserDao.class);
        User user = new User();
        int count = userdao.delete(2);
        System.out.println(count);
        //sqlSession.commit();
        //关闭 sqlSession
        sqlSession.close();
    }
    @Test
    //根据id查询一条记录
    public void test05(){
        //第一步:获取 sqlSession 对象
        SqlSession sqlSession = MybatisUtils.getSqlSession();
        //使用 getMapper 执行 sql 语句
        UserDao userdao = sqlSession.getMapper(UserDao.class);
        User user = userdao.selectOne(2);
        System.out.println(user);
        //关闭 sqlSession
        sqlSession.close();
    }
}

核心语句:

mybatis自动代理实现了接口的实现

四、在测试过程中遇到的一些问题

版本问题:数据库8.0之后的版本配置参数是这样的

《映射文件》中的namespace和id值与《UserDao接口》中的对应问题
Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象

Mapper接口开发需要遵循以下规范:
1、 映射文件(UserMapper.xml)中的namespace与mapper接口(我命名为了UserDao)的类路径相同。
2、 UserDao接口方法名和映射文件中定义的每个statement的id相同
3、 UserDao接口方法的输入参数类型和映射文件中定义的每个sql 的parameterType的类型相同
4、 UserDao接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同



映射文件中的sql语句不要加分号";"

SqlSessionFactory有两个常用方法创建SqlSession实例:我这里设置为自动提交了
openSession():会默认开启一个事务,但事务不会自动提交,意味着需要手动提交该事务,更新操作才会持久化到数据库中
openSession(boolean autoCommit):参数为是否自动提交,如果设置为true,那么不需要手动提交事务

注(学习来源):

观看的黑马程序猿视频进行学习
视频链接:黑马程序猿视频学习网址
在学习过程中遇到的一些问题看了这些博主的文章
IDEA2020创建mybatis项目
[IDQuantumYouEA2020创建mybatis项目](https://blog.csdn.net/kongchan0128/article/details/109765551)
第一次学习总结,有理解不对的地方希望大家不吝赐教给予指正

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/681165.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

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

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