MyBatis之增删(含批量)改查实践

         MyBatis(iBatis)是一个Java持久层的框架,其支持定制化SQL和使用简单的XML或注解来配置映射关系,加之其开源等特性,使得MyBatis成为一个优秀而又应用广泛的技术框架。本文和大家分享交流MyBatis的基本使用,希望能够对大家有所帮助。

一、准备环境

         这里我们新建一个java项目即可,导入需要的jar包,整个操作流程较为简单,项目结构图如下:

       

二、连接数据库

          (1)这里我们需要建立一个测试用的数据库(表),并配置数据库连接。数据库表设计截图如下:

       

    (2)编写数据库连接的配置文件(项目结构图中的config.xml),这里我们放在src下:

<?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>
     
     <typeAliases>
         <typeAlias alias="User" type="com.ldl.mybatis.User"/>
     </typeAliases>
 
    <environments default="development">
       <environment id="development">
           <transactionManager type="JDBC" />
           <dataSource type="POOLED">
              <property name="driver" value="com.mysql.cj.jdbc.Driver" />
              <property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=UTC&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
              <property name="username" value="root" />
              <property name="password" value="root" />
           </dataSource>
       </environment>
    </environments>
    
    <mappers>
        <mapper resource="com/ldl/mybatis/UserMapper.xml"/>
    </mappers>

    
 </configuration>

     (3)加入实体类映射文件配置,即蓝色字体部分。

三、java编码

        (1)添加实体类

       这里,我们新建一个实体类User,对应数据库的User表,包含id,userName,password三个属性字段,并生成get(),set()和toString()方法:

package com.ldl.mybatis;

public class User {

    private Integer id;
    private String userName;
    private String password;
    
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getUserName() {
        return userName;
    }
    public void setUserName(String userName) {
        this.userName = userName;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
    @Override
    public String toString() {
        return "[id=" + id + ", userName=" + userName + ", password=" + password + "]";
    }
}
(2)添加实体类映射文件

     新建UserMapper.xml,并在文件中,按照MyBatis的规范格式编写增删改查以及批量删除的手动sql语句(该映射文件头部大家在官网拷贝过来直接使用即可):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.ldl.mybatis.UserDao">

    <insert id="insert" parameterType="User">
        insert into user(userName,password) values(#{userName},#{password})
    </insert>

    <select id="getUserList" resultType="com.ldl.mybatis.User">
        select * from user
    </select>

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

    <update id="updateUser" parameterType="com.ldl.mybatis.User">
        update user set userName=#{userName},password=#{password} where id=#{id}
    </update>

    <delete id="deleteUserById" parameterType="int">
        delete from user where id=#{id}
    </delete>
    
    <delete id="deleteUserByIds" parameterType="java.util.List">
        delete from user where id in(
        <foreach collection="list" item="id" separator=",">
               #{id}     
        </foreach>
        )
    </delete>
</mapper>

(3)编写User类接口

     新建一个interface,并编写获取用户列表、根据id获取用户信息、添加用户、编辑用户、根据id删除用户、批量删除用户等接口。

package com.ldl.mybatis;

import java.util.List;

public interface UserDao {

    public List<User> getUserList();
    public User getUserById(Integer id);
    public void insert(User user);
    public void updateUser(User user);
    public void deleteUserById(Integer id);
    public void deleteUserByIds(List ids);
}

四、测试类

     首先,我们读取MyBatis的配置文件config.xml,并产生sessionFactory,进而创建session,这样我们就可以执行我们的持久化操作了。依次编写各方法实现代码如下:

package com.ldl.mybatis;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MybatisTest {

    private static SqlSessionFactory sessionFactory;
    private static SqlSession session;
    
    public static void main(String[] args) throws IOException {
        
        Reader reader = Resources.getResourceAsReader("config.xml");
        sessionFactory = new SqlSessionFactoryBuilder().build(reader);
        
        session = sessionFactory.openSession();
//        getUserList();
//        insert();
//        deleteById();
//        deleteByIds();
//        updateUser();
//        getUserById();
        
    }
    
    private static void insert() {
        session = sessionFactory.openSession();
        UserDao userDao = session.getMapper(UserDao.class);
        User user = new User();
        user.setUserName("赵六");
        user.setPassword("123456");
        userDao.insert(user);
        session.commit();
        session.close();
        getUserList();
    }
    
    private static void deleteById() {
        session = sessionFactory.openSession();
        UserDao userDao = session.getMapper(UserDao.class);
        userDao.deleteUserById(12);
        session.commit();
        session.close();
        getUserList();
    }
    
    private static void deleteByIds() {
        session =sessionFactory.openSession();
        UserDao userDao = session.getMapper(UserDao.class);
        List list = new ArrayList<>();
        list.add(10);
        list.add(11);
        userDao.deleteUserByIds(list);
        session.commit();
        session.close();
        getUserList();
    }
    
    private static void updateUser() {
        session = sessionFactory.openSession();
        UserDao userDao = session.getMapper(UserDao.class);
        User user = userDao.getUserById(8);
        user.setPassword("new123");
        userDao.updateUser(user);
        session.commit();
        session.close();
        getUserList();
    }
    
    private static List<User> getUserList(){
        session = sessionFactory.openSession();
        UserDao userDao = session.getMapper(UserDao.class);
        List<User> list = userDao.getUserList();
        for (User user : list) {
            System.out.println(user);
        }
        session.commit();
        session.close();
        return list;
    }
    
    private static User getUserById() {
        session =sessionFactory.openSession();
        UserDao userDao = session.getMapper(UserDao.class);
        User user = userDao.getUserById(9);
        System.out.println(user);
        session.commit();
        session.close();
        return user;
    }
}

五、测试效果

1.获取用户列表:

2.添加用户:

3.根据id删除用户:

4.批量删除用户:

5.编辑用户:

6.根据id获取用户信息:

       至此,演示了MyBatis基于MySQL的增删改查等基本操作。

猜你喜欢

转载自blog.csdn.net/ldllovegyh/article/details/83317715