本例在【Mybatis】MyBatis配置文件的使用(二)基础上继续学习对表执行CRUD操作

使用MyBatis对表执行CRUD操作

  1、定义sql映射xml文件(EmployeeMapper.xml)

 <?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:名称空间
id:唯一标识
resultType:返回值类型
#{id}:从传过来的参数中取出id值
-->
<mapper namespace="com.hd.test.mapper.EmployeeMapper">
<select id="getEmployeeById"
resultType="com.hd.test.pojo.Employee">
select id, last_name lastName, gender, email from employee where id =
#{id}
</select> <!-- public Long insertEmployee(Employee employee); -->
<!-- parameterType 可写可不写 -->
<insert id="insertEmployee" parameterType="com.hd.test.pojo.Employee" >
insert into employee(last_name, email, gender) values(#{lastName}, #{email}, #{gender})
</insert> <!-- public boolean updateEmployee(Employee employee); -->
<update id="updateEmployee">
update employee
set last_name = #{lastName}, email = #{email}, gender = #{gender}
where
id = #{id}
</update> <!-- public Integer deleteEmployeeById(Integer id); -->
<delete id="deleteEmployeeById">
delete from employee where id = #{id}
</delete> </mapper>

  2、在mybatis-config.xml文件中注册这个映射文件EmployeeMapper.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="development">
<environment id="development">
<transactionManager type="JDBC" />
<!-- 配置数据库连接信息 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/test_mybatis?allowPublicKeyRetrieval=true" />
<property name="username" value="admin" />
<property name="password" value="123456" />
</dataSource>
</environment>
</environments> <mappers>
<!-- 添加sql射文件到Mybatis的全局配置文件中 -->
<mapper resource="mapper/EmployeeMapper.xml" /> </mappers> </configuration>

  3、编写一个EmployeeMapper接口

 package com.hd.test.mapper;

 import com.hd.test.pojo.Employee;

 public interface EmployeeMapper {

     public Employee getEmployeeById(Integer id);

     // 新增
public Long insertEmployee(Employee employee); // 修改
public boolean updateEmployee(Employee employee); // 删除
public Integer deleteEmployeeById(Integer id); }

  4、编写mybatis单元测试类(TestMybatis.java)

 package com.hd.test.mybatis;

 import java.io.IOException;
import java.io.InputStream; import javax.sound.midi.Soundbank; 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.junit.Test; import com.hd.test.mapper.EmployeeMapper;
import com.hd.test.pojo.Employee; import sun.print.resources.serviceui; /**
* 1、SqlSession代表和数据库的一次会话,用完必须关闭
2、SqlSession和connection一样都是非线程安装的,每次使用都应该去获取新对象
3、mapper接口没有实现累,但是mybatis会为这个接口生成一个代理对象
(将接口和xml进行绑定)
EmployeeMapper empMapper = sqlSession.getMapper(EmployeeMapper.class)
4、连个重要的配置文件:
mybatis的全局配置文件:包含数据库连接信息,事物管理等系统环境信息
sql映射文件:保存了每一个sql语句的映射信息:
将sql抽取出来。
*
*/
public class TestMybatis { /**
* 测试增删改
* 1、mybatis允许增删改直接定义一下类型返回值
* Ingteger、Long、Boolean
* 2、需要手动提交数据
* SqlSession session = sqlSessionFactory.openSession(); ==> 手动提交
* SqlSession session = sqlSessionFactory.openSession(true); ==> 自动提交
* @throws IOException
*/ // 插入
@Test
public void test1() throws IOException { // 获取SqlSessionFactory
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 获取的sqlsession不会自动提交数据
SqlSession session = sqlSessionFactory.openSession(); try {
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class); // 1、插入数据
Employee employee = new Employee("小红", "1", "xiaohong@163.com");
Long returnValue = mapper.insertEmployee(employee);
System.out.println("插入返回值:" + returnValue); // 手动提交数据
session.commit(); } finally {
session.close();
}
} // 修改
@Test
public void test2() throws IOException { // 获取SqlSessionFactory
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 获取的sqlsession 自动提交数据
SqlSession session = sqlSessionFactory.openSession(true);
try {
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class); // 2、更新数据
Employee employee = new Employee(1, "小红", "0", "xiaohong@163.com");
boolean returnValue = mapper.updateEmployee(employee);
System.out.println("更新返回值:" + returnValue); } finally {
session.close();
}
} // 删除
@Test
public void test3() throws IOException { // 获取SqlSessionFactory
InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 获取的sqlsession 自动提交数据
SqlSession session = sqlSessionFactory.openSession(true);
try {
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class); // 3、删除数据
Integer returnValue = mapper.deleteEmployeeById(8);
System.out.println("删除返回值:" + returnValue); } finally {
session.close();
}
} /**
* 查询
* @throws IOException
*/
@Test
public void test() throws IOException {
// 1、根据mybatis全局配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
// 使用MyBatis提供的Resources类加载mybatis的配置文件,获取输入流
InputStream inputStream = Resources.getResourceAsStream(resource);
// 构建sqlSession的工厂
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); // 2、从SqlSession工厂中,获取sqlsession,用来执行sql
SqlSession session = sqlSessionFactory.openSession();
try {
// 查询selectOne
// @param statement Unique identifier matching the statement to use. 一个唯一标识
// @param parameter A parameter object to pass to the statement. 参数
EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
Employee employee = mapper.getEmployeeById(1);
// 输出信息
System.out.println("查询返回值:" + employee);
} finally {
// 关闭session
session.close();
}
} }

  5、运行单元测试类,结果如下:
    

    

