欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mybatis快速入门增删改查

程序员文章站 2022-06-12 18:12:54
...

Mybatis快速入门增删改查

MyBatis环境配置

  1. 引入坐标
		<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>

        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
  1. 配置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="jdbc.properties"/>
    <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://127.0.0.1:3306/test?useUnicode=true;characterEncoding=UTF-8;useSSL=false;serverTimezone = GMT"/>-->
<!--                <property name="username" value="root"/>-->
<!--                <property name="password" value="17633908064"/>-->
                <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>
    <!--    加载外部配置文件-->
    <mappers>
        <mapper resource="com/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
  1. 创建数据库实体User同时设置实体setter和getter方法

  2. MyBatis相关的SQL映射文件(namespace+id为调用接口),配置返回参数resultType和传入parameterType参数

<?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">
<!--namespace为命名空间,与接下来的id组成调用路径-->
<mapper namespace="UserMapper">
    <select id="findAll" resultType="com.domain.User">
        select * from sys_user
    </select>

    <insert id="insertUser" parameterType="com.domain.User">
        insert into sys_user values (#{id}, #{username}, #{email}, #{password}, #{phoneNum});
    </insert>

    <update id="updateUser" parameterType="com.domain.User">
        update sys_user set username=#{username}, password=#{password} where id=#{id}
    </update>

    <delete id="deleteUser" parameterType="java.lang.Integer">
        delete from sys_user where id=#{id}
    </delete>
</mapper>
  1. 测试(有更改数据库中数据的语句的应提交事务),或者在openSession时传入true表示自动提交事务
    查询一个结果selectOne 查询多个结果selectList
package com.test;

import com.domain.User;
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.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybatisTest {

    @Test
    // 查询操作
    public void testSelect() throws IOException {
//        加载配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatisConfig.xml");
//        获取sqlSession工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        开启获取sqlSession
        SqlSession sqlSession = sessionFactory.openSession();
//        执行查询 参数:namespace+id
        List<User> userList = sqlSession.selectList("UserMapper.findAll");
        System.out.println(userList);
//        关闭查询
        sqlSession.close();
    }

    @Test
    // 插入操作
    public void testInsert() throws IOException {
        User user = new User();
        user.setUsername("谷争昌");
        user.setEmail("[email protected]");
        user.setPassword("123456");
        user.setPhoneNum("145658765545");

//        加载配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatisConfig.xml");
//        获取sqlSession工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        开启获取sqlSession
        SqlSession sqlSession = sessionFactory.openSession();
//        执行查询 参数:namespace+id
        sqlSession.insert("UserMapper.insertUser", user);
//        如果sql语句会改变数据库中的数据则需要提交事务
        sqlSession.commit();
//        关闭查询
        sqlSession.close();
    }

    @Test
    // 修改操作
    public void testUpdate() throws IOException {
        User user = new User();
        user.setId(10);
        user.setUsername("gzc");
        user.setEmail("[email protected]");
        user.setPassword("123456");
        user.setPhoneNum("1456545");

//        加载配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatisConfig.xml");
//        获取sqlSession工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        开启获取sqlSession
        SqlSession sqlSession = sessionFactory.openSession();
//        执行查询 参数:namespace+id
        sqlSession.update("UserMapper.updateUser", user);
//        如果sql语句会改变数据库中的数据则需要提交事务
        sqlSession.commit();
//        关闭查询
        sqlSession.close();
    }


    @Test
    // 删除操作
    public void testDelete() throws IOException {

//        加载配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatisConfig.xml");
//        获取sqlSession工厂
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        开启获取sqlSession
        SqlSession sqlSession = sessionFactory.openSession();
//        执行查询 参数:namespace+id
        sqlSession.update("UserMapper.deleteUser", 11);
//        如果sql语句会改变数据库中的数据则需要提交事务
        sqlSession.commit();
//        关闭查询
        sqlSession.close();
    }
}

  1. 定义别名方便映射文件配置(typeAliases),加载外部properties配置文件(都在congfiguration内部)
<configuration>
<!--    加载外部配置文件-->
    <properties resource="jdbc.properties"/>
<!--    自定义别名,注意位置必须是在configuration内部properties后面-->
<!--    MyBatis默认已经定义了一部分别名,Integer——>int String——>string Boolean->boolean等 -->
    <typeAliases>
        <typeAlias type="com.domain.User" alias="user"/>
    </typeAliases>
    <environments default="development">
        <environment id="development">
<!--            JDBC配置直接使用JDBC的提交和回滚设置-->
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
<!--                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
<!--                <property name="url"-->
<!--                          value="jdbc:mysql://127.0.0.1:3306/test?useUnicode=true;characterEncoding=UTF-8;useSSL=false;serverTimezone = GMT"/>-->
<!--                <property name="username" value="root"/>-->
<!--                <property name="password" value="17633908064"/>-->
                <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>
    <!--    加载外部配置文件-->
    <mappers>
        <mapper resource="com/mapper/UserMapper.xml"/>
    </mappers>
</configuration>
相关标签: Mybatis mybatis