Mybatis笔记——Mybatis入门

(一)MyBatis快速入门

通过一个案例快速入门Mybatis框架

案例:查询user表中所有数据1) 创建user表,添加数据2) 创建模块,导入坐标3) 编写MyBatis核心配置文件-->替换连接信息,解决硬编码问题4) 编写SQL映射文件-->统一管理sql语句,解决硬编码问题5) 编码i. 定义POJO类ii. 加载核心配置文件,获取SqlSessionFactory对象iii. 获取SqlSession对象,执行SQL语句iv. 释放资源

1、创建user表,添加数据

DROP table IF exists tb_user;CREATE TABLE tb_user(id int primary key auto_increment,username varchar(20),password varchar(30),gender char(1),addr varchar(20)
);insert into tb_user(id, username, password, gender, addr) values
(1, 'zhangsan', '123', '男', '广州'),
(2, '李四', '234', '女', '天津'),
(3, '王五', '11', '男', '北京');
sql语句执行结果

在这里插入图片描述

2.创建模块,导入坐标

在这里插入图片描述

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"><modelVersion>4.0.0</modelVersion><groupId>com.itheima</groupId><artifactId>mybatis-demo</artifactId><version>1.0-SNAPSHOT</version><repositories><repository><id>JBoss repository</id><url>https://repository.jboss.org/nexus/content/repositories/releases/</url></repository></repositories><dependencies><!--mybatis依赖--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><!--mysql驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.46</version></dependency><!--单元测试--><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!--添加slf4j日志API--><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.20</version></dependency><!--添加logback-classic依赖--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!--添加logback-core依赖--><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>1.2.3</version></dependency></dependencies></project>
logback文件的配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false"><!--定义日志文件的存储地址--><property name="LOG_HOME" value="/home" /><!--控制台日志, 控制台输出 --><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度,%msg:日志消息,%n是换行符--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder></appender><!--文件日志 --><appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"><rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--日志文件输出的文件名--><FileNamePattern>${LOG_HOME}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern><!--日志文件保留天数--><MaxHistory>30</MaxHistory></rollingPolicy><encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"><!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度--><pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern></encoder><triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"><MaxFileSize>10MB</MaxFileSize></triggeringPolicy></appender><logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" /><logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" /><logger name="org.hibernate.SQL" level="DEBUG" /><logger name="org.hibernate.engine.QueryParameters" level="DEBUG" /><logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" /><logger name="com.apache.ibatis" level="TRACE"/><logger name="java.sql.Connection" level="DEBUG"/><logger name="java.sql.Statement" level="DEBUG"/><logger name="java.sql.PreparedStatement" level="DEBUG"/><root level="DEBUG"><appender-ref ref="STDOUT" /><appender-ref ref="FILE"/></root>
</configuration>

3.编写MyBatis核心配置文件–>替换连接信息,解决硬编码问题

mybatis核心配置文件参考官网给出的示例
官网:https://mybatis.org/mybatis-3/zh/getting-started.html红色框框中的内容是需要根据自己的设置更改的

在这里插入图片描述

	我自己的配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><!-- 数据库链接信息 --><property name="driver" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false"/><property name="username" value="root"/><property name="password" value="111111"/></dataSource></environment></environments><mappers><mapper resource="UserMapper.xml"/></mappers>
</configuration>

4.编写SQL映射文件–>统一管理sql语句,解决硬编码问题

sql映射配置文件参考官网给出的示例
官网:https://mybatis.org/mybatis-3/zh/getting-started.html红色框框中的内容是需要根据自己的设置更改的

在这里插入图片描述

我的sql映射文件 UserMapper.xml配置如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!--namespace:名称空间
-->
<mapper namespace="test"><select id="selectAll" resultType="com.itheima.Pojo.User">select * from tb_user;</select>
</mapper>

5. 编码

首先创建User类包含表中的所有字段

在这里插入图片描述

