解析Mybatis入门第一天
- MyBatis是一个基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单。
- MyBatis通过XML或者注解的方式将要执行的各种Statement对象配置起来,通过Java对象和statement中SQL的动态参数进行映射,并最终执行SQL语句。执行SQL后,最终将结果已Java对象返回。
- 采用了ORM的思想。
- 在数据库中新建一张表。插入数据(使用mysql数据库。我的数据库的名字:javaDemo)
CREATE TABLE `NBAPlaers` (
`id` int() NOT NULL auto_increment,
`username` varchar() NOT NULL COMMENT '用户名称',
`birthday` datetime default NULL COMMENT '生日',
`sex` char() default NULL COMMENT '性别',
`address` varchar() default NULL COMMENT '地址',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
insert into `NBAPlaers`(`id`,`username`,`birthday`,`sex`,`address`) values (,'Lebron','2018-02-27 17:47:08','男','北京'),(,'Kobe','2018-03-02 15:09:37','女','上海'),(,'Irving','2018-03-04 11:34:34','女','深圳'),(,'Davis','2018-03-04 12:04:06','男','广州');- 代码需求分析:
- 使用mybatis从数据库中查询数据。
- 创建一个java工程,导入需要的jar包
- 编写一个和港爱创建表相同的实体类,对数据进行封装
- 编写映射的配置文件,即SQL语句
- 编写主配置文件(配置数据库相关的信息)。加载步骤4的映射文件,这样在加载主配置文件的时候,映射的配置文件就会加载。
- 使用mybatis提供的API入门。。。come On
- 创建一个普通的Maven工程:如图
上图什么都不用选择,直接next
- 给GroupId和Artifatid补充一个名字。
- 创建好之后就是这个页面了
- 在pom.xml文件中引入需要的坐标
<dependencies>
<!-- mybatis坐标 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/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.6</version>
</dependency>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<!--日志-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
</dependencies> - 创建一个NBAPlaers的实体类,实现接口Serializable
package zh.test.domain; import java.io.Serializable;
import java.util.Date; /*
编写一个User的实体类,并且实现Serializable接口,目的只是表示一个类的对象可以被序列化。
什么是Serializable接口?
一个对象序列化的接口,一个类只有实现了Serializable接口,他的对象才能被序列化
*/
public class NBAPlaers implements Serializable {
private Integer id;
private String username;
private Date birthday;
private String sex;
private String address; @Override
public String toString() {
return "NBAPlaers{" +
"id=" + id +
", username='" + username + '\'' +
", birthday=" + birthday +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
} 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 Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
} public String getAddress() {
return address;
} public void setAddress(String address) {
this.address = address;
}
} 编写一个UserMapper.xml的文件,
<?xml version="1.0" encoding="UTF-8"?>
<!--约束 dtd约束-->
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--
namespace:用来区分mapper接口的,一般写mapper的全路径
-->
<mapper namespace="zh.test.mapper.UserMapper">
<!--
id属性:表示接口中方法的名称
resultType:方法返回值类型,全限定路径(包名+类名)
-->
<select id="findAll" resultType="zh.test.domain.NBAPlaers">
/*
编写对应的sql语句
*/
select * from NBAPlaers;
</select>
</mapper>- 编写一个主配置文件,主要用来配置数据库的连接,建议主配置文件的名称是SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--配置多个环境-->
<environments default="mysql">
<!--配置环境-->
<environment id="mysql">
<!--配置事物管理,使用本地的事物策略-->
<transactionManager type="JDBC"></transactionManager>
<!--是否要是要连接池 POOLED UNPOOLED-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3306/javaDemo?characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/> <!--<property name="url" value="jdbc:mysql:///javaDemo"/>-->
</dataSource>
</environment>
</environments>
<!--引入映射的配置文件-->
<mappers>
<mapper resource="mappers/Usermapper.xml"></mapper>
</mappers>
</configuration> - 最后编写一个单元测试的方法进行测试查询数据库中的结果
package zh.test; import org.apache.ibatis.annotations.Result;
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 org.apache.log4j.lf5.util.Resource;
import org.junit.Test;
import zh.test.domain.NBAPlaers;
import zh.test.mapper.UserMapper; import java.io.IOException;
import java.io.InputStream;
import java.util.List; public class Demo {
@Test
public void findUserAll() throws IOException {
//加载主配置文件,构建SqlSessionFactory的对象
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig");
//创建sqlSession对象
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//通过工厂对象,获取sqlSession对象
SqlSession sqlSession = build.openSession();
//调用sqlsession对象,并遍历
List<NBAPlaers> list = sqlSession.selectList("zh.test.mapper.UserMapper.findAll");
for (NBAPlaers user:list)
{
System.out.println(user);
}
sqlSession.close();
resourceAsStream.close();
} @Test
public void findUserAll2() throws IOException {
//加载主配置文件
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig");
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = build.openSession();
//获取到代理对象,mybatis框架生成代理对象
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//mapper指向就是代理对象
List<NBAPlaers> allPlayers = mapper.findAll();
for(NBAPlaers user:allPlayers)
{
System.out.println(user);
}
sqlSession.close();
resourceAsStream.close();
}
}结果:在控制台上输出
学习网站:https://mybatis.org/mybatis-3/zh/index.html
分享之路,欢迎交流。。。
解析Mybatis入门第一天的更多相关文章
- 解析Mybatis入门第二天
入门第二天 目的:使用Mybatis对数据库中的数据进行简单的操作.例如:增.删.改.查. 前言:同样是使用idea创建一个普通的maven工程(如何创建一个普通的Maven工程可以参考入门第一天的详 ...
- mybatis入门-第一个程序
今天,我们就一起来完成mybatis的第一个小demo,使用mybatis对我们的数据库进行一个小小的操作. 需求 根据用户id查询用户的信息. 环境搭建 java环境:jdk1.7版本 开发工具:e ...
- Java Persistence with MyBatis 3(中文版) 第一章 MyBatis入门
本章将涵盖以下话题: ž MyBatis是什么? ž 为什么选择MyBatis? ž MyBatis安装配置 ž 域模型样例 1.1 MyBatis是什么 MyBatis是一个简化和实现了Ja ...
- 第一节:mybatis入门
1.新建数据表 本次测试使用mysql数据,数据库名称为mybatis,新建一张表person,建表语句如下: CREATE TABLE `person` ( `id` ) PRIMARY KEY a ...
- MyBatis入门基础(一)
一:对原生态JDBC问题的总结 新项目要使用mybatis作为持久层框架,由于本人之前一直使用的Hibernate,对mybatis的用法实在欠缺,最近几天计划把mybatis学习一哈,特将学习笔记记 ...
- 【转载】 mybatis入门系列四之动态SQL
mybatis 详解(五)------动态SQL 目录 1.动态SQL:if 语句 2.动态SQL:if+where 语句 3.动态SQL:if+set 语句 4.动态SQL:choose(when, ...
- Mybatis系列(一):Mybatis入门
一.Mybatis是什么 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改 ...
- Mybatis入门及Dao开发方式
本节内容: Mybatis介绍 使用jdbc编程问题总结 Mybatis架构 Mybatis入门程序 Dao的开发方式 SqlMapConfig.xml文件说明 一.Mybatis介绍 MyBatis ...
- MyBatis入门基础
转自http://www.cnblogs.com/selene/p/4604605.html 话不多说,先看看原始的JDBC程序代码,看看这样的代码存在什么样子的问题. package com.uti ...
随机推荐
- JS window对象 返回下一个浏览的页面 forward()方法,加载 history 列表中的下一个 URL。
返回下一个浏览的页面 forward()方法,加载 history 列表中的下一个 URL. 如果倒退之后,再想回到倒退之前浏览的页面,则可以使用forward()方法,代码如下: window.hi ...
- 【JS学习】慕课网9-14 删除结点操作的问题
试一试,定义clearText()函数,完成节点内容的删除. 1. 删除该节点的内容,先要获取子节点. 2. 然后使用循环遍历每个子节点. 3. 使用removeChild()删除节点. 特别要注意的 ...
- 一键对centos7.6安装python3环境已经pip3
1 yum -y install "Development tools" 2 yum -y install zlib-devel bzip2-devel openssl-devel ...
- Dart编程实例 - 相等和关系操作符
Dart编程实例 - 相等和关系操作符 void main() { var num1 = 5; var num2 = 9; var res = num1>num2; print('num1 gr ...
- 11、for和range的用法
// 27_range的使用 package main import ( "fmt" ) func main() { str := "abc" //通过for打 ...
- 【Jenkins、sonar】
1.Jenkins入门(一)安装Jenkins 2.Jenkins入门(二)部署java项目 3.Jenkins远程部署SpringBoot应用 4.配置sonar.jenkins进行持续审查 5.S ...
- 在C#.NET中,如何生成PDF文件?主要有以下几个途径
1.使用.NET文件流技术:若通过.NET的文件流技术生成PDF文件,必须对PDF文件的语法很清楚,例如BT表示实体内容开始:ET表示实体内容结束:TD表示换行等等.我们可以从Adobe的官方网站上下 ...
- 技巧&注意事项合集
技巧&注意事项合集 杂项 OI Wiki有很多实用的东西 编程环境 打开Dev-C++中工具-编译选项-代码生成/优化-代码警告-显示最多警告信息的开关,可以检查出一堆傻逼错误 define ...
- css过滤镜实现颜色渐变
语法:filter : progid:DXImageTransform.Microsoft.Gradient ( enabled=bEnabled , startColorStr=iWidth , e ...
- JDK8之新特性扩展篇
之前分篇章讲了一些JKD8中添加的新特性,还有一些新特性这里也一并讲下. BASE64 base64编码解码已经被加入到了jdk8中了. import java.nio.charset.Standar ...