Mybatis之数据库连接+PageHelper分页插件+Mybatis-Plus插件
https://www.cnblogs.com/chch213/p/16320820.html
前言

public class JDBCTest {
public static void main(String[] args) {
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
// 1、数据库连接参数
String url = "jdbc:mysql://localhost:3306/user?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8";
String username = "123";
String password = "123";
// 2、获加载数据库连接驱动
Class.forName("com.mysql.cj.jdbc.Driver");
// 3、创建数据库连接对象
connection = DriverManager.getConnection(url, username, password);
// 4、预处理sql语句
preparedStatement = connection.prepareStatement("select * from user");
// 5、执行sql语句
resultSet = preparedStatement.executeQuery();
// 6、解析结果集
while (resultSet.next()) {
User user = new User();
user.setUserName(resultSet.getString("username"));
System.out.println(user.toString());
}
// 7、关闭资源
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
resultSet.close();
preparedStatement.close();
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}

Mybatis操作数据库
官网

// 加载核心配置文件
String resource = "org/mybatis/builder/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 获取sqlsession工厂对象
SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
SqlSessionFactory factory = builder.build(inputStream);
// 通过工厂对象获取sqlsession对象
sqlSession = factory.openSession(true);
// 获取接口的实现类代理对象
Mapper mapper = sqlSession.getMapper(T.class);
// 通过实现类对象调用方法
User user = mapper.queryUser(id);

Mapper 接口开发需要遵循以下规范:
1) Mapper.xml文件中的namespace与mapper接口的全限定名(包名.类名)相同
2) Mapper接口方法名和Mapper.xml中定义的每个statement的id(唯一标识)相同
3) Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同
4) Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

