01——使用mybatis连接数据库实现增删改查

mybatis连接数据库

  1. 添加jar包
    在这里插入图片描述
  2. 创建数据库
  3. 配置XML文件

mybatis是通过XML文件完成持久化类和数据库表之间的映射关系的。

XML代码————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="org.fkit.mapper.UserMapper">
    <insert id="save" parameterType="org.fkit.domain.User" useGeneratedKeys="true">
        INSERT INTO tb_user(name ,sex,age) VALUES (#{name},#{sex},#{age})
    </insert>
    <select id="selectUser" parameterType="int" resultType="org.fkit.domain.User">
        SELECT * FROM tb_user WHERE ID = #{id};
    </select>
    <update id="modifyUser" parameterType="org.fkit.domain.User">
        UPDATE tb_user SET `NAME`=#{name},SEX=#{sex},AGE=#{age} WHERE ID=#{id};
    </update>
</mapper>

UserMapper.xml文件路径

在这里插入图片描述
(1)<mapper namespace="org.fkit.mapper.UserMapper">
mapper为了指定唯一的namespace,通常会把namespace的值设置成包名+SQL映射文件名,以此保证namespace的值是唯一的。例如:org.fkit.mapper.UserMapper
(2)insert标签
编写SQL插入语句;
id属性值为save,id的值必须是唯一的;
parameterType属性,指明插入时使用的参数类型
useGeneratedKeys属性,表示使用数据库的自动增长策略
#{name},#{sex},#{age},表示取参数中的对象的name、sex、age属性值
resultType或resultMap,查询返回值的类型

XML文件————mybatis-config.xml

MyBatis根配置文件默认被命名为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">
<!--XML配置文件包含对MyBatis系统的核心设置-->
<configuration>
<!--指定MyBatis所用日志的具体实现-->
    <settings>
        <setting name="logImpl" value="LOG4J"/>
    </settings>
    <!--环境配置,即连接的数据库。-->
    <environments default="mysql">
        <environment id="mysql">
            <!--指定事务管理类型,type="JDBC"指直接使用了JDBC的提交和回滚设置-->
            <transactionManager type="JDBC" />
            <!-- dataSource指数据配置,POOLED是JDBC连接对象的数据源连接池的实现-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mabatis?characterEncoding=utf8"/>
                <property name="username" value="root"/>
                <property name="password" value="1"/>
            </dataSource>
        </environment>
    </environments>
    <!--mapper告诉了MyBatis去哪里找持久化类的映射文件-->
        <mappers>
            <mapper resource="org/fkit/mapper/UserMapper.xml" />
        </mappers>
</configuration>

mybatis-config.xml文件路径
在这里插入图片描述

  1. 创建FKSqlSessionFactory工厂类
    每次操作都需要读取mybatis-config.xml根配置文件,根据根配置文件文件信息创建SqlSessionFactory对象,在获取SqlSession对象,该操作比较频繁,所以需要开发一个工厂类封装以上操作重复的代码。

FKSqlSessionFactory工厂类代码

package org.fkit.factory;

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.InputStream;

/**
 * @Auther: King
 * @Date: 2021/4/30 - 04 - 30 - 13:59
 * @Description: org.fkit.factory
 * @version: 1.0
 */
public class FKSqlSessionFactory {
    private static SqlSessionFactory sqlSessionFactory = null;
    static {
        try {
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }

    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
}

FKSqlSessionFactory工厂类文件路径
在这里插入图片描述

  1. 插入操作

不使用工厂类代码

package org.fkit.test;

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 org.fkit.domain.User;

import java.io.InputStream;

public class MyBatisTest {
    public static void main(String[] args) {
        //创建Session(会话)实例
        SqlSession sqlSession = null;
        try{
            //读取mybatis-config.xml文件
            InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
            //初始化mybatis,创建SqlSessionFactory(会话工厂)类实例
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
            sqlSession = sqlSessionFactory.openSession();
            //创建User对象
            User user = new User("kings","男",22);
            //插入数据
            sqlSession.insert("org.fkit.mapper.UserMapper.save",user);
            //提交事务
            sqlSession.commit();
        }catch (Exception e) {
            //回滚事务
            sqlSession.rollback();
            e.printStackTrace();
        }finally {
            try{
                //关闭sqlSession
                if (sqlSession != null){
                    sqlSession.close();
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

使用FKSqlSessionFactory工厂类代码

package org.fkit.test;

import org.apache.ibatis.session.SqlSession;
import org.fkit.domain.User;
import org.fkit.factory.FKSqlSessionFactory;

public class MyBatisTest {
    public static void main(String[] args) {
        //创建Session(会话)实例
        SqlSession sqlSession = null;
        try{
            sqlSession = FKSqlSessionFactory.getSqlSession();
            //创建User对象
            User user = new User("kings","男",22);
            //插入数据
            sqlSession.insert("org.fkit.mapper.UserMapper.save",user);
            //提交事务
            sqlSession.commit();
        }catch (Exception e) {
            //回滚事务
            sqlSession.rollback();
            e.printStackTrace();
        }finally {
            try{
                //关闭sqlSession
                if (sqlSession != null){
                    sqlSession.close();
                }
            }catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

未更完

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农之斜杠青年King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值