• 17.Mybatis的基本使用及入门案例


    一、什么是 MyBatis ?

      MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

    二、入门案例

      maven工程样式

      

      创建maven工程,添加对应jar包(在pom.xml文件中插入)

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
      <groupId>com.sxt</groupId>
      <artifactId>mybatis.01.hello</artifactId>
      <version>0.0.1-SNAPSHOT</version>
      <dependencies>
          <dependency>
              <groupId>org.mybatis</groupId>
              <artifactId>mybatis</artifactId>
              <version>3.4.6</version>
          </dependency>
          <dependency>
              <groupId>junit</groupId>
              <artifactId>junit</artifactId>
              <version>4.12</version>
          </dependency>
          <dependency>
              <groupId>mysql</groupId>
              <artifactId>mysql-connector-java</artifactId>
              <version>5.1.32</version>
          </dependency>
      </dependencies>
    </project>

      创建全局配置文件,该配置文件包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器TransactionManager)。(文件命名为mybatis-cfg.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://localhost:3306/j0325?characterEncoding=utf-8"/>
            <property name="username" value="root"/>
            <property name="password" value="123"/>
          </dataSource>
        </environment>
      </environments>
      <mappers>
          <!-- 关联映射文件 -->
          <mapper resource="com/sxt/pojo/UserMapper.xml"/>
      </mappers>
    </configuration>

      定义User对象

    package com.sxt.pojo;
    
    public class User {
        
        private Integer id;
        
        private String name;
        
        private Integer age;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getAge() {
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
        }
        
    
    }

      创建映射文件(文件命名为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">
    <!-- namespace 名称空间:作用是用来区分各个xml映射文件 -->
    <mapper namespace="com.sxt.pojo.User">
        <select id="query" resultType="com.sxt.pojo.User">
            select * from t_user
        </select>
        
        <insert id="addUser" parameterType="com.sxt.pojo.User">
            insert into t_user(name,age)values(#{name},#{age})
        </insert>
        
        <delete id="deleteById" parameterType="int">
            delete from t_user where id=#{id}
        </delete>
        
        <update id="updateUser" parameterType="com.sxt.pojo.User">
            update t_user set name=#{name} , age=#{age} where id=#{id}
        </update>
        
        <select id="queryById" resultType="com.sxt.pojo.User">
            select * from t_user where id = #{id}
        </select>
    </mapper>

      测试

    package com.sxt.test;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.List;
    
    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 com.sxt.pojo.User;
    
    public class MybatisTest01 {
    
        @Test
        public void query() throws IOException {
            
            InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
        
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            
            SqlSession session = factory.openSession();
            
            List<User> list = session.selectList("com.sxt.pojo.User.query");
            for (User user : list) {
                System.out.println(user);
            }
            
            session.close();
        }
    
        @Test
        public void queryById() throws IOException {
            InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            SqlSession session = factory.openSession();
            List<User> list = session.selectList("com.sxt.pojo.User.queryById", 1);
            for (User user : list) {
                System.out.println(user);
            }
            session.close();
        }
        
        @Test
        public void addUser() throws IOException {
            InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            SqlSession session = factory.openSession();
            User user = new User();
            user.setName("wdh");
            user.setAge(18);
            int count = session.insert("com.sxt.pojo.User.addUser", user);
            session.commit();
            System.out.println("影响的行数:" + count);
            session.close();
        }
        
        @Test
        public void updateUser()throws IOException{
            InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            SqlSession session = factory.openSession();
            User user = new User();
            user.setId(1);
            user.setName("cc");
            user.setAge(27);
            int count = session.insert("com.sxt.pojo.User.updateUser", user);
            session.commit();
            System.out.println("受影响的行数:"+count);
            session.close();
        }
        
        @Test
        public void deleteUser()throws IOException{
            InputStream in = Resources.getResourceAsStream("mybatis-cfg.xml");
            SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
            SqlSession session = factory.openSession();
            int count = session.insert("com.sxt.pojo.User.deleteById",1);
            session.commit();
            System.out.println("受影响的行数:"+count);
            session.close();
        }
    
        
    }

  • 相关阅读:
    SecureCRT 迁移到新环境,配置导出
    Git 常用操作
    Java 性能分析工具 Asyncprofiler
    冒号语法
    后台乱码转中文
    js讲解视频
    下载指定版本的loader.调整文件夹结构
    react大型数据渲染列表
    git拉取报错
    记录一个排序表格的插件
  • 原文地址:https://www.cnblogs.com/wangdh666/p/11171529.html
Copyright © 2020-2023  润新知