ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mybatis实现数据增删改查(详细讲解)

2022-01-18 00:02:48  阅读:131  来源: 互联网

标签:UserDao 改查 增删 sqlSession user Mybatis import public User


目录

1.搭建项目

1、搭建实验数据库

 2、导入相关的jar包

 3、创建mybatis的配置文件

4、创建一个关于mybatis的关键对象SqlSessionFactory、SqlSession的工具类

5、搭建实体类

 6、接口

7、mapper文件 

8、目录结构图

“查”操作

查询所有的User数据

根据id查询用户 

“ 改”操作

“删”操作

源码 


 思路流程:搭建环境-->导入Mybatis--->编写代码--->测试


1.搭建项目

1、搭建实验数据库


#创建一个叫mybatis的数据
CREATE DATABASE `mybatis`;

#使用mybatis数据库 
USE `mybatis`;
 
#创建一个user表
DROP TABLE IF EXISTS `user`;
 
#插入数据
CREATE TABLE `user` (
  `id` int(20) NOT NULL,
  `name` varchar(30) DEFAULT NULL,
  `pwd` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
 
insert  into `user`(`id`,`name`,`pwd`) values (1,'王一','123456'),(2,'黄二','456789'),(3,'张三','987654');

 2、导入相关的jar包

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>
#如果是8版本的MySQL使用下面这个
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.22</version>
</dependency>

 3、创建mybatis的配置文件

<?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=utf8"/>
                <property name="username" value="MySQL的用户名"/>
                <property name="password" value="MySQL的密码"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="mapper/UserDaoMapper.xml"/>
    </mappers>

</configuration>

4、创建一个关于mybatis的关键对象SqlSessionFactory、SqlSession的工具类

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 {
 
    private static SqlSessionFactory sqlSessionFactory;
 
    static {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    //获取SqlSession连接
    public static SqlSession getSession(){
        return sqlSessionFactory.openSession();
    }
 
}

5、搭建实体类

public class User {
    private int id;
    private String name;
    private String pwd;
}
//需要get,set,tostring方法

 6、接口

public interface UserDao {

}

7、mapper文件 

<?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">
<mapper namespace="com.dao.UserDao">
    

</mapper>

8、目录结构图

 到此我们的项目就搭建好了,接下来我们来进行查增改删的操作。

“查”操作

查询所有的User数据

首先在我们的接口类定义一个查询的方法 参数类是List<User>因为我们查询的是所有的用户数据所以返回的结果肯定不只是一个用户的数据所以就定义成集合。

import java.util.List;
import java.util.Map;

public interface UserDao {
    List<User> getUserList();
    
}

 我们定义完以后需要去mapper文件配置我们的方法跟SQL语句

<?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">
<mapper namespace="com.dao.UserDao">
    <!--  这里的id是我们之前在接口定义的方法名, resultType是指返回结果的类型我们查询的是用户数据所以返回接口是User -->
    <select id="getUserList" resultType="com.pojo.User">
        select * from user
    </select>

</mapper>

 测试一下

import com.pojo.User;
import com.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;

import java.util.List;


public class UserTest {
    @Test
    public void getUserList(){
        //使用我们的工具类创建一个SqlSession对象 
        SqlSession sqlSession = MybatisUtils.getSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        List<User> userList = userDao.getUserList();
        for (User user : userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }
}

结果

流程:接口类编写方法->mapper文件配置->测试 

根据id查询用户 

 接口类编写方法

import com.pojo.User;

import java.util.List;
import java.util.Map;

public interface UserDao {
    List<User> getUserList();
    User getUserById( int ids);
}

mapper文件

<?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">
<mapper namespace="com.dao.UserDao">

    <select id="getUserList" resultType="com.pojo.User">
        select * from user
    </select>
    <select id="getUserById" resultType="com.pojo.User" parameterType="int">
        select * from user where id=#{ids}
    </select>


</mapper>

测试一下

@Test
public void getUserByIdTest(){
        SqlSession sqlSession = MybatisUtils.getSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        User user = userDao.getUserById(2);
        System.out.println(user);
        sqlSession.close();
    }

结果

“增”操作

接口类添加方法

public interface UserDao {
    List<User> getUserList();
    User getUserById( int ids);
    //插入语句只有成功或者失败所以我们这里使用boolean 
    boolean addUser(User user);
}

mapper文件

<!--注意insert 是没有resultType返回类型的-->
<insert id="addUser" parameterType="com.pojo.User">
    insert into user (id,name,pwd)values (#{id},#{name},#{pwd});
</insert>

测试一下

 @Test
    public void addUserTest(){
        SqlSession sqlSession = MybatisUtils.getSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        User user = new User();
        user.setId(4);
        user.setName("李四");
        user.setPwd("123456");
        if (userDao.addUser(user)) {
            System.out.println("添加用户成功");
        }else{
            System.out.println("添加用户失败");
        }
        // 注意要使用commit方法提交事务更改数据都需要提交事务否则执行语句会无效
        sqlSession.commit();
        sqlSession.close();
    }

“ 改”操作

 如果按照以上的操作相信大家应该也应该都会了,该操作我用一下别的方法,虽然它不是正规的方法但是它很实用,话不多说,步入正题

接口类

public interface UserDao {
    List<User> getUserList();
    User getUserById( int ids);
    boolean addUser(User user);
    //大家注意看我们的更改方法的参数是Map
    boolean updataUser(Map<String,Object> map);
}

 mapper文件

<!---->由于我们的参数是Map,所以我们mapper文件的参数也是map
<update id="updataUser" parameterType="map">
    update user set name = #{name},pwd=#{pwd} where id=#{id};
</update>

测试一下

@Test
    public void updataUserTest(){
        SqlSession sqlSession = MybatisUtils.getSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        Map<String,Object> map = new HashMap<String,Object>();
        //map方法的好处就是可以直接这样添加,他适用于增删改查四种操作
        map.put("id",1);
        map.put("name","哇哈哈哈哈哈");
        map.put("pwd","aaaaaaaa");
        if (userDao.updataUser(map)) {
            System.out.println("更改用户成功");
        }else{
            System.out.println("更改用户失败");
        }
        // 注意要使用commit方法提交事务更改数据都需要提交事务否则执行语句会无效
        sqlSession.commit();
        sqlSession.close();
    }

 结果

“删”操作

接口类

import com.pojo.User;

import java.util.List;
import java.util.Map;

public interface UserDao {
    List<User> getUserList();
    User getUserById( int ids);
    boolean addUser(User user);
    boolean updataUser(Map<String,Object> map);
    boolean deleteUser(Map<String,Object> map);
}

mapper文件

<delete id="deleteUser" parameterType="map">
    delete * from user where id=#{id};
</delete>

测试一下

 @Test
    public void deleteUserTest(){
        SqlSession sqlSession = MybatisUtils.getSession();
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("id",1);
        if (userDao.updataUser(map)) {
            System.out.println("删除用户成功");
        }else{
            System.out.println("删除用户失败");
        }
        // 注意要使用commit方法提交事务更改数据都需要提交事务否则执行语句会无效
        sqlSession.commit();
        sqlSession.close();
    }

结果

源码 

百度网盘 请输入提取码zce5

标签:UserDao,改查,增删,sqlSession,user,Mybatis,import,public,User
来源: https://blog.csdn.net/ET_TE/article/details/122549122

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有