mybatis简明教程

319 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

什么是mybatis?

mybatis是一个基于java的持久层框架, 是对jdbc的封装.

它让开发者的注意力只需放到sql语句本身就可以了.

不再需要在数据库的驱动加载, 创建连接对象, 创建statement对象投入过多的精力.

mybatis官网

mybatis.org/mybatis-3/z…

大家可以移步官网看更详尽的使用文档

添加数据库驱动

 <dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.25</version>
 </dependency>

添加mybatis坐标

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

创建users表

t_users

创建User类

 public class User {
     private int id;
     private String username;
     private String password;
 ​
     public int getId() {
         return id;
     }
 ​
     public void setId(int id) {
         this.id = id;
     }
 ​
     public String getUsername() {
         return username;
     }
 ​
     public void setUsername(String username) {
         this.username = username;
     }
 ​
     public String getPassword() {
         return password;
     }
 ​
     public void setPassword(String password) {
         this.password = password;
     }
 ​
     @Override
     public String toString() {
         return "User{" +
                 "id=" + id +
                 ", username='" + username + ''' +
                 ", password='" + password + ''' +
                 '}';
     }
 }

创建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="userMapper">
     <!--    查询多个操作-->
     <select id="findAll" resultType="user">
         select * from users
     </select>
 ​
     <!--    查询一个操作-->
     <select id="findById" resultType="user" parameterType="int">
         select * from users where id = #{id}
     </select>
 ​
     <!--    插入操作-->
     <insert id="insert" parameterType="user">
         insert into users values (#{id}, #{username}, #{password})
     </insert>
 ​
     <!--    修改操作-->
     <update id="update" parameterType="user">
         update users set username = #{username}, password = #{password} where id = #{id}
     </update>
 ​
     <!--    删除操作-->
     <delete id="delete" parameterType="user">
         delete from users where username = #{username}
     </delete>
 </mapper>

创建jdbc.properties配置文件

 jdbc.driver=com.mysql.cj.jdbc.Driver
 jdbc.url=jdbc:mysql://localhost:3306/LCLDataBase
 jdbc.username=root
 jdbc.password=fengqing2018

创建SqlMapConfig.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>
     <!-- 加载数据库配置文件-->
     <properties resource="jdbc.properties"/>
 ​
 <!--    自定义别名-->
     <typeAliases>
         <typeAlias type="com.raylee.domain.User" alias="user"/>
     </typeAliases>
 ​
     <!-- 数据源环境-->
     <environments default="developement">
         <environment id="developement">
             <transactionManager type="JDBC"></transactionManager>
             <dataSource type="POOLED">
                 <property name="driver" value="${jdbc.driver}"/>
                 <property name="url" value="${jdbc.url}"/>
                 <property name="username" value="${jdbc.username}"/>
                 <property name="password" value="${jdbc.password}"/>
             </dataSource>
         </environment>
     </environments>
 ​
   <!--    加载核心配置文件-->
     <mappers>
         <mapper resource="UserMapper.xml"/>
     </mappers>
 </configuration>

创建SqlSession会话对象

 // 加载配置文件
 InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
 ​
 // 构建session工厂
 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
 ​
 // 获取session会话对象
 SqlSession sqlSession = sqlSessionFactory.openSession(true);
 ​
 // 操作数据库
 ...
   
  // 释放资源
  sqlSession.close();

添加操作

 // User对象
 User user = new User();
 user.setUsername("tianming");
 user.setPassword("111222");
 ​
 // 向数据库中添加数据
 sqlSession.insert("userMapper.insert", user);

修改操作

 // 创建User对象
 User user = new User();
 user.setId(5);
 user.setUsername("TianMing");
 user.setPassword("222111");
 ​
 // 根据id修改数据库中的数据
 sqlSession.update("userMapper.update", user);

查询单个操作

 // 根据id查询一条数据, 返回指定类型的对象
 User user = sqlSession.selectOne("userMapper.findById", 2);

查询多个操作

 // 当使用selectList时, 返回一个存放指定类型对象的list
 List<User> userList = sqlSession.selectList("userMapper.findAll");

删除操作

 // User对象
 User user = new User();
 user.setUsername("tianming");
 ​
 // 根据用户姓名删除对应数据
 sqlSession.delete("userMapper.delete", user);