public static void mapperTest() {
InputStream is = null;
SqlSession sqlSession = null;
try {
// 加载核心配置文件
is = Resources.getResourceAsStream("mybatis-config.xml");
// 获取sqlSession工厂对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
// 获取sqlSession对象
sqlSession = sqlSessionFactory.openSession();
// 获取代理对象
IUserServiceDao mapper = sqlSession.getMapper(IUserServiceDao.class);
// 调用方法
List<String> list = new ArrayList<>(1);
list.add("12");
List<UserVO> userVOList = mapper.queryUserList(list);
System.out.println(userVOList.toString());
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
sqlSession.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}

- <sql>:抽取 SQL 语句标签。
- <include>:引入 SQL 片段标签。
<sql id=“片段唯一标识”>抽取的 SQL 语句</sql> <include refid=“片段唯一标识”/>
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">
<property name="helperDialect" value="mysql"/>
<property name="reasonable" value="true"/>
</plugin>
</plugins>
PageHelper.startPage(1, 2); // 开启分页
PageHelper源码解析:
public class PageHelper extends PageMethod implements Dialect, Chain {
private PageParams pageParams; // 分页参数
private PageAutoDialect autoDialect; // 数据源
private PageBoundSqlInterceptors pageBoundSqlInterceptors; // sql处理
@Insert:实现新增@Update:实现更新@Delete:实现删除@Select:实现查询@Result:实现结果集封装@Results:可以与@Result 一起使用,封装多个结果集@One:实现一对一结果集封装@Many:实现一对多结果集封装 
public interface IUserServiceDao {
//查询全部
@Select("SELECT * FROM user")
@Results({
@Result(column = "id",property = "id"),
@Result(column = "name",property = "name"),
@Result(
property = "phone", // 被包含对象的变量名
javaType = List.class, // 被包含对象的实际数据类型
column = "id", // 根据查询出的user表的id字段来查询phone表
/*
many、@Many 一对多查询的固定写法
select属性:指定调用哪个接口中的哪个查询方法
*/
many = @Many(select = "com.exmple.demo.IPhoneDao.selectByCid")
)
})
public abstract List<Classes> selectAll();
}

<!-- mybatis-plus 插件依赖 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.5.0</version>
</dependency>
Dao层定义接口:
public interface IUserServicePlusDao extends BaseMapper<PhoneNumber> {
}

@AllArgsConstructor
@NoArgsConstructor
@Setter
@Getter
@ToString
@EqualsAndHashCode
@TableName("phone_number")
public class PhoneNumber {
// id
private String id;
// 地址
private String address;
// 用户
private String userId;
// 有效标志
private String isValid;
// 创建时间
private Date createDate;
}

Mybatis之数据库连接+PageHelper分页插件+Mybatis-Plus插件的更多相关文章
- Mybatis Plus整合PageHelper分页的实现示例
1.依赖引入 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pag ...
- MyBatis学习总结_17_Mybatis分页插件PageHelper
如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该 ...
- SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件
原文链接 我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池 ...
- MyBatis学习总结(17)——Mybatis分页插件PageHelper
如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件. 分页插件支持任何复杂的单表.多表分页,部分特殊情况请看重要提示. 想要使用分页插件?请看如何使用分页插件. 物理分页 该 ...
- Spring Boot整合tk.mybatis及pageHelper分页插件及mybatis逆向工程
Spring Boot整合druid数据源 1)引入依赖 <dependency> <groupId>com.alibaba</groupId> <artif ...
- Springboot 系列(十二)使用 Mybatis 集成 pagehelper 分页插件和 mapper 插件
前言 在 Springboot 系列文章第十一篇里(使用 Mybatis(自动生成插件) 访问数据库),实验了 Springboot 结合 Mybatis 以及 Mybatis-generator 生 ...
- SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页
SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了. ...
- mybatis pagehelper分页插件使用
使用过mybatis的人都知道,mybatis本身就很小且简单,sql写在xml里,统一管理和优化.缺点当然也有,比如我们使用过程中,要使用到分页,如果用最原始的方式的话,1.查询分页数据,2.获取分 ...
- SpringBoot+MyBatis多数据源使用分页插件PageHelper
之前只用过单数据源下的分页插件,而且几乎不用配置.一个静态方法就能搞定. PageHelper.startPage(pageNum, pageSize); 后来使用了多数据源(不同的数据库),Page ...
- 【spring boot】14.spring boot集成mybatis,注解方式OR映射文件方式AND pagehelper分页插件【Mybatis】pagehelper分页插件分页查询无效解决方法
spring boot集成mybatis,集成使用mybatis拖沓了好久,今天终于可以补起来了. 本篇源码中,同时使用了Spring data JPA 和 Mybatis两种方式. 在使用的过程中一 ...
随机推荐
- 探索 Rust:从基础语法到实用概念
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- github常见开源协议概括
None / No License 默认协议,不允许他人复杂.分发.修改.使用,只能fork下来看 Apache License 2.0 允许个人使用.商业使用.复制.修改.分发,但是出了事作者免责, ...
- 揭秘!测试开发速看,Mockaroo 如何轻松解决 90% 测试数据难题!
在软件测试领域,模拟生成测试数据一直是至关重要的环节.无论是验证系统功能的准确性,还是测试边界条件下的系统稳定性,都离不开丰富且真实的测试数据. 今天,向大家推荐一款强大的模拟生成测试数据工具 --M ...
- 肝了一个月整理了这份Java学习路线导图
很多人都在问应该怎么样学习java的知识点,java有哪些知识点?最近准备面试了,java知识点太多了又不知道如何开始复习?java的知识点太多太多,学完了又忘了.所以我们可以为每个知识点都整理成一份 ...
- 袋鼠云:拥抱DeepSeek大模型,做Data+AI的长期主义者
<数据资产管理白皮书>下载地址:https://www.dtstack.com/resources/1073/?src=szsm <行业指标体系白皮书>下载地址:https:/ ...
- Java集合--HashMap底层原理可视化,秒懂扩容、链化、树化
文章内容较长,带着疑问慢慢读. 文章对应的视频连接:https://www.bilibili.com/video/BV1wM3KzaE3d/ 哈希冲突问题如何高效解决? 1. 什么是冲突? 准确的说是 ...
- vue快速入门~必备基础知识(一)下~过滤器
过滤器指的是 在不改变data的情况下输出需要的格式数据. 基本的调用方法 一个过滤器 {{ message | filterFun }} new Vue({ //... filters:{ fil ...
- SQLPrompt关闭联网
关闭Redgate.client的联网 方法一:修改hosts文件 C:\Windows\System32\drivers\etc\hosts 127.0.0.1 licensing.red-gate ...
- C# 对字符串进行UrlEncode/UrlDecode
https://www.cnblogs.com/li150dan/p/13492280.html //对字符进行UrlEncode编码 string text= System.Web.HttpUtil ...
- Asp.Net Core MVC 记住密码
https://www.cnblogs.com/Hmd528/p/10695156.html if (lm.RememberMe) { ...