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

xiaoxiao2022-06-12  37

         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&useUnicode=true&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的增删改查等基本操作。

转载请注明原文地址: https://www.6miu.com/read-4932584.html

最新回复(0)