public class User {private Integer id;private String username;private String passWord;private String gender;private String addr;public User() {}public User(Integer id, String username, String passWord, String gender, String addr) {this.id = id;this.username = username;this.passWord = passWord;this.gender = gender;this.addr = addr;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassWord() {return passWord;}public void setPassWord(String passWord) {this.passWord = passWord;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getAddr() {return addr;}public void setAddr(String addr) {this.addr = addr;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", passWord='" + passWord + '\'' +", gender='" + gender + '\'' +", addr='" + addr + '\'' +'}';}
}
测试类:main方法
public static void main(String[] args) throws Exception {//1.加载mybatis核心配置文件,获取SqlSessionFactoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//3.执行sqlList<User> users = sqlSession.selectList("test.selectAll");System.out.println(users);//4.释放资源sqlSession.close();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433650.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

POJ-3693 Maximum repetition substring 后缀数组

题目链接&#xff1a;http://poj.org/problem?id3693 求字符串的重复次数最多的且字典序最小的字串。 很不错的题目。罗穗骞大牛论文的模板题&#xff0c;摘了Neo / Add ~0U>>1大牛的详细题解&#xff0c;如下&#xff1a; 首先求第一问最大重复数。从N的范围来看O(N^2)…

asterisk1.8 for mipsel mysql

在astersik上要使用mysql数据库的话&#xff0c;需要加载跟mysql相关的3个模块 res_config_mysql.so app_mysql.so cdr_mysql.so 但是这个三个模块一直加载不上&#xff0c;自己写了程序用dlopen依然加载不上&#xff0c;用dlerror函数将错误信息打印出来&#xff1a; fil…

uln2003驱动蜂鸣器_让蜂鸣器发声

预备知识&#xff1a;蜂鸣器介绍开发板原理图上面蜂鸣器的电路图是这样的&#xff0c;根据视频知道它是一个无源蜂鸣器。可以看到蜂鸣器的一端和电阻相连&#xff0c;另一端和引脚BZ相连&#xff0c;注意这个BZ并不是元气名称&#xff0c;有图可知&#xff0c;元气名称都是蓝色…

python nlp_Python NLP入门教程

本文简要介绍Python自然语言处理(NLP)&#xff0c;使用Python的NLTK库。NLTK是Python的自然语言处理工具包&#xff0c;在NLP领域中&#xff0c;最常使用的一个Python库。 什么是NLP&#xff1f; 简单来说&#xff0c;自然语言处理(NLP)就是开发能够理解人类语言的应用程序或服…

asterisk1.8 拨号方案 mysql存储(动态)

1. 在asterisk库中创建下表 DROP TABLE IF EXISTS extensions; CREATE TABLE extensions ( id int(11) NOT NULL auto_increment, context varchar(20) NOT NULL default , exten varchar(20) NOT NULL default , priority tinyint(4) NOT NULL default 0, …

执行异常ORA-00918: column ambiguously defined

oracle查询报错信息&#xff1a;执行异常ORA-00918: column ambiguously defined 该错误信息意为有一列定义模糊&#xff0c;不知道是哪张表的。 通常在字段名前面加上前缀就可以解决。比如column改成a.column 在使用其他方案提供的查询工具时&#xff0c;外围可能包裹了类似se…

cesium 隐藏entity_cesium entity创建各类实体

html>创建实体import url(../Build/Cesium/Widgets/widgets.css);html, body, #cesiumContainer {width: 100%; height: 100%; margin: 0; padding: 0; overflow: hidden;}.cesium-viewer .cesium-widget-credits{ display:none }var myurl "http://mt1.google.cn/vt/…

python安装后cmd找不到_关于Python3.6环境中,virtualenv找不到命令的解决方法

今天收到一个网友的提问,说是,已经安装好了,Python3.6,系统环境变量也检查过,没有问题,在系统CMD命令行窗口,输入python可以返回当前安装的python环境的版本号,如下图python3.6 也测试了pip安装程序,也是正常的,然后用pip install virtualenv 安装虚拟环境,整个过程也没有报错,…

Mybatis占位符问题—ReflectionException: There is no getter for property named xxx

使用${}占位符时&#xff08;PS&#xff1a;一般都使用#{}&#xff0c;不建议使用${}&#xff09;&#xff0c;发现xml文件中的SQL语句使用了$后会报错&#xff1a;具体情况如下&#xff1a;解决方案如下&#xff1a;在参数前加上Param("id")注解

kamailio,asteisk,realtime 实现负载均衡(集群)完整配置笔记

环境 负载均衡数据库服务器 Centos-5.4 kamailio-3.1.4 mysql-5.0.77-4.el5_6.6 IP:192.168.1.30 asterisk服务器1 Centos-5.4 asterisk-1.8 IP:192.168.1.31 asterisk服务器2 Centos-5.4 asterisk-1.8 IP:192.168.1.32 目的 1&#xff1a;假设一个简易的asterisk 集…

maven依赖 spark sql_window环境运行spark-xgboost 8.1踩到的坑

在window 环境下使用spark - xgboost会出现一些问题&#xff0c;这里记录一下。环境&#xff1a;window 7 spark 2.31 xgboost 8.1 idea maven一.依赖以及代码数据集下载地址UCI Machine Learning Repository: Iris Data Set​archive.ics.uci.edupom依赖<!-- https://m…

linux文件目录的操作

1、查看目录信息 opendir readdir stat,lstat,fstat 将目录按字母排序,alphasort,scandir 一般的用法是将alphasort作为scandir的参数&#xff0c;比如 struct dirent **namelist; scandir("/",&namelist,0,alphasort); 2、复习了一遍popen,pclose 3、明…

python书籍排行榜前十名_学习Python,这些书你看过几本?

Python是一门简单&#xff0c;强大的计算机编程语言。Python书也是种类繁多&#xff0c;对于初学者选择合适的学习书籍是很有必要的。 1、Python编程&#xff1a;从入门到实践 全书分两部分&#xff1a;第一部分介绍用Python编程所必须了解的基本概念&#xff1b;第二部分将理论…

Spring 5的新特性

Spring Framework 5.0 是在 2017 年发布的一个主要版本&#xff0c;它带来了许多改进和新特性&#xff0c;相比于 Spring Framework 4.x&#xff0c;主要的升级包括&#xff1a; 基于 Java 8 的基线&#xff1a; Spring 5 需要 Java 8 或更高版本&#xff0c;这使得框架得以利用…

MyBatis笔记——配置文件完成增删改查

l 完成品牌数据的增删改查操作 要完成的功能列表清单&#xff1a;□ 查询 查询所有数据 查看详情 条件查询□ 添加□ 修改 修改全部字段 修改动态字段□ 删除 删除一个 批量删除准备环境&#xff1a; 数据库表tb_branddrop table if exists tb_brand;CREATE TABLE tb_brand(--…

linux新的API signalfd、timerfd、eventfd使用说明——eventfd

好久没更新了&#xff0c;今天看一下第三种新的fd&#xff1a;eventfd类似于管道的概念&#xff0c;可以实现线程间的事件通知&#xff0c;所不同的是eventfd的缓冲区大小是sizeof(uint64_t)也就是8字节&#xff0c;它是一个64位的计数器&#xff0c;写入递增计数器&#xff0c…

【最近的学习安排】

打算先把手头上的资源先消化得差不多了再看新的东西吧&#xff0c;编程之美、编程珠玑、程序员面试100题、刀疤鸭数据结构面试题、大话数据结构、数据结构与算法分析&#xff08;C描述&#xff09;&#xff0c;JAVA核心技术卷I&#xff0c;C Primer&#xff08;着重看类相关的和…

bitnamigitlab_Bitnami Gitlab 修改端口

BITNAMI Gitlab是个界面和使用都非常友好的Version Control工具&#xff0c;但其端口限制的弊端&#xff0c;导致部署很不爽&#xff0c;作为使用者&#xff0c;把我遇到的问题与大家共享。强烈建议不要修改端口&#xff0c;经查看数据库数据&#xff0c;链接地址带端口和不带端…

python字符串排序_Python对字符串列表进行排序

在本教程中&#xff0c;我们将看到如何对字符串列表进行排序。我们将使用sort方法和sorted函数对给定的字符串列表进行排序。然后&#xff0c;我们将了解如何根据不同的条件&#xff08;例如长度&#xff0c;值等&#xff09;对字符串列表进行排序&#xff0c; 让我们看看如何使…

莫名其秒的Cannot load JDBC driver class 'com.mysql.jdbc.Driv

JAR包正常的情况下出现 服务器没有找到驱动jar 报错Cannot load JDBC driver class com.mysql.jdbc.Driv 原因是没有把MYSQL驱动放在TOMCAT的LIB目录下 解决方法:把JDBC驱动放到Tomcat的common/lib下&#xff0c;重新启动服务器 转载于:https://www.cnblogs.com/leiteng/archiv…