mybatis基本使用

1. mybatis

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
中文网: https://mybatis.org/mybatis-3/zh_CN/index.html

2. 基本使用

(1) maven坐标

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.13</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.23</version>
    </dependency>

(2) 配置文件编写

在这里插入图片描述

编写mybatis配置的
MapperConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://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.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/stu"/>
                <property name="username" value="root"/>
                <property name="password" value="xjy1234"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--指定mapper映射文件在哪-->
        <mapper resource="org/example/dao/UserMapper.xml"/>
    </mappers>
</configuration>

编写sql语句映射:
UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.example.dao.UserMapper">
        <!--sql语句编写-->
</mapper>

(3) 数据库操作

编写测试类:

    public static void main(String[] args) throws IOException {
        InputStream in = Resources.getResourceAsStream("MapperConfig.xml");
        // 获取SqlSessionFactory对象
        SqlSessionFactory session = new SqlSessionFactoryBuilder().build(in);

        // 获取SqlSession对象
        SqlSession sqlSession = session.openSession();

        // 执行sql语句
        String one = sqlSession.selectOne("org.example.dao.UserMapper.selectOne");
        System.out.println(one);
        sqlSession.close(); 
    }

sql语句映射中编写sql语句:

<mapper namespace="org.example.dao.UserMapper">
        <select id="selectOne" resultType="string">
                select name from user where id = 050100
        </select>
</mapper>

(4) 注解查询

创建查询接口:

public interface UserMapper {
    @Select("select name from user where id = 050100")
     String selectOne();
}

删除之前映射文件中的xml查询语句:
在这里插入图片描述
测试运行:

    @Test
    public void selectOne() throws IOException {
        InputStream in = Resources.getResourceAsStream("MapperConfig.xml");
        SqlSession sqlSession = new SqlSessionFactoryBuilder()
                .build(in)
                .openSession();
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        String s = mapper.selectOne();
        System.out.println(s);
    }

2. 基本配置

(1) 读取外部配置文件

<configuration>
    <!--外部配置文件加载-->
    <properties resource="jdbc.properties"></properties>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--指定mapper映射文件在哪-->
        <mapper resource="org/example/dao/UserMapper.xml"/>
    </mappers>
</configuration>

(2) mapper映射

<mappers>
  <mapper resource=""/>
  <mapper resource=""/>
  <mapper resource=""/>
</mappers>

3. 映射文件

查询

<!--接收int类型,返回字符串类型-->
<select id="selectPerson" parameterType="int" resultType="string">
  SELECT name FROM user WHERE id= #{id}
</select>

删除/修改/新增

常用属性 :
id 在命名空间中唯一的标识符,可以被用来引用这条语句。
parameterType 将会传入这条语句的参数的类全限定名或别名。这个属性是可选的,因为 MyBatis 可以根据语句中实际传入的参数计算出应该使用的类型处理器(TypeHandler),默认值为未设置(unset)
useGeneratedKeys :(仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段),默认值:false。(主键返回)

<insert id="insert">
 sql语句
</insert>

<update id="update">
 sql语句
</update>

<delete id="delete">
  delete from Author where id = #{id}
</delete>

动态sql

常用标签:
if
where
foreach

<select id="select" resultType="string">
  SELECT name FROM user
 	<WHERE>
  <if test="name!= null">
    AND name =#{name}
  </if>
  </WHERE>
</select>
<select id="selectUsersByIds" parameterType="java.util.List" resultType="User">
    SELECT * FROM users
    WHERE id IN
    <foreach item="item" index="index" collection="list" open="(" separator="," close=")">
        #{item}
    </foreach>
</select>

相关推荐

  1. mybatis使用

    2024-04-27 13:22:02       34 阅读
  2. MyBatis基础

    2024-04-27 13:22:02       31 阅读
  3. MyBatis-基本概念

    2024-04-27 13:22:02       61 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-27 13:22:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-27 13:22:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-27 13:22:02       82 阅读
  4. Python语言-面向对象

    2024-04-27 13:22:02       91 阅读

热门阅读

  1. 20个 Golang 常见面试问题

    2024-04-27 13:22:02       33 阅读
  2. 关于深度学习图像数据集的主要问题和考虑事项

    2024-04-27 13:22:02       34 阅读
  3. 并行计算+Linux process

    2024-04-27 13:22:02       34 阅读
  4. Docker 容器创建与使用问题汇总

    2024-04-27 13:22:02       34 阅读
  5. git分支更新

    2024-04-27 13:22:02       29 阅读
  6. MATLAB初学者入门(22)—— 哈希算法

    2024-04-27 13:22:02       37 阅读
  7. 2024版GB4806.15直接接触粘合剂第三方检测机构

    2024-04-27 13:22:02       33 阅读
  8. WPF之Label

    2024-04-27 13:22:02       33 阅读
  9. Linux的NVM安装

    2024-04-27 13:22:02       35 阅读