> 文档中心 > mybatis的使用

mybatis的使用


1.如何使用mybatis

  • 创建user表,添加数据
  • 创建模块,导入坐标
  • 编写My Batis核心配置文件
  • 编写sql映射文件
  • 编码
    • 定义pojo类
    • 加载核心配置文件,获取SqlSessionFactory对象
    • 获取SqlSession对象,执行SQL语句
    • 释放资源

1.创建user表,添加数据

测试代码:

create database mybatis;use mybatis;drop table if exists tb_user;create table tb_user(   id int primary key auto_increment,   username varchar(20),   password varchar(20),   gender char(1),   addr varchar(30));INSERT INTO tb_user VALUES (1, 'zhangsan', '123', '男', '北京');INSERT INTO tb_user VALUES (2, '李四', '234', '女', '天津');INSERT INTO tb_user VALUES (3, '王五', '11', '男', '西安');

2.创建模块,导入坐标[导入测试包时,还需要使用 logback.xml 配置文件]

     javax.servlet javax.servlet-api 3.1.0 provided         org.slf4j slf4j-api 1.7.20             ch.qos.logback logback-classic 1.2.3             ch.qos.logback logback-core 1.2.3             mysql mysql-connector-java 5.1.26 compile             junit junit 4.13 test              org.mybatis  mybatis  x.x.x                   [%level] %blue(%d{HH:mm:ss.SSS}) %cyan([%thread]) %boldGreen(%logger{15}) - %msg %n                  <!--      level:用来设置打印级别,大小写无关:TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF     , 默认debug      可以包含零个或多个元素,标识这个输出位置将会被本日志级别控制。      -->         

3.编写mybatis-config.xml核心配置文件—(配置链接信息)

                                          

4. 编写sql映射文件userMapper.xml

     select * from tb_user;         select * from tb_user where id = #{id};    

5. 编码

  • 定义pojo类

  • 加载核心配置文件,获取SqlSessionFactory对象

  • 获取SqlSession对象,执行SQL语句

  • 释放资源

    package com.itheima;import com.itheima.pojo.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 java.io.IOException;import java.io.InputStream;import java.util.List;/** * Mybatis 快速入门代码 */public class MyBatisDemo {    public static void main(String[] args) throws IOException { //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2. 获取SqlSession对象,用它来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3. 执行sql List users = sqlSession.selectList("text.selectAll");   System.out.println(users); //4. 释放资源 sqlSession.close();    }}

    优化代码使用Mapper代理(解决硬编码问题,简化后期sql代码)

    • 定义新建与sql映射文件同名的mapper接口,并将mapper接口和sql映射文件放置在同一目录下(**在resources下新建层级目录时使用com/user/mapper ” 斜杠 ” **)

    • mybatis的使用

    • 设置sql映射文件**:mybatis-config.xml**namespace属性为Mapper接口权限定名(小细节:后期如果有多个mapper文件,使用packing-name:com.bohai.mapper

           <!--    -->
    • 在Mapper接口**🔵**中定义方法,方法名为SQL映射文件中sql语句的id,并保持参数类型和返回值类型一致

      import com.itheima.pojo.User;import java.util.List;public interface UserMapper {    List selectAll();   //查询user对象的selectAll()方法    User selectById(int id);
    • 编码

      • 通过sqlSession的getMapper方法获取Mapper接口的代理对象

        //3.1 获取UserMapper接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
      • 调用对应的方法,完成sql执行

        List users = userMapper.selectAll();
      • 完整代码:

        package com.itheima;import com.itheima.mapper.UserMapper;import com.itheima.pojo.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 java.io.IOException;import java.io.InputStream;import java.util.List;/** * Mybatis 代理开发 */public class MyBatisDemo2 {    public static void main(String[] args) throws IOException { //1. 加载mybatis的核心配置文件,获取 SqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2. 获取SqlSession对象,用它来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3. 获取UserMapper接口的代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); List users = userMapper.selectAll(); System.out.println(users); //4. 释放资源 sqlSession.close();    }}