<jdbcConnection driverClass=“${jdbc.driver}”
connectionURL=“ j d b c . u r l " u s e r I d = " {jdbc.url}" userId=" jdbc.url"userId="{jdbc.username}” password=“${jdbc.password}”/>
<javaModelGenerator targetPackage=“com.lv.model”
targetProject=“src/main/java”>
<sqlMapGenerator targetPackage=“com.lv.mapper”
targetProject=“src/main/java”>
<javaClientGenerator targetPackage=“com.lv.mapper”
targetProject=“src/main/java” type=“XMLMAPPER”>
enableCountByExample=“false” enableDeleteByExample=“false”
enableSelectByExample=“false” enableUpdateByExample=“false”>
2、配置maven插件命令:配置maven运行generator命令
选择配置:

添加配置:


3、在pom中处理generatorConfig.xml
右键运行:

三、Mybatis增删改查案例
新建一个软件包util,将sessionUtil文件移入:
package com.javaxl.util;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
-
@author 小李飞刀
-
@site www.javaxl.com
-
@company xxx公司
-
@create 2018-12-10 21:59
*/
public class SessionUtil {
private static SqlSessionFactory sessionFactory;
private static ThreadLocal threadLocal = new ThreadLocal();
static {
sessionFactory = new SqlSessionFactoryBuilder().build(SessionUtil.class.getResourceAsStream(“/mybatis.cfg.xml”));
}
public static SqlSession openSession() {
SqlSession session = threadLocal.get();
if (null == session) {
session = sessionFactory.openSession();
threadLocal.set(session);
}
return session;
}
public static void main(String[] args) {
SqlSession session = openSession();
System.out.println(session.getConnection());
session.close();
// System.out.println(session.getConnection());
}
}
新建service类:


BookService:
package com.lv.service;
import com.lv.model.Book;
public interface BookService {
int deleteByPrimaryKey(Integer bid);
int insert(Book record);
int insertSelective(Book record);
Book selectByPrimaryKey(Integer bid);
int updateByPrimaryKeySelective(Book record);
int updateByPrimaryKey(Book record);
}
接着在文件内按Alt+Enter去实现接口:


确定实现这些方法:

按住Alt+Insert生成set与get方法:

BookServiceImpl:
package com.lv.service.impl;
import com.lv.model.Book;
import com.lv.service.BookService;
public class BookServiceImpl implements BookService {
private BookMapper bookMapper;
public BookMapper getBookMapper() {
return bookMapper;
}
public void setBookMapper(BookMapper bookMapper) {
this.bookMapper = bookMapper;
}
@Override
public int deleteByPrimaryKey(Integer bid) {
return bookMapper.deleteByPrimaryKey(bid);
}
@Override
public int insert(Book record) {
return bookMapper.insert(record);
}
@Override
public int insertSelective(Book record) {
return bookMapper.insertSelective(record);
}
@Override
public Book selectByPrimaryKey(Integer bid) {
return bookMapper.selectByPrimaryKey(record);
}
@Override
public int updateByPrimaryKeySelective(Book record) {
return bookMapper.updateByPrimaryKeySelective(record);
}
@Override
public int updateByPrimaryKey(Book record) {
return bookMapper.updateByPrimaryKey(record);
}
}
测试:Alt+Enter创建测试,将需要测试的方法进行勾选

BookServiceImplTest:
package com.lv.service.impl;
import com.lv.mapper.BookMapper;
import com.lv.service.BookService;
import org.apache.ibatis.session.SqlSession;
import util.SessionUtil;
public class BookServiceImplTest{
private BookService bookService;
private SqlSession sqlSession;
public void setUp() throws Exception {
System.out.println(“调用方法前使用”);
BookServiceImpl bookService=new BookServiceImpl();
SqlSession sqlSession= SessionUtil.openSession();
System.out.println(bookService.getBookMapper());
BookMapper mapper=sqlSession.getMapper(BookMapper.class);
bookService.setBookMapper(mapper);
this.bookService=bookService;
}
public void tearDown() throws Exception {
System.out.println(“调用方法后执行”);
}
public void testDeleteByPrimaryKey() {
System.out.println(“业务方法”);
}
public void testSelectByPrimaryKey() {
}
}
执行方法:

