JavaEE:MyBatis用法

说明:

对象关系映射框架,操作数据库数据

主要依赖jar包:mybatis-x.x.x.jar、mysql-connector-java-x.x.x.jar
其他依赖jar包:ant-x.x.x.jar、ant-launcher-x.x.x.jar、asm-x.x.jar、cglib-x.x.xx.jar、commons-logging-x.x.jar、javassist-x.x.x-GA.jar、log4j-x.x.x.jar、log4j-api-x.x.x.jar、log4j-core-x.x.x.jar、ognl-x.x.x.jar、slf4j-api-x.x.x.jar、slf4j-log4j12-x.x.x.jar

一、配置连接池、对象映射:

1.配置连接池,加载对象映射配置文件:

(1)新建jdbc.properties,配置连接信息:

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydb?serverTimezone=UTC
username=root
password=root

(2)新建mybatis-config.xml,加载jdbc.properties,配置连接池:





    
    

    
        
        
            
            
            
            
                
                
                
                
            
        
    

(3)加载对象映射配置文件:

第1种,直接加载配置文件方式:



    

第2种,类扫描方式,自动加载同名配置文件:



    
    

2.新建user.xml,配置对象映射文件:





    

二、普通Dao方式,增删改查:

1.插入数据:

(1)配置插入sql语句,在user.xml文件的节点内:

自增主键生成,利用useGeneratedKeys属性:


或者,自增主键生成,利用内部的节点:



    select last_insert_id()  

插入sql语句配置:


    
    
    
        
        
            select last_insert_id()
        
        insert into user(id,name) values(#{id},#{name})
    

(2)实现插入数据方法:

private static SqlSessionFactory sFactory;
static {
    try {
        // 1.获取mybatis-config.xml输入流
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        // 2.创建SqlSession工厂类
        sFactory = new SqlSessionFactoryBuilder().build(in);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

// 插入数据
public void insert(User user) throws IOException {
    // 1.创建SqlSession,openSession(true)为开启自动提交事务
    SqlSession session = sFactory.openSession();
    // 2.执行插入语句,user为user.xml中,sql_insert为,后面参数为sql语句中的占位参数值
    session.update("user.sql_update", user);
    // 3.关闭连接
    session.close();
}

3. 查询单个数据:

(1)配置查询单个sql语句,在user.xml文件的节点内:


(2)实现查询单个数据方法:

// 查询单个数据
public void query(String name) throws IOException {
    // 1.创建SqlSession
    SqlSession session = sFactory.openSession();
    // 2.执行查询语句,user为user.xml中,sql_query为
    select * from user

(2)实现查询列表数据方法:

// 查询列表数据
public void queryList() throws IOException {
    // 1.创建SqlSession,openSession(true)为开启自动提交事务
    SqlSession session = sFactory.openSession();
    // 2.执行查询列表语句,user为user.xml中,sql_query_list为
    select * from user where name like %${name}%

(2)实现模糊查询数据方法:

// 模糊查询数据
public void search(String key) throws IOException {
    // 1.创建SqlSession
    SqlSession session = sFactory.openSession();
    // 2.执行模糊查询语句,user为user.xml中,sql_query_like为,后面参数为sql语句中的占位参数值
    session.delete("user.sql_delete", name);
    // 3.关闭连接
    session.close();
}

三、动态代理方式,增删改查:

说明:由系统自动生成Dao实现类。

规则: 
namespace属性值填Dao接口带包名;
Dao接口方法名与 select * from user where name=#{name}

3.实现数据增删改查:

private static SqlSessionFactory sFactory;
static {
    try {
        // 1.获取mybatis-config.xml输入流
        InputStream in = Resources.getResourceAsStream("mybatis-config.xml");
        // 2.创建SqlSession工厂类
        sFactory = new SqlSessionFactoryBuilder().build(in);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

// 测试查询方法
public void testQuery(String name) throws IOException {
    // 1.创建SqlSession
    SqlSession session = sFactory.openSession();
    // 2.获取Dao自动实现类
    UserMapper dao = session.getMapper(UserMapper.class);
    // 3.执行查询语句
    User user = dao.query(name);
    // 4.关闭连接
    session.close();
}

四、别名使用(不区分大小写):

1.单个方式:

(1)定义别名,在mybatis-config.xml的节点内:



    

(2)使用别名,在user.xml:


2.包扫描方式:

(1)定义别名,在mybatis-config.xml的节点内:



    

(2)使用别名,在user.xml:


五、resultMap使用:

作用:当列名与属性名不一致时,将列名与属性名关联起来。在单表查询时,列名与属性名一致时不用配置。

1.定义resultMap,在对象映射文件UserMapper.xml的节点内:



    
    
    
    

2.使用resultMap,在对象映射文件UserMapper.xml的 select * from user

五、动态sql使用(在sql标签内部使用标签):

1.标签使用:

作用:在sql标签内部直接使用if判断。

2.标签使用:

作用:给sql加上where。

3.sql片段:

作用:定义通用sql,供其他sql标签中使用。

(1)定义 sql片段:



    where name=#{name}

(2)使用sql片段:

4.标签使用:

作用:在sql标签中循环赋值,放在内部。


 

你可能感兴趣的:(JavaEE)