程序员社区

MyBatis实现增删改查

文章目录

      • 参数说明
      • 搭建环境
      • 1.select:根据id查询数据库中的数据
      • 2.insert:增加用户
      • 3.update:修改用户
      • 4.delete:删除用户

参数说明

  1. namespace:namespace中的包名要和接口的包名一致
  2. id:就是对应namespace类中的方法名
  3. resultType:SQL语句执行的返回值
  4. parameterType:参数类型

搭建环境

1.编写获取sqlSession对象的实体类:

package com.kuang.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;

//sqlSessionFactory--->sqlSession对象(生产)
public class MyBatisUtils {
    //一定要是静态的
    private static  SqlSessionFactory sqlSessionFactory;
    static{
        try {
            //第一步:获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //既然有了 SqlSessionFactory,顾名思义,我们就可以从中获得 SqlSession 的实例了。
    //SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }
}

2.编写连接数据库的核心配置文件:mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

<!--核心配置文件-->
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?
                useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC"/>
                <property name="username" value="root"/>
                <property name="password" value="123"/>
            </dataSource>
        </environment>
    </environments>
    <!--每一个Mapper.xml都需要在MyBatis核心配置文件中注册-->
    <mappers>
        <mapper resource="com/kuang/dao/UserMapper.xml"/>
    </mappers>
</configuration>

3.编写实体类:User.java

package com.kuang.pojo;

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 String getName() {
        return name;
    }

    public String getPwd() {
        return pwd;
    }

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

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

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

4.编写UserMapper接口:

package com.kuang.dao;
import com.kuang.pojo.User;
import java.util.List;
//操作数据库的实体类
public interface UserMapper {
    //返回所有的用户
   List<User> getUserList();

5.编写UserMapper接口的实现类配置文件:UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace=绑定一个Dao/Mapper接口-->
<!--让这个配置文件和UserDao接口绑定-->
<mapper namespace="com.kuang.dao.UserMapper">
    <select id="getUserList" resultType="com.kuang.pojo.User" >
<!--查询语句-->
         select * from mybatis.user
    </select>
</mapper>

6.编写测试类:UserDaoTest.java

package com.kuang.dao;
import com.kuang.pojo.User;
import com.kuang.utils.MyBatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;

public class UserDaoTest {
    @Test
    public void test(){
        //获取sqlSession对象
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        //方式一:getMapper
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        List<User> userList = mapper.getUserList();

        //方式二:不推荐
        //User ouserlist1= (User)sqlSession.selectList("com.kuang.dao.UserMapper.getUserList");

        for(User user:userList){
            System.out.println(user);
        }
        //关闭sqlSession
        sqlSession.close();
    }  
}

1.select:根据id查询数据库中的数据

1.编写接口:

//根据id查询用户,参数是一个基本类型
  User getUserById(int id);

2.编写对应Mapper中的SQL语句:

<!--根据id查询-->
<select id="getUserById" parameterType="int" resultType="com.kuang.pojo.User">
    select * from mybatis.user where id=#{id}
</select>

3.编写测试类:

@Test
public void getUserById(){
    //获取sqlSesssion对象
    SqlSession sqlSession = MyBatisUtils.getSqlSession();
    //获取执行SQL的对象
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    User user = mapper.getUserById(1);
    System.out.println(user);
    sqlSession.close();
}

2.insert:增加用户

1.编写接口:

 //增加用户,参数是一个引用类型
 int addUser(User user);

2.编写对应Mapper中的SQL语句:

<!--增加用户-->
    <insert id="addUser" parameterType="com.kuang.pojo.User">
        insert into mybatis.user(id,name,pwd) values(#{id},#{name},#{pwd});
    </insert>

3.编写测试类:

    //增删改需要提交事务
    @Test
    public void addUser(){
        //获取sqlSession对象
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int count = mapper.addUser(new User(4, "郑爽", "123"));
        if(count>0){
            System.out.println("插入成功");
        }
        //提交事务
        sqlSession.commit();
        sqlSession.close();;
    }

3.update:修改用户

1.编写接口:

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

2.编写对应Mapper中的SQL语句:

<!--修改用户-->
    <update id="updateUser" parameterType="com.kuang.pojo.User">
        update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id};
    </update>

3.编写测试类:

    @Test
    public void updateUser(){
        //获取sqlSession对象
        SqlSession sqlSession = MyBatisUtils.getSqlSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int count = mapper.updateUser(new User(4, "杨洋", "123"));
        if(count>0){
            System.out.println("修改成功");
        }
        sqlSession.commit();
        sqlSession.close();
    }

4.delete:删除用户

1.编写接口:

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

2.编写对应Mapper中的SQL语句:

<!--删除用户-->
  <delete id="deleteUser" parameterType="int">
      delete from mybatis.user where id=#{id};
  </delete>

3.编写测试类:

@Test
public void deleteUser(){
    SqlSession sqlSession = MyBatisUtils.getSqlSession();
    UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    int count = mapper.deleteUser(4);
    if(count>0){
        System.out.println("删除成功");
    }
    sqlSession.commit();
    sqlSession.close();
}

注意:
1.增删改一定要提交事务
2.
在这里插入图片描述
在这里插入图片描述

赞(0) 打赏
未经允许不得转载:IDEA激活码 » MyBatis实现增删改查

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区