JavaWeb(七)

一、Mybatis概念

MyBatis 是一款优秀的持久层框架,用于简化JDBC开发,解决了原生JDBC硬编码和手动封装结果集的问题。

JavaEE的三层架构分为Controller(表现层)、Service(业务层)、Mapper(持久层)。

持久层负责将数据保存到数据库的那一层代码。使用了Mybatis框架我们会将操作数据库的Java代码作为持久层。

二、Mybatis快速入门

2.1、搭建环境

2.1.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.1.2、创建模块

 创建day04-mybatis模块,在创建好的模块中的 pom.xml 配置文件中添加依赖的坐标


    
    
        org.mybatis
        mybatis
        3.5.6
    

    
    
        mysql
        mysql-connector-java
        5.1.46
    

    
    
        junit
        junit
        4.13
        test
    
2.1.3、 创建包结构

 在 com.practice.pojo 包下创建和表对应的 User类

public class User {
    private Integer id;
    private String username;
    private String password;
    private String gender;
    private String addr;
    
    //省略了 setter 和 getter
}
2.1.4、编写核心配置文件

在resources中编写mybatis-config.xml配置文件,配置数据库的连接信息,在mybatis官网复制即可。

 




    
    
        
            
            
            
                
                
                
                
            
        
    

    
    
2.1.5、编写mapper接口和SQL语句

1、在mapper包中编写UserMapper接口,在接口中编写查询所有的方法,并配置SQL语句

public interface UserMapper {

    /**
     * 查询所有用户信息
     * @Select:定义查询语句的注解,参数为SQL语句
     */
    @Select("select * from tb_user")
    List selectAll();
}

 2、在mybatis-config.xml核心配置文件中加载映射配置文件



    
    

核心配置文件中的内容,在使用spring框架后可以全部写到spring中的配置文件

2.1.6、单元测试使用mybatis执行查询
public class MybatisTest {

    @Test
    public void testSelectAll() throws IOException {
        //1 加载核心配置文件,获取 SqlSessionFactory对象,mybatis官网复制即可
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        //2 获取 SqlSession 对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //3 获取Mapper接口代理对象。
        UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
        //4 执行方法,获取结果
        List list = userMapper.selectAll();
        //5 处理结果,释放资源
        list.forEach(user -> System.out.println(user));
        sqlSession.close();
    }
}

 2.1.7、快速入门总结

步骤:

环境搭建--->核心配置文件--->Mapper接口和SQL--->单元测试方法

核心配置文件作用:

1、配置连接数据库环境信息。

​ 2、通过扫包加载和mapper接口和SQL

三、核心配置文件细节

3.1、核心配置文件标签顺序

JavaWeb(七)_第1张图片

3.1.2、environments环境配置介绍



    
    
        
        
        
        
            
            
            
            
            
        
    
    
    

3.1.3、mappers映射器配置



    
    
    
    
  1. 单元测试使用mybatis执行查询

里面的代码在使用spring框架后,也可以大部分简化。

  • 核心配置文件

1、核心配置文件顺序图片

2、md文档中对应的解释

四、添加用户信息

4.1、在UserMapper接口中定义方法和配置SQL语句

/**
     * 添加用户信息
     * @param user
     */
@Insert("insert into tb_user values(null,#{username},#{password},#{gender},#{addr})")
void add(User user);

 

4.2、 单元测试类

@Test
public void testAdd() throws IOException {
    //1 加载核心配置文件,获取 SqlSessionFactory对象
    String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    //2 获取 SqlSession 对象
    SqlSession sqlSession = sqlSessionFactory.openSession();
    //3 获取Mapper接口代理对象,
    UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    //4 调用方法,得到结果
    User user=new User();
    user.setUsername("张益达");
    user.setPassword("123");
    user.setAddr("湖北武汉");
    user.setGender("男");
    userMapper.add(user);
    //5 处理结果,释放资源
    sqlSession.commit(); //提交事务*****
    sqlSession.close();
}

4.3、新增总结

1、对于新增我们需要进行事务管理,怎么做?

openSession():默认开启事务,进行增删改操作后需要使用 sqlSession.commit(); 手动提交事务

openSession(true):可以设置为自动提交事务(关闭事务)

2、修改和删除也要进行事务管理。

五、注意事项

5.1、参数占位符:#{}:执行SQL时,会将#{}占位符替换为?,将来自动设置参数值

5.2、增删改需要提交事务,可以设置自动提交事务。

你可能感兴趣的:(JavaWeb,java)