mybatis-1-hellomybatis
一、先创建一个mybatis的数据表
USE `mybatis`;
CREATE TABLE tbl_employee(
id INT(11) PRIMARY KEY AUTO_INCREMENT,
last_name VARCHAR(255),
gender CHAR(1),
email VARCHAR(255)
)
- 添加数据
二、创建实体类
- 我们的目标就是:把数据导入到这个实体类中,封装成一个一个的实例
package com.wang.mybatis;
public class Employee {
private Integer id;
//注意:这里的lastname和数据库中的last_name是不一样的
private String lastName;
private String email;
private String gender;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "Employee{" +
"id=" + id +
", lastName='" + lastName + '\'' +
", email='" + email + '\'' +
", gender='" + gender + '\'' +
'}';
}
}
三、导入环境
<dependencies>
<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.2</version>
</dependency>
<!-- mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
<!--junit测试板块-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
四、创建主配置文件
- 命名为:mybatis-config.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>
<!--配置MyBatis运行环境-->
<environments default="development">
<environment id="development">
<!--配置JDBC的事务管理-->
<transactionManager type="JDBC"/>
<!--POOLED配置JDBC数据源连接池-->
<dataSource type="POOLED">
<!--如下, 如果不指定编码, 可能会报空指针异常-->
<!-- <property name="url" value="jdbc:mysql://localhost:3306/ryan?serverTimezone=GMT%2B8"/> -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!--注册EmployeeMapper.xml-->
<mappers>
<mapper resource="EmployeeMapper.xml"/>
</mappers>
</configuration>
五、在新建的包下创建mapper配置文件, (每一个Java类都有一个对应的mapper, 在此配置文件中写sql)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--namespace的值为mapper对应的那个类的包名-->
<mapper namespace="com.wang.mybatis.Employee">
<!--resultType的值为对应的Java类-->
<!--id可以理解为唯一标识,之后将通过id调用对应sql-->
<select id="selectEmployee" resultType="com.wang.mybatis.Employee">
<!--#{id}类似于jdbc中的占位符?,表示传过来的参数-->
select id,last_name lastName ,email,gender from tbl_employee where id = #{id}
</select>
</mapper>
六、将mapper配置文件加载到mybais的配置文件 mybatis-config.xml 中:
...
<!--注册EmployeeMapper.xml-->
<mappers>
<mapper resource="EmployeeMapper.xml"/>
</mappers>
...
七、 创建Test类, 在这里操作数据库数据:
@org.junit.Test
public void test1(){
InputStream resourceAsStream = Test.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
//获取sqlSession实例,能直接执行已经映射了的sql语句
SqlSession sqlSession = sqlSessionFactory.openSession();
//通过sqlsession的selectone方法调用在sqlmapper中的sql语句
//1、第一个参数:mapper中的sql语句的id(唯一标识符)
//2、第二个参数:要传入到sql语句中的参数
Employee employee = sqlSession.selectOne("com.wang.mybatis.Employee.selectEmployee",1);
System.out.println(employee);
sqlSession.close();
}
八、拓展
定义一个接口接受参数返回参数
<select id="selectEmployee" resultType="com.wang.mybatis.Employee">
<!--#{id}类似于jdbc中的占位符?,表示传过来的参数-->
select id,last_name lastName ,email,gender from tbl_employee where id = #{id}
</select>
这段配置的作用就是通过id返回一个Employee的对象
我们可以写一个接口,也达到这样的目的
package com.wang.mybatis;
public interface EmployeeMapper {
//通过id获取返回职员对像
//这个方法只有输入数据类型和输出数据类型,刚好对应了我们需要在mapper.xml文件中写的输入数据和输出数据
public Employee getEmpById(Integer id);
}
mapper.xml修改
这个接口在内部会被实例化
我们通过sqlsession的getMapper方法获取到这个实例化对象,调用实例化接口中的getEmpById方法就可以了
@org.junit.Test
public void test3(){
//获取到sqlsession对象
InputStream resourceAsStream = Test.class.getClassLoader().getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
//利用getmapper方法获取到Employee的实例化结果
EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);
System.out.println(mapper.getEmpById(2));
}
mybatis-1-hellomybatis的更多相关文章
- 【JAVA - SSM】之MyBatis开发DAO
在SSM框架中的DAO层就是MyBatis中的Mapper,Mapper分为两部分:Mapper接口(JAVA文件)和Mapper映射文件(XML文件).DAO开发(Mapper开发)有两种方式:原始 ...
- 【JAVA - SSM】之MyBatis插入数据后获取自增主键
很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作.针对这个问题,有两种解决方案: (1)先插入,后查询.我们可以先插入一条数据,然后根据插入的数据的各个字段 ...
- 【JAVA - SSM】之MyBatis的ParameterType的使用
在MyBatis的Mapper.xml文件中,参数的表示方法有两种:一种是使用 "#{XXX}" 的方式表示的,另一种是使用 "${XXX}" 的方式表示的.今 ...
- MyBatis(1)——快速入门
MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- mybatis 初步使用(IDEA的Maven项目, 超详细)
目录 创建 Maven 项目 Maven配置 pom.xml 创建数据库 配置Mybatis 配置mybatis的XML文件 创建实体类和对应的Mapper.xml 测试 源码 @ 创建 Maven ...
- (转) MyBatis(1)——快速入门
MyBatis 简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为 ...
- DB数据源之SpringBoot+MyBatis踏坑过程(二)手工配置数据源与加载Mapper.xml扫描
DB数据源之SpringBoot+MyBatis踏坑过程(二)手工配置数据源与加载Mapper.xml扫描 liuyuhang原创,未经允许进制转载 吐槽之后应该有所改了,该方式可以作为一种过渡方式 ...
- DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描
DB数据源之SpringBoot+MyBatis踏坑过程(三)手工+半自动注解配置数据源与加载Mapper.xml扫描 liuyuhang原创,未经允许禁止转载 系列目录连接 DB数据源之Spr ...
- 【JavaEE】之MyBatis开发DAO
在SSM框架中的DAO层就是MyBatis中的Mapper,Mapper分为两部分:Mapper接口(JAVA文件)和Mapper映射文件(XML文件).DAO开发(Mapper开发)有两种方式:原始 ...
- 【JavaEE】之MyBatis插入数据后获取自增主键
很多时候,我们都需要在插入一条数据后回过头来获取到这条数据在数据表中的自增主键,便于后续操作.针对这个问题,有两种解决方案: 先插入,后查询.我们可以先插入一条数据,然后根据插入的数据的各个字段值,再 ...
随机推荐
- OSPF-三张表+路由器角色+router-id
验证理论: 1.剖析OSPF的三张表:邻居表,拓扑表,路由表 dis ospf peer brief dis ospf lsdb dis ip routing-table protocol ospf ...
- Mybatis映射文件中的参数传递
一.接口中只有一个参数 1.参数是基本类型or基本类型的包装类or字符串类型 这种情况下映射文件中#{}里的内容可以是任意的,你可以使用#{xxx} 或 #{abc} .....因为此时#{}相当于一 ...
- Qt中的内存回收机制
Qt中的内存回收机制 在Qt中创建对象的时候会提供一个 Parent对象指针(可以查看类的构造函数),下面来解释这个parent到底是干什么的. QObject是以对象树的形式组织起来的.当你创建一个 ...
- 20个提高开发效率的JavaScript技巧
减少代码行数和加快开发的技术! 我们在开发中,经常要写一些函数,如排序.搜索.寻找唯一的值.传递参数.交换值等,在这里我列出了我搜集的一些技术资源,可以像高手一样写出这些函数! JavaScript确 ...
- 【NX二次开发】Block UI 线型
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- 【NX二次开发】Block UI 选择节点
属性说明 属性 类型 描述 常规 BlockID String 控件ID Enable Logical 是否可操作 Group ...
- 【VBA】单元格插入图片,单元格删除图片
封装函数: Sub 插入产品形象(strRange As String, datebaseTu As String) Dim strJpg As String strJpg = datebaseTu ...
- ConcurrentSkipListSet - 秒懂
疯狂创客圈 经典图书 : <Netty Zookeeper Redis 高并发实战> 面试必备 + 面试必备 + 面试必备 [博客园总入口 ] 疯狂创客圈 经典图书 : <Sprin ...
- 如何编写shell脚本
1.首先创建一个目录 vi hello.sh 2.编写shell第一行 #!/bin/bash (为了声明是shell脚本,第一行都要这么写) 3.可以添加注释 #the first p ...
- 敢为人先,从阿里巴巴云原生团队实践Dapr案例,看分布式应用运行时前景
背景 Dapr是一个由微软主导的云原生开源项目,国内云计算巨头阿里云也积极参与其中,2019年10月首次发布,到今年2月正式发布V1.0版本.在不到一年半的时间内,github star数达到了1.2 ...