使用mybatis实现简单增删改查

这篇博客介绍了如何使用Mybatis进行简单的增删改查操作。首先通过Idea创建Maven项目,配置相关依赖,然后建立测试数据库。接着创建实体类并编写配置文件,包括UserMapper.xml、mysql.properties和mybatis-config.xml。为了封装sqlSession,定义了一个BaseDao基类,并创建UserDao继承它。最后在test包下编写UserTest进行CRUD的测试。

1.使用idea创建一个Maven项目

在这里插入图片描述

点next然后选择存放的路径,再点finish就好了!

2.在pom.xml里面引入需要的依赖包

<dependencies>
        <!-- mybatis核心包 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.3.0</version>
        </dependency>
        <!-- mysql驱动包 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.40</version>
        </dependency>
        <!-- junit测试包 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>
        <!-- 日志文件管理包 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.12</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.12</version>
        </dependency>

    </dependencies>

设置自动导入

在这里插入图片描述

3.创建测试的数据库

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.在Java项目中创建实体类(pojo)与之一一对应

在这里插入图片描述

5.配置文件

  • 在resources文件夹下新建映射文件夹mapper,在mapper文件夹下面创建一个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="com.jl.pojo.User">
    <select id="findById" parameterType="int" resultType="com.jl.pojo.User">
        SELECT * FROM User WHERE id=#{id}
    </select>
    
    <insert id="insertUser" parameterType="com.jl.pojo.User">
        insert into user (username,age)values (#{username},#{age})
    </insert>

    <update id="updateById" parameterType="com.jl.pojo.User">
        update user set username =#{username},age=#{age} where id=#{id}
    </update>

    <delete id="deleteById" parameterType="com.jl.pojo.User">
        delete from user where id=#{id}
    </delete>
</mapper>
  • 在resources文件夹下新建mysql.properties文件,存储数据库连接信息
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
jdbc.username=root
jdbc.password=root
  • 在resources文件夹下创建mybatis-config.xml文件,存储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>
    <properties resource="mysql.properties"/>
    <settings>
        <!--全局性设置懒加载。如果设为‘false’,则所有相关联的都会被初始化加载,默认值为false-->
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。默认值为true-->
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>
    <typeAliases>
        <!-- 其实就是将bean的替换成一个短的名字-->
        <typeAlias type="com.jl.pojo.User" alias="User"/>
    </typeAliases>
    <!--对事务的管理和连接池的配置-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED"><!--POOLED:使用Mybatis自带的数据库连接池来管理数据库连接-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--mapping文件路径配置-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"/>
    </mappers>

</configuration>

6.新建一个dao包,创建一个BaseDao类,用于封装获取sqlSession的方法

public class BaseDao {
    protected SqlSession getSqlSession(){
        String fileName = "mybatis-config.xml";
        Reader reader = null;
        try {
            reader = Resources.getResourceAsReader(fileName);
        } catch (IOException e) {
            e.printStackTrace();
        }
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
        SqlSession sqlSession = sqlSessionFactory.openSession();//数据库连接会话,非jsp的session,切勿搞混。
        return sqlSession;
    }
}

7.新建一个UserDao继承这个BaseDao然后就可以直接使用它的方法

package com.jl.dao;

import com.jl.pojo.User;
import org.apache.ibatis.session.SqlSession;

import java.util.List;

/**
 * @author Lee
 * @date 2019-05-07 17:53
 */
public class UserDao extends BaseDao {
    /**
     * 根据用户的id查找用户
     * @param user 用户id
     */
    public List<User> findById(User user){
        SqlSession sqlSession = this.getSqlSession();
        List<User> userList=sqlSession.selectList("findById",user);
        sqlSession.close();
        return userList;
    }

    /**
     * 添加用户
     * @param user
     * @return
     */
    public int insertUser(User user){
        SqlSession sqlSession = this.getSqlSession();
        int i = sqlSession.insert("insertUser", user);
        sqlSession.commit();
        sqlSession.close();
        return i;
    }

    /**
     * 根据id修改用户
     * @param user
     * @return
     */
    public int updateById(User user){
        SqlSession sqlSession = this.getSqlSession();
        int i = sqlSession.update("updateById", user);
        sqlSession.commit();
        sqlSession.close();
        return i;
    }

    /**
     * 根据id删除用户
     * @param user
     * @return
     */
    public int deleteById(User user){
        SqlSession sqlSession = this.getSqlSession();
        int i = sqlSession.delete("deleteById", user);
        sqlSession.commit();
        sqlSession.close();
        return i;
    }
}

注意:除了查询不需要提交其他都需要提交(sqlSession.commit()),记得关闭( sqlSession.close())

8. 在test包里面创建一个UserTest测试一下

package com.jl;

import com.jl.dao.UserDao;
import com.jl.pojo.User;
import org.junit.Test;

/**
 * @author Lee
 * @date 2019-05-07 17:48
 */
public class UserTest {
    UserDao userDao = new UserDao();
    User user = new User();
    @Test
    public void findById() {
        user.setId(2);
        List<User> userList = userDao.findById(user);
        System.out.println(userList);
    }
    @Test
    public void insertUser(){

        user.setUsername("赵六");
        user.setAge(19);
        int i = userDao.insertUser(user);
        System.out.println(i);
    }
    @Test
    public void updateById(){
        user.setId(3);
        user.setUsername("王五");
        user.setAge(20);
        int i = userDao.updateById(user);
        System.out.println(i);
    }
    @Test## 标题
    public void deleteById(){
        user.setId(3);
        int i = userDao.deleteById(user);
        System.out.println(i);
    }
}

9.代码测试

  • 查找
    在这里插入图片描述
  • 增加
    在这里插入图片描述
    在这里插入图片描述
  • 修改
    在这里插入图片描述
    在这里插入图片描述
  • 删除
    在这里插入图片描述
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值