【Mybatis】MyBatis对表执行CRUD操作(三)的更多相关文章

  1. 使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: <?xml version="1.0&quo ...

  2. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作(转载)

    本文转载自:http://www.cnblogs.com/jpf-java/p/6013540.html 上一篇博文MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybati ...

  3. MyBatis入门学习教程-使用MyBatis对表执行CRUD操作

    上一篇MyBatis学习总结(一)--MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对use ...

  4. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作--基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...

  5. MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

  6. MyBatis学习总结_02_使用MyBatis对表执行CRUD操作

    一.使用MyBatis对表执行CRUD操作——基于XML的实现 1.定义sql映射xml文件 userMapper.xml文件的内容如下: 1 <?xml version="1.0&q ...

  7. 【转】MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    [转]MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据, ...

  8. MyBatis学习笔记(二)——使用MyBatis对表执行CRUD操作

    转自孤傲苍狼的博客:http://www.cnblogs.com/xdp-gacl/p/4262895.html 上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用My ...

  9. 二:MyBatis学习总结(二)——使用MyBatis对表执行CRUD操作

    上一篇博文MyBatis学习总结(一)——MyBatis快速入门中我们讲了如何使用Mybatis查询users表中的数据,算是对MyBatis有一个初步的入门了,今天讲解一下如何使用MyBatis对u ...

随机推荐

  1. C#编程经验-VS Debug

    F11 OneStepDebugF10 ProcessDebugbreakPointDebug(quick location,then use one step debug)

  2. jsonp原理及同源策略

    [个人学习笔记,如有问题还请前辈纠正] jsonp 是用来跨域读取数据的,为什么从不同的域访问数据要用jsop呢?这源于一个著名的安全策略--同源策略,即: 协议.端口号.域名相同 举例说明:http ...

  3. MRO,C3算法

    1了解python2和python3类的区别 python2在2.4之前使用的是经典类, 2.4之后, 使用的是新式类 class Foo: pass class Foo(object): pass ...

  4. kettle实现多表同步

    本样例实现源库的所有表到目标库的同步sqlserver=>mysql(目标表存在表结构则同步),总调度如下: 由于复制记录到结果保存了多个表名,存在多个值,在高级选择对每个输入行执行一次进行循环 ...

  5. 【Noip模拟 20160929】选数

    题目描述 现在有一排共N个数,你需要从中选出恰好K个.选出K个数后,计算它们两两差值的绝对值的最小值S.你需要确定选出哪K个,才能最大化这个S. 输入数据 输入第一行两个正整数N.K,含义如上. 输入 ...

  6. 合批只是对CPU的优化,与GPU没有任何关系

    如题. 今天细想了下合批这个东西. 合批是节省了CPU的相关准备工作的工作量. 合批后,经过VS,PS,尝试测试,模板测试后,此时已没有了纹理,顶点,索引的概念,只剩下一个个孤立的像素,各像素间没有任 ...

  7. ExecutorService——shutdown方法和awaitTermination方法

    ExecutorService的关闭shutdown和awaitTermination为接口ExecutorService定义的两个方法,一般情况配合使用来关闭线程池. 方法简介shutdown方法: ...

  8. Datatable的操作方法

    DataTable操作相关内容: 对DataTable 的一些操作在dataTable中最容易想到的是用for循环来操作,但事实不到万不得已是不会用for循环的,因为效率一般不高. 1. 取行-取行一 ...

  9. cdnbest如何在站点里开启强制缓存

    在站点设置中如下图设置: 强制缓存有两种方式,一种是文件类型,一种是url方式

  10. pyspider--post

    #!/usr/bin/env python# -*- encoding: utf-8 -*-# Created on 2018-08-19 14:47:28# Project: HBGGZY_SBJ ...