MyBatis框架操作数据库增删改查基本操作

4 篇文章 0 订阅
本文介绍了使用MyBatis框架进行数据库增删改查的基本步骤,包括创建maven项目,引入依赖,配置mybatis-conf.xml文件,创建映射XML文件,编写User、UserDao等相关操作类,最后在App.java中调用实现操作。
摘要由CSDN通过智能技术生成

MyBatis框架操作数据库增删改查基本操作

需要配置一些xml等等,可以去MyBatis中文站点查看引导文档,复制下来修改部门内容即可使用

如有探讨请点击这里与我交流(^U^)ノ~YO

一、准备工作

1、创建maven项目后引入maven依赖
 <dependencies>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.1.0</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.32</version>
        </dependency>

    </dependencies>
2、在项目的资源目录下创建MyBatis的配置资源文件,文件命名都行,最终是xml文件即可,我用的命名为mybatis-conf.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://数据库ip地址:3306/你要操作的数据库名称"/>
                <property name="username" value="你的数据库账号"/>
                <property name="password" value="你的数据库密码"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
    	<!-- 这里的xml映射文件均需要在资源文件目录下创建,并按照一点的规范格式进行内容编辑 -->
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>
3、创建操作的表的映射xml文件,该xml文件命名对应mybatis-conf.xml>mappers>mapper的resource值,命名为:首字母大写的表名 + Mapper.xml,e.g.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">
<mapper namespace="user">
    <!---->
    <select id="select" parameterType="int" resultType="top.it1002.mybatis.domain.User">
      select * from user where uid = #{uid}
    </select>

    <select id="selectAll" resultType="top.it1002.mybatis.domain.User">
        select * from user
    </select>

    <!---->
    <update id="update" parameterType="top.it1002.mybatis.domain.User">
      update user
      <set>
        <if test="age != null">age = #{age},</if>
        <if test="name != null">name = #{name}</if>
      </set>
      where uid = #{uid}
    </update>

    <!---->
    <insert id="insert">
        insert user(name, age) values(#{name}, #{age})
    </insert>

    <!---->
    <delete id="delete" parameterType="int">
        delete from user where uid = #{uid}
    </delete>

    <delete id="deleteAll">
        delete from user;
    </delete>
</mapper>

二、编写操作类

1、User.java
package top.it1002.mybatis.domain;

/**
 * @Author      王磊
 * @Date        2019/3/14
 * @ClassName   User
 * @Description 用户类
 **/
public class User {
    private int uid;
    private String name;
    private int age;

    public int getUid() {
        return uid;
    }

    public void setUid(int uid) {
        this.uid = uid;
    }

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}


2、UserDao.java
package top.it1002.mybatis.dao;

import org.apache.ibatis.session.SqlSession;
import top.it1002.mybatis.domain.MyBatisCallBack;
import top.it1002.mybatis.domain.User;

import java.util.List;

/**
 * @Author      王磊
 * @Date        2019/3/14
 * @ClassName   UserDao
 * @Description 用户表封装Dao
 **/
public class UserDao {
    /**
     * 插入
     * @param user
     */
    public static Object insert(User user){
        UserDaoTemp.exec(new MyBatisCallBack() {
            @Override
            public Object exec(SqlSession ss) {
                ss.insert("user.insert", user);
                return null;
            }
        });
        return null;
    }

    /**
     * 查询单个
     * @param uid
     */
    public static User select(int uid){
        return (User) UserDaoTemp.exec(new MyBatisCallBack() {
            @Override
            public Object exec(SqlSession ss) {
                System.out.println(uid);
                User user = ss.selectOne("user.select", uid);
                return user;
            }
        });
    }

    /**
     * 查询多个
     */
    public static List<User> selectAll(){
        return (List<User>)UserDaoTemp.exec(new MyBatisCallBack() {
            @Override
            public Object exec(SqlSession ss) {
                List<User> userList = ss.selectList("user.selectAll");
                return userList;
            }
        });
    }

    /**
     * 修改
     */
    public static Object update(User user){
        UserDaoTemp.exec(new MyBatisCallBack() {
            @Override
            public Object exec(SqlSession ss) {
                ss.update("user.update", user);
                return null;
            }
        });
        return null;
    }

    /**
     * 删除一个
     */
    public static Object delete(int uid){
        UserDaoTemp.exec(new MyBatisCallBack() {
            @Override
            public Object exec(SqlSession ss) {
                ss.delete("user.delete", uid);
                return null;
            }
        });
        return null;
    }

    /**
     * 删除所有
     */
    public static Object deleteAll(){
        UserDaoTemp.exec(new MyBatisCallBack() {
            @Override
            public Object exec(SqlSession ss) {
                ss.delete("user.deleteAll");
                return null;
            }
        });
        return null;
    }


}

3、MyBatisUtil.java
package top.it1002.mybatis.Util;

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;

/**
 * @Author      王磊
 * @Date        2019/3/14
 * @ClassName   MyBatisUtil
 * @Description 工具类
 **/
public class MyBatisUtil {
    public static SqlSession getSession(){
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-conf.xml");
            SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(is);
            return ssf.openSession();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    public static void rollbackTX(SqlSession ss){
        if(ss != null){
            ss.rollback();
        }
    }

    public static void closeSession(SqlSession ss){
        if(ss != null){
            ss.close();
        }
    }
}

4、MyBatisCallBack .java
package top.it1002.mybatis.domain;

import org.apache.ibatis.session.SqlSession;

/**
 * 回调接口
 */
public interface MyBatisCallBack {
    public Object exec(SqlSession ss);
}

5、UserDaoTemp.java
package top.it1002.mybatis.dao;

import org.apache.ibatis.session.SqlSession;
import top.it1002.mybatis.Util.MyBatisUtil;
import top.it1002.mybatis.domain.MyBatisCallBack;

/**
 * @Author      王磊
 * @Date        2019/3/14
 * @ClassName   UserDaoTemp
 * @Description 模板类
 **/
public class UserDaoTemp {
    public static Object exec(MyBatisCallBack callBack){
        SqlSession ss = MyBatisUtil.getSession();
        if(ss != null){
            try{
                return callBack.exec(ss);
            }catch (Exception e){
                MyBatisUtil.rollbackTX(ss);
            }finally {
                MyBatisUtil.closeSession(ss);
            }
        }
        return null;
    }
}

6、App.java
import top.it1002.mybatis.dao.UserDao;
import top.it1002.mybatis.domain.User;

import java.util.List;

/**
 * @Author      王磊
 * @Date        2019/3/14
 * @ClassName   App
 * @Description 调用类
 **/
public class App {
    public static void main(String[] args) {
        /*/
        // 插入测试
        User user = new User();
        user.setAge(18);
        user.setName("admin");
        UserDao.insert(user);
        //*/

        /*/
        // 查询测试1
        int uid = 1;
        User user1 = UserDao.select(uid);
        if(user1 != null){
            System.out.println("UserUid:" + user1.getUid());
            System.out.println("UserName:" + user1.getName());
            System.out.println("UserAge:" + user1.getAge());
        }else {
            System.out.println("单个数据查询数据结果为空!");
        }
        //*/

        /*/
        // 查询测试2
        List<User> userList = UserDao.selectAll();
        for(User user2 : userList){
            System.out.println("=== 用户:" +  user2.getName() + "的个人信息 ===");
            System.out.println("UserUid:" + user2.getUid());
            System.out.println("UserName:" + user2.getName());
            System.out.println("UserAge:" + user2.getAge());
        }
        //*/


        /*/
        // 修改测试
        User user3 = new User();
        user3.setUid(1);
        user3.setName("it1002.top");
        user3.setAge(22);
        UserDao.update(user3);
        //*/

        /*/
        // 删除测试1
        int uid2 = 2;
        UserDao.delete(uid2);
        //*/
    }
}

最终关闭调用类的注释即可进行操作

以下为数据库语句:

create table user(
	uid int primary key auto_increment,
	name varchar(10) not null,
	age int not null
) charset utf8;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值