Mybatis快速入门,Java线程池中的线程复用是如何实现的

SqlSession openSession = sqlSessionFactory.openSession();

顾名思义(从名称想到所包含的意义,给用心的我点个大大的赞!),不在详细解释标题啥意思了~

Mybatis执行流程:

  1. 根据xml文件(全局配置文件)创建一个SqlSessionFactory对象里面有数据源和一些运行环境信息

  2. sql映射文件,配置了每一个sql,以及sql的封装规则等。

  3. 将sql映射文件注册在全局配置文件中

  4. 写代码

​ 根据全局配置文件得到sqlSessionFactory

​ 使用sqlSession工厂,获取到sqlSession对象使用它来执行CRUD

​ 一个sqlSession就是代表和数据库的一次会话,用完关闭

​ 使用sql的唯一标志来告诉Mybatis执行那个sql。sql都是保存在sql映射文件里的

2.4 探究已映射的 SQL 语句


既然要映射sql语句我们先要创建对应的数据库

和对应数据库字段的的实体类

image-20220126113840915

@Alias这个注解是给这个实体类起的别名叫emp

通过这个实体类来映射数据库中的一条记录,一个对象就是数据库中的一条记录~

package com.caq.mybatis.bean;

import org.apache.ibatis.type.Alias;

@Alias(“emp”)

public class Employee {

private Integer id;

private String lastName;

private String email;

private String gender;

private Department dept;

public Employee() {

}

public Employee(Integer id, String lastName, String email, String gender, Department dept) {

this.id = id;

this.lastName = lastName;

this.email = email;

this.gender = gender;

this.dept = dept;

}

public Department getDept() {

return dept;

}

public void setDept(Department dept) {

this.dept = dept;

}

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getLastName() {

return lastName;

}

public void setLastName(String lastName) {

this.lastName = lastName;

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email;

}

public String getGender() {

return gender;

}

public void setGender(String gender) {

this.gender = gender;

}

@Override

public String toString() {

return “Employee{” +

“id=” + id +

“, lastName='” + lastName + ‘’’ +

“, email='” + email + ‘’’ +

“, gender='” + gender + ‘’’ +

‘}’;

}

}

下面这个就是sql映射文件

  1. namespace就是命名空间;指定为接口的全类名

  2. id就是唯一标识

  3. resultType就是返回值类型,比如我们想返回的是员工的信息,那我们就返回Employee的全类名

  4. #{id}:从传递过来的参数中取出id值

  5. id指定接口中的方法,这样不仅文件和接口绑定,select标签也和方法进行了绑定

以上几点都是重点!!!画黑板了,记到本子上!

映射文件

<?xml version="1.0" encoding="UTF-8" ?>

select * from tbl_employee

where id = #{id}

将我们写好的sql映射文件一定要注册到全局配置文件中

测试效果

@Test

public void test01() throws IOException {

SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();

SqlSession openSession = sqlSessionFactory.openSession();

try {

EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);

Employee employee = mapper.getEmpById(1);

System.out.println(employee);

} finally {

openSession.close();

}

}

结果如下:

Employee{id=1, lastName=‘tom’, email=‘tom@caq.com’, gender=‘0’}

2.5 注解开发


面向接口编程

什么是面向接口编程?

面向接口编程是先把客户的业务逻辑线提取出来,作为接口,业务具体实现通过该接口的实现类来完成。当客户需求变化时,只需编写该业务逻辑的新的实现类,通过更改配置文件中该接口的实现类就可以完成需求,不需要改写现有代码,减少对系统的影响。(这个概念的理解很重要,先记着后面实践的时候会越来越清晰!)

这里我结合后面springboot的一些方式,释放了mybatis-config.xml文件,通过yml文件中的指定来替换。数据库映射mapper.xml文件通过在接口上写@Mapper注解和方法上写注解的方式实现

如下:

yml文件

mybatis:

通过yml配置文件的方式解放了mybatis-config.xml文件

configuration:

map-underscore-to-camel-case: true #开启驼峰命名

Mapper接口

package com.caq.admin.mapper;

import com.caq.admin.bean.Account;

import org.apache.ibatis.annotations.Mapper;

import org.apache.ibatis.annotations.Select;

import java.util.List;

//通过写@Mapper注解的方式释放了写mapper.xml映射文件的方式

@Mapper

public interface AccountMapper {

@Select(“select * from account where id = #{id}”)

Account test(Long id);

}

service层

package com.caq.admin.service;import com.caq.admin.bean.Account;import com.caq.admin.mapper.AccountMapper;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;@Servicepublic class AccountService { @Autowired AccountMapper accountMapper; public Account getAcc(Long id){ return accountMapper

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值