zoukankan      html  css  js  c++  java
  • MyBatis-----1.MyBatis简介和使用

    MyBatis介绍:

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

    MyBatis的特点:

    简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。

    灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。

    解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。

    提供映射标签,支持对象与数据库的orm字段关系映射

    提供对象关系映射标签,支持对象关系组建维护

    提供xml标签,支持编写动态sql

    (以上内容摘自百度百科,网址:https://baike.baidu.com/item/MyBatis/2824918?fr=aladdin

    MyBatis的简单使用:

    1. 添加 jar

    Mybatis:  mybatis-3.2.2.jar

    下载地址:https://github.com/mybatis/mybatis-3/releases

    Mysql驱动包:mysql-connection-java-5.1.7-bin.jar

    下载地址:https://dev.mysql.com/downloads/connector/j/

     

    2. 创建数据库+数据表users

    create database mybatis;
    
    use mybatis;
    
    CREATE TABLE users(id INT PRIMARY KEY AUTO_INCREMENT, NAME
    
    VARCHAR(20), age INT);
    
    INSERT INTO users(NAME, age) VALUES('Tom', 12);
    
    INSERT INTO users(NAME, age) VALUES('Jack', 11);

    3. 添加MyBatis的配置文件conf.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/mybatis" />
          <property name="username" value="root" />
          <property name="password" value="root" />
        </dataSource>
      </environment>
    </environments>
    </configuration>

    其中<property>中放的时连接数据库需要的信息

    Driverjdbc驱动位置

    Url:     数据库路径

    Username:连接数据库的用户名

    Password:连接数据库密码

    4. 创建usersbean实体类

    public class User {
    
      private int id;
    
      private String name;
    
      private int age;
    
      //get,set 方法
    
    }

    5. 定义操作users表的sql映射文件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.zhiyou.zyl.mapper.userMapper">
        <select id="getUser" parameterType="int"
        resultType="com.zhiyou.zyl.bean.User">
            select * from users where id=#{id}
        </select>
    </mapper>    

    Namespace: 命名空间,这里一般指向Dao接口路径,例如com.zhiyou.zyl.dao.UserDao

    Select: mybatis提供的查询标签,用于查询语句的实现

    id:标识唯一id,这里一定要和映射的dao接口中的方法名相同。

    parameterType: 传入参数类型,这里传入的时Id

    ResultType: 结果参数类型,返回类型为User实体类

    #{}: 用于mybatis解析。

    6. conf.xml文件中注册userMapper.xml文件

    <mappers>
      <mapper resource="com/zhiyou/zyl/mapper/userMapper.xml"/>
    </mappers>

    7. 测试,创建测试类Test

    public class Test {
    
        public static void main(String[] args) throws IOException {
    
        String resource = "conf.xml";
    
        //加载 mybatis 的配置文件(它也加载关联的映射文件) 
    
        Reader reader = Resources.getResourceAsReader(resource);
    
        //构建 sqlSession 的工厂
    
        SqlSessionFactory sessionFactory = new         SqlSessionFactoryBuilder().build(reader);
    
        //创建能执行映射文件中 sql 的 sqlSession
    
        SqlSession session = sessionFactory.openSession();
    
        //映射 sql 的标识字符串 ,getUser一定要和select的ID相同
    
        String statement = "com.zhiyou.zyl.mapper.userMapper"+".getUser";
    
       //执行查询返回一个唯一 user 对象的 sql
    
        User user = session.selectOne(statement, 1);
    
        System.out.println(user);
    
    }
    
    } 

    8. eclipse中提供的测试方法

    8.1 在需要测试的文件右击选择创建其他。

     

    8.2 选择junit文件

     

    8.3 创建测试类

     

    8.4 @BeforAll,@AfterAll,@Test介绍

    成员变量:注意这里session要定义为static,因为下面的静态方法只能调用静态属性

    static SqlSession session =null;
    
    String str= "com.zhiyou.zyl.mapper.UsersMapper"; 

     @BeforAll:在所有@Test方法执行前一定执行的内容,提高代码的复用性,这里用于加载配置文件和创建session对象。

    @BeforeAll
    
    static void setUpBeforeClass() throws Exception {
    
      String resource = "conf.xml";
    
      //加载 mybatis 的配置文件(它也加载关联的映射文件)
    
      Reader reader = Resources.getResourceAsReader(resource);
    
      //构建 sqlSession 的工厂
    
      SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader);
    
      //创建能执行映射文件中 sql 的 sqlSession
    
      session = sessionFactory.openSession();
    
    }

    @AfterAll 在@Test执行后一定执行的内容。Mybatis默认不会将更新,增加,删除的信息提交到数据库,需要我们调用commit()方法手动进行提交。

    @AfterAll
    
    static void tearDownAfterClass() throws Exception {
    
    //提交
    
      session.commit();
    
    } 

    @Test:测试方法,直接选中方法名右击运行即可,主要用于进行各种测试

    @Test
    
    void testSelectById() {
    
      Users user=session.selectOne(str+".getUser", 1);
    
      System.out.println(user);
    
    }

    9. MyBatis提供的其他标签

    9.1 select标签

    UserMapper.xml文件内容

    <select id="getUser" parameterType="int" resultType="com.zhiyou.zyl.bean.Users">
    
    select * from users where id=#{id}
    
    </select>
    
    <!-- 查询所有-->
    
    <select id="selectAll" resultType="com.zhiyou.zyl.bean.Users">
    
    select * from users
    
    </select>

    测试方法:

    @Test
    
    void testSelectById() {
    
      Users user=session.selectOne(str+".getUser", 1);
    
      //查询一个对象方法
    
      System.out.println(user);
    
    }
    
    @Test
    
    void testSelectAll() {
    
      List<Users> row=session.selectList(str+".selectAll");
    
      //查询集合方法
    
      System.out.println(row);
    
    }
    9.2 insert标签

    UserMapper.xml文件内容:

    <insert id="addUser" parameterType="com.zhiyou.zyl.bean.Users">
    
    insert into users(name,age) values(#{name},#{age})
    
    </insert>

    测试方法:

    @Test
    
    void testAddUser() {
    
    int row=session.insert(str+".addUser", new Users("张三",16));
    
    //调用session.insert方法
    
    System.out.println(row);
    
    } 
    9.3 update标签

    UserMapper.xml文件内容:

    <update id="updateUser" parameterType="com.zhiyou.zyl.bean.Users">
    
    update users set name=#{name},age=#{age} where id=#{id}
    
    </update> 

    测试方法:

    @Test
    
    void testUpdateUser() {
    
    int row=session.update(str+".updateUser", new Users(1,"李四",16));//调用session.update方法
    
    System.out.println(row);
    
    }
    9.4 delete标签

    UserMapper.xml文件内容:

    <delete id="deleteUser" parameterType="int">
            delete from users where id=#{id}
    
    </delete>

     测试方法:

    @Test
        void testDeleteUser() {
            int row=session.delete(str+".deleteUser",3);
            System.out.println(row);
        }
  • 相关阅读:
    WebService的使用
    Nginx的安装与部署
    Linux下安装mysql5.7
    SpringBoot之旅 -- 定时任务两种(Spring Schedule 与 Quartz 整合 )实现
    ELK 日志分析系统
    解决SpringBoot jar包太大的问题
    IntelliJ Idea 授权服务器使用
    Mybatis Generator最完整配置详解
    PyCharm2016.2专业版注册码
    HttpClient实现HTTP文件通用下载类
  • 原文地址:https://www.cnblogs.com/zyl187110/p/11440338.html
Copyright © 2011-2022 走看看