MybatisStudy01-第一个mybatis

一:为什么要学习Mybatis?

MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。

MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

 

第一:配置maven,mybatis必须配置相关jar包,最好在build中配置resources,来防止我们资源导出失败的问题

 

 <build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

 



第二:从XML文件中构建SqlSessionFactory
1.每一个Mybatis都是以SqlSessionFactory实例为核心的,SqlSessionFactory可以通过SqlSessionFactoryBuilder获得。而SqlSessionFactoryBuilder则
可以则可以从 XML 配置文件构建出 SqlSessionFactory 实例。
2.MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。
具体实现如下:
//引入mybatis的配置文件
String resource = "org/mybatis/example/mybatis-config.xml";
//使用Mybatis的工具类获得配置文件
InputStream inputStream = Resources.getResourceAsStream(resource);
//使用SqlSessionFactoryBuilder建立配置
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);


第三:关于mybatis-config.xml文件的基础配置(推荐使用mybatis-config这个名字

 

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 3         "http://mybatis.org/dtd/mybatis-3-config.dtd">
 4 <!--配置-->
 5 <configuration>
 6     <!--环境配置,连接的数据库,这里使用的是MySQL-->
 7     <environments default="mysql">
 8         <!--环境变量-->
 9         <environment id="mysql">
10             <!--指定事务管理的类型,这里简单使用Java的JDBC的提交和回滚设置-->
11             <transactionManager type="JDBC"></transactionManager>
12             <!--dataSource 指连接源配置,POOLED是JDBC连接对象的数据源连接池的实现-->
13             <dataSource type="POOLED">
14                 <property name="driver" value="${dirver}"></property>
15                 <property name="url" value="${url}"></property>
16                 <property name="username" value="${username}"></property>
17                 <property name="password" value="${password}"></property>
18             </dataSource>
19         </environment>
20     </environments>
21 
22     <!--每一个Mapper(映射器),XML都需要在Mabatish核心配置文件中注册-->
23     <mappers>
24         <mapper resource="com/he/dao/UserMapper.xml"/>
25     </mappers>
26 
27 </configuration>

 

第四:mybatis映射语句:UserMapper.XML

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE mapper
 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 5 
 6 <!--namespace=绑定一个对应的Dao/Mapper接口-->
 7 <mapper namespace="com.he.dao.UserMapper">
 8   
 9     <!--调用接口中获取查询结果得方法。返回结果集,相当于JDBC里的resultSet-->
10     <select id="getUserList" resultType="com.he.pojo.User">
11     <!--select查询语句-->
12     select * from mybatis.user
13     </select>
14 
15     <!--id对应namespace中的方法名,resultType对应返回值类型,parameterType对应参数类名-->
16     <select id="getUserById" resultType="com.he.pojo.User" parameterType="int">
17         select * from mybatis.user where id= #{id};
18     </select>
19 
20     <insert id="addUser" parameterType="com.he.pojo.User">
21         insert into mybatis.user(id, name, pwd) values (#{id},#{name},#{pwd});
22     </insert>
23 
24     <update id="updateUser" parameterType="com.he.pojo.User">
25         update mybatis.user set name=#{name},pwd=#{pwd}  where id=#{id} ;
26     </update>
27 
28     <delete id="deleteUser" parameterType="int">
29         delete from mybatis.user where id=#{id};
30     </delete>
31 </mapper>

 

第五:编写接口和实体类

UserMapper接口

package com.he.dao;

import com.he.pojo.User;

import java.util.List;
import java.util.Map;

public interface UserMapper {

    //模糊查询
    User getUserLike(String name);

    //查询全部用户
    List<User> getUserList();

    //根据ID查询用户
    User getUserById(int id);
    //野路子之万能map查询
    User getUserById2(Map<String,Object> map);

    //添加用户
    int addUser(User user);

    //修改用户
    int updateUser(User user);

    //删除用户
    int deleteUser(int id);
}

User实体类:

package com.he.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 + '\'' +
                '}';
    }
}

第六:从 SqlSessionFactory 中获取 SqlSession

sqlSession中提供了数据库执行SQL的所有方法,可以通过SqlSession实例来执行映射的语句。

SqlSession session = sqlSessionFactory.openSession()
//sqlSession获取映射
UserMapper mapper = session.getMapper(UserMapper.class);
//执行一个通过id获取用户的方法
User user = mapper.getUserById(1)

 

第七:编写 mybatis工具类,首先要知道以下几点

1.SqlSessionFactoryBuilder这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。

2.SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。

3.每个线程都应该有它自己的 SqlSession 实例。

工具类如下:MybatisUtils

package com.he.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.InputStream;

public class MybatisUtils {

    private static SqlSessionFactory sqlSessionFactory;
    static {
        try {
            //使用mybatis第一步:获取sqlSession对象
            String resource="mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    //既然有了 SqlSessionFactory,顾名思义,我们就可以从中获得 SqlSession 的实例了。
    //SqlSession 完全包含了面向数据库执行 SQL 命令所需的所有方法。
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession(true);
    }
}

 

第八:测试

  @Test
    public void getUserById(){
     //使用工具类调用SqlSession SqlSession sqlSession = MybatisUtils.getSqlSession();
     //获取映射,传入接口的.class文件,通过反射获取内容 UserMapper mapper = sqlSession.getMapper(UserMapper.class);
     //调用,接口中通过id查询用户的方法 User userById = mapper.getUserById(1);
     //输出 System.out.println(userById);
     //每次执行完需要关闭SqlSession sqlSession.close(); }  
 
总结:1.配置maven环境,导入工具类
   2.配置mybatis-config.xml
   3.创建接口,实体类
   4.编写mapper.xml文件
   5.测试
 
 

 

posted @ 2020-03-12 09:06  静静吃榴莲  阅读(188)  评论(0)    收藏  举报