快速创建Mybatis项目

Mybatis

环境:

JDK1.8

Mysql 5.7

maven 3.6.1

IDEA

框架:配置文件的,最好的方式:看官网

1、简介

1.1、什么是Mybatis

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

如何获取Mybatis?

maven仓库

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.5.2</version>
</dependency>

github:GitHub网址
中文文档:中文文档网址

1.2、数据持久化

数据持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转换的过程
  • 内存:断电即失
  • 数据库,io文件持久化
  • 生活:冷藏

为什么需要持久化?

扫描二维码关注公众号,回复: 11503439 查看本文章
  • 有一些对象,不能让它丢掉
  • 内存太贵

1.3、持久层

Dao层、service层、controller层

  • 完成持久化工作的代码块
  • 层界限十分明显

1.4、为什么需要Mybatis

  • 方便
  • 传统的JDBC代码太复杂了,简化—>框架
  • 帮助程序员将数据存入到数据库中
  • 不用Mybatis也可以,更容易上手。

2、第一个Mybatis程序

思路:搭建环境–>导入Mybatis—>

2.1、搭建环境

2.2、创建一个模块

  • 编写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核心配置文件-->
    <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/test?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UTF-8"/>
                    <property name="username" value="root"/>
                    <property name="password" value="123456"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
            <mapper resource="com/qwc/dao/UserMapper.xml"/>
        </mappers>
    </configuration>
    
  • 编写mybatis工具类

    package com.qwc.utils;
    
    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 java.io.IOException;
    import java.io.InputStream;
    
    //sqlSessionFactory --->sqlsession
    public class MybatisUtils {
        private static SqlSessionFactory sqlSessionFactory;
    
        static {
            try {
                //使用mybatis第一步:获取SqlSessionFactory对象
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    
        //既然有了SqlSessionFactory. 顾名思义。我们就可以从中获得SqlSession 的实例了。
    // SqlSession完全包含J面向数据库执行SQL命令所需的所有方法。
        public static SqlSession getSqlSession() {
            return sqlSessionFactory.openSession();
        }
    
    }
    

2.3、编写代码

  • 实体类

    package com.qwc.pojo;
    
    public class User {
        private int id;
        private String name;
        private String pwd;
    
        public User() {
        }
    
        public User(int id, String name, String pwd) {
            this.id = id;
            this.name = name;
            this.pwd = pwd;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", pwd='" + pwd + '\'' +
                    '}';
        }
    }
    
  • Dao接口

    package com.qwc.dao;
    
    import com.qwc.pojo.User;
    
    import java.util.List;
    
    public interface UserMapper {
        //查询全部用户
        List<User> getUserList();
        //根据id查询用户
        User getUserById(int id);
    
        //insert一个用户
        int addUser(User user);
        //修改用户
        int updateUser(User user);
        //删除用户
        int deleteUser(int id);
    }
    
  • 接口实现类用mapper

    <?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绑定一个对应的dao/mapper接口-->
    <mapper namespace="com.qwc.dao.UserMapper">
    <!--    id对应接口方法的名称-->
        <select id="getUserList" resultType="com.qwc.pojo.User">
            select * from user
        </select>
        <select id="getUserById" parameterType="int" resultType="com.qwc.pojo.User">
            select  * from user where id= #{id}
        </select>
    <!--    对象中的属性,可以直接取出来-->
        <insert id="addUser" parameterType="com.qwc.pojo.User">
            insert into user (id,name,pwd) values(#{id},#{name},#{pwd});
        </insert>
    
        <update id="updateUser" parameterType="com.qwc.pojo.User">
            update user set name =#{name},pwd=#{pwd} where id=#{id};
        </update>
        <delete id="deleteUser" parameterType="int">
            delete from test.user where id=#{id};
        </delete>
    </mapper>
    

2.4、测试

  • 编写测试类

    package com.qwc.dao;
    import com.qwc.pojo.User;
    import com.qwc.utils.MybatisUtils;
    import org.apache.ibatis.session.SqlSession;
      import org.junit.Test;
      
      import java.util.List;
      
      public class UserDaoTest {
          @Test
          public void test01getUserList() {
              //1.获得sqlsession对象
              SqlSession sqlSession = MybatisUtils.getSqlSession();
      
              try {
                  //方式一:getMapper
                  UserMapper mapper = sqlSession.getMapper(UserMapper.class);
                  List<User> userList = mapper.getUserList();
                  //方式二
      //            List<User> userList = sqlSession.selectList("com.qwc.dao.UserMapper.getUserList");
      
                  for (User user : userList) {
                      System.out.println(user);
                  }
      
              } catch (Exception e) {
                  e.printStackTrace();
              } finally {
                  //关闭sqlsession
                  sqlSession.close();
              }
      
      
          }
      
          @Test
          public void test02getUserById() {
              SqlSession sqlSession = MybatisUtils.getSqlSession();
      
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
      
              User user = mapper.getUserById(1);
              System.out.println(user);
              sqlSession.close();
          }
          @Test
          public void test03addUser(){
              SqlSession sqlSession = MybatisUtils.getSqlSession();
      
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
              int res = mapper.addUser(new User(4, "cat", "123123"));
              if(res>0){
                  System.out.println("插入成功");
              }
              //提交事务
              sqlSession.commit();
      
              //关闭事务
              sqlSession.close();
      
          }
      
          @Test
          public void test04updateUser(){
              SqlSession sqlSession = MybatisUtils.getSqlSession();
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
              mapper.updateUser(new User(4,"dog","123456"));
              sqlSession.commit();
              sqlSession.close();
      
          }
          @Test
          public void test05deleteUser(){
              SqlSession sqlSession = MybatisUtils.getSqlSession();
              UserMapper mapper = sqlSession.getMapper(UserMapper.class);
              mapper.deleteUser(4);
              sqlSession.commit();
      
              sqlSession.close();
      
          }
      }
    
    

2.5结果截图

效果结果

猜你喜欢

转载自blog.csdn.net/qq_40980325/article/details/107677043