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