mybatis.cfg.xml文件:
<?xml version="1.0" encoding="UTF-8"?><property name=“driver”
value=“${jdbc.driver}”/>
<property name=“url”
value=“${jdbc.url}”/>
Book.java:
package com.lv.model;
public class Book {
private Integer bid;
private String bname;
private Float price;
public Book(Integer bid, String bname, Float price) {
this.bid = bid;
this.bname = bname;
this.price = price;
}
public Book() {
super();
}
public Integer getBid() {
return bid;
}
public void setBid(Integer bid) {
this.bid = bid;
}
public String getBname() {
return bname;
}
public void setBname(String bname) {
this.bname = bname;
}
public Float getPrice() {
return price;
}
public void setPrice(Float price) {
this.price = price;
}
@Override
public String toString() {
return “Book{” +
“bid=” + bid +
“, bname='” + bname + ‘’’ +
“, price=” + price +
‘}’;
}
}
log4j2.xml文件:
<?xml version="1.0" encoding="UTF-8"?>/root/workspace/lucenedemo/logs
/root/workspace/lucenedemo/logs/error
/root/workspace/lucenedemo/logs/warn
%d{yyyy-MM-dd HH:mm:ss.SSS} [%t-%L] %-5level %logger{36} - %msg%n
<ThresholdFilter level=“trace” onMatch=“ACCEPT”
onMismatch=“DENY” />
<PatternLayout
pattern=“%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n” />
<RollingFile name=“RollingFileInfo” fileName=“${LOG_HOME}/info.log”
filePattern=“ L O G H O M E / {LOG_HOME}/ LOGHOME/${date:yyyy-MM}/info-%d{yyyy-MM-dd}-%i.log”>
<ThresholdFilter level=“info” onMatch=“ACCEPT”
onMismatch=“DENY” />
<PatternLayout
pattern=“%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n” />
<TimeBasedTriggeringPolicy interval=“1”
modulate=“true” />
<RollingFile name=“RollingFileWarn” fileName=“${WARN_LOG_FILE_NAME}/warn.log”
filePattern=“ W A R N L O G F I L E N A M E / {WARN_LOG_FILE_NAME}/ WARNLOGFILENAME/${date:yyyy-MM}/warn-%d{yyyy-MM-dd}-%i.log”>
<ThresholdFilter level=“warn” onMatch=“ACCEPT”
onMismatch=“DENY” />
<PatternLayout
pattern=“%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n” />
<RollingFile name=“RollingFileError” fileName=“${ERROR_LOG_FILE_NAME}/error.log”
filePattern=“ E R R O R L O G F I L E N A M E / {ERROR_LOG_FILE_NAME}/ ERRORLOGFILENAME/${date:yyyy-MM}/error-%d{yyyy-MM-dd-HH-mm}-%i.log”>
<ThresholdFilter level=“error” onMatch=“ACCEPT”
onMismatch=“DENY” />
<PatternLayout
pattern=“%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n” />
<TimeBasedTriggeringPolicy interval=“1”
modulate=“true” />
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。


既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。
关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。

这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。[外链图片转存中…(img-wrNml84x-1711794898104)]
[外链图片转存中…(img-Q6gzYnDZ-1711794898104)]
[外链图片转存中…(img-nQ4Xy2xr-1711794898104)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
小编利用空余时间整理了一份《MySQL性能调优手册》,初衷也很简单,就是希望能够帮助到大家,减轻大家的负担和节省时间。
关于这个,给大家看一份学习大纲(PDF)文件,每一个分支里面会有详细的介绍。
[外链图片转存中…(img-SZYSJDEn-1711794898105)]
这里都是以图片形式展示介绍,如要下载原文件以及更多的性能调优笔记(MySQL+Tomcat+JVM)!
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》,点击传送门即可获取!
文章介绍了如何使用Mybatis进行数据库操作,包括JDBC连接配置、Java代码生成器的使用,以及如何在实际项目中实现增删改查。此外,还提到作者分享的Java开发学习资料和MySQL性能调优手册,旨在帮助开发者提升技能和解决问题。
2669

被折叠的 条评论
为什么被折叠?



