mybatis学习一之入门示例

本文详细介绍了Java面试中可能涉及的基础知识,如Maven配置、MyBatis的使用、DAO与Mapper设计、SQL语句、Pojo与Builder模式,以及多线程、高并发和缓存等热点话题。附带实战项目源码和面试题答案,帮助读者提升面试技巧。
摘要由CSDN通过智能技术生成

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

二、入门示例

==========

创建mavn项目:


pom.xml

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

<project xmlns=“http://maven.apache.org/POM/4.0.0”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>

4.0.0

com.zy

mybatis-maven

1.0-SNAPSHOT

org.mybatis

mybatis

3.5.3

junit

junit

4.11

test

mysql

mysql-connector-java

5.1.47

org.apache.logging.log4j

log4j-core

2.12.1

org.apache.logging.log4j

log4j-api

2.12.1

org.projectlombok

lombok

1.18.10

src/main/java

**/*.xml

**/*.properties

false

配置文件:


mysql.properties:

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/mybatis

jdbc.username=root

jdbc.password=*******

log4j2.xml:

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

mybatis-config.xml:

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

代码:


定义pojo:

package com.zy.entity;

import lombok.Builder;

import lombok.Getter;

import lombok.Setter;

import lombok.ToString;

@Getter

@Setter

@ToString

@Builder(toBuilder = true)

public class Blog {

private Integer id;

private String title;

private int authorId;

private String state;

private Boolean featured;

private String style;

}

Mapper文件:


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

select * from Blog where id = #{id}

insert into Blog(id, title, author_id, state, featured, style)

values

(#{id}, #{title}, #{authorId}, #{state}, #{featured}, #{style});

定义接口:


package com.zy.mapper;

import com.huawei.entity.Blog;

public interface BlogMapper {

//接口中的方法名必须和mapper中sql语句的id相同

Blog selectBlog(Integer id);

//插入

void insert(Blog blog);

}

对应的类型:

定义DAO:


import com.huawei.entity.Blog;

import com.huawei.mapper.BlogMapper;

import com.huawei.util.MyBatisUtil;

import org.apache.ibatis.session.SqlSession;

public class BlogDao {

private SqlSession sqlSession = MyBatisUtil.getSqlSession();

private BlogMapper mapper = sqlSession.getMapper(BlogMapper.class);

public Blog queryBlogById(Integer id) {

return mapper.selectBlog(id);

}

public void insert(Blog blog) {

try {

mapper.insert(blog);

sqlSession.commit();

} finally {

if (sqlSession != null) {

sqlSession.close();

}

}

}

}

工具类的编写:


package com.zy.util;

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.IOException;

import java.io.Reader;

public class MyBatisUtil {

private static SqlSessionFactory sqlSessionFactory = null;

static {

try {

Reader reader = Resources.getResourceAsReader(“mybatis/mybatis-config.xml”);

sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);

}

catch (IOException e) {

e.printStackTrace();

}

}

public MyBatisUtil() {

}

public static SqlSession getSqlSession() {

return sqlSessionFactory.openSession();

}

}

编写测试类:


package com.zy.mapper;

import com.huawei.dao.BlogDao;

import com.huawei.entity.Blog;

import org.apache.logging.log4j.LogManager;

import org.apache.logging.log4j.Logger;

import org.junit.Test;

public class BlogMapperTest {

private static final Logger logger = LogManager.getLogger(BlogMapperTest.class);

@Test

public void testSelectBlog() {

Blog blog = new BlogDao().queryBlogById(1);

System.out.println(blog);

logger.info(“blog is:{}”, blog);

}

@Test

public void testInsertBlog() {

Blog build = Blog.builder()

.authorId(1)

.state(“ACTIVE”)

.style(“333”)

.featured(false)

.title(“三国演义”)

.build();

new BlogDao().insert(build);

}

}

运行结果:


问题:


1.为什么代码中的sqlSession需要关闭,但是获取配置文件的Reader不需要关闭呢???

知其然不知其所以然,大厂常问面试技术如何复习?

1、热门面试题及答案大全

面试前做足功夫,让你面试成功率提升一截,这里一份热门350道一线互联网常问面试题及答案助你拿offer

2、多线程、高并发、缓存入门到实战项目pdf书籍

3、文中提到面试题答案整理

4、Java核心知识面试宝典

覆盖了JVM 、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入


《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
[外链图片转存中…(img-zCkIfJzH-1714707880396)]

2、多线程、高并发、缓存入门到实战项目pdf书籍

[外链图片转存中…(img-uSdkNB0g-1714707880396)]

[外链图片转存中…(img-qzljsiey-1714707880397)]

[外链图片转存中…(img-qVzG0Myr-1714707880397)]

3、文中提到面试题答案整理

[外链图片转存中…(img-DMmfqd0a-1714707880397)]

4、Java核心知识面试宝典

覆盖了JVM 、JAVA集合、JAVA多线程并发、JAVA基础、Spring原理、微服务、Netty与RPC、网络、日志、Zookeeper、Kafka、RabbitMQ、Hbase、MongoDB 、Cassandra、设计模式、负载均衡、数据库、一致性算法 、JAVA算法、数据结构、算法、分布式缓存、Hadoop、Spark、Storm的大量技术点且讲解的非常深入

[外链图片转存中…(img-lTpNDDDw-1714707880397)]

[外链图片转存中…(img-pHTQlDtm-1714707880397)]

[外链图片转存中…(img-wFUf7zZu-1714707880398)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 30
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值