Mybatis学习——Mybatis入门程序
MyBatis入门程序
一.查询用户
1.使用客户编号查询用户
(1).创建一个数据表
USE spring; #创建一个名为t_customer的表
CREATE TABLE t_customer(
id INT(32) PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50),
jobs VARCHAR(50),
phone VARCHAR(16)
); #插入3条数据
INSERT INTO t_customer VALUES('','joy','doctor','');
INSERT INTO t_customer VALUES('','jack','teacher','');
INSERT INTO t_customer VALUES('','tom','worker','');
(2)创建一个web项目,将Mybatis核心包放入,如图

(3)在src目录下创建一个com.itheima.po包,在该包下创建持久化类Customer,
package com.itheima.po;
/**
* 客户持久化类
* @author 12428
*
*/ import org.omg.CosNaming.NamingContextExtPackage.StringNameHelper; public class Customer {
private Integer id;
private String username;
private String jobs;
private String phone;
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 getJobs() {
return jobs;
}
public void setJobs(String jobs) {
this.jobs = jobs;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
@Override
public String toString() {
return "Customer [id=" + id + ", username=" + username + ", jobs=" + jobs + ", phone=" + phone + "]";
} }
(4)在src目录下,创建一个com.itheima.mapper的包,并在包中创建映射文件CustomerMapper.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 表示命名空间 :一般是使用该mapper的位置-->
<mapper namespace="com.itheima.mapper.CustomerMapper">
<!-- 根据客户编号来获取客户信息 -->
<select id="findCustomerById" parameterType="Integer"
resultType="com.itheima.po.Customer">
select * from t_customer where id=#{id}
</select>
</mapper>
<mapper>元素是配置文件的根元素,它包含了一个namespace属性,该属性为<mapper>元素指定了唯一的命名空间,通常会设置为“包名+SQL映射文件名”的形式,其中<select>元素中的信息是用于执行查询操作的配置,其中ID属性是<select>在配置文件中的唯一标识。parameterType是指定参数类型,resultType是指定查询返回查询结果的类型。在定义的Sql语句中#{id}是用于表示一个占位符
(5)在src的目录下,创建Mybatis的核心配置文件mybatis-config.xml,给配置文件中 的两个步骤:(1)配置环境;(2)配置Mapper.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>
<!--1. 配置环境 -->
<environments default="mysql">
<!-- 配置id为mysql的数据库环境 -->
<environment id="mysql">
<!-- 使用JDBC的事务管理 -->
<transactionManager type="JDBC"/> <!-- 数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/spring"/>
<property name="username" value="root"/>
<property name="password" value="abc"/>
</dataSource>
</environment> </environments> <!-- 配置Mapper的位置 -->
<mappers>
<mapper resource="com/itheima/mapper/CustomerMapper.xml"/>
</mappers>
</configuration>
(6).在src目录下,创建一个com.itheima.test包,在该包下创建一个测试类,并编写测试方法
package com.itheima.test; import java.io.InputStream; 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.itheima.po.Customer; /**
* MyBatis的测试类
* @author 12428
*
*/
public class MyBatisTest { /**
* 根据客户编号查询信息
* @throws Exception
*/
@Test
public void findCustomerByIdTest()throws Exception{
//1.读取配置文件
String resource ="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
//2.根据配置文件来构建SqlSessionFactory会话工厂实例
SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//3.通过会话工厂实例创建会话对象
SqlSession sqlSession=sessionFactory.openSession();
//4.通过sqlSession实例来执行方法
Customer customer=sqlSession.selectOne("com.itheima.mapper.CustomerMapper.findCustomerById",1);
//5.打印输出结果
System.out.println(customer.toString());
//6.关闭资源
sqlSession.close();
}
}
(7)测试结果

2.使用客户名模糊查询用户信息
(1)在映射文件CustomerMapper.xml中,添加根据客户模糊查询客户信息列表的Sql语句,具体代码如下
<!-- 根据客户名模糊查询客户的信息 -->
<select id="findCustomerByName" parameterType="String" resultType="com.itheima.po.Customer">
select * from t_customer where username like '%${value}%'
</select>
在使用“${}”进行SQL字符串拼接时,是无法防止SQL语句注入问题,如果想要实现模糊查询,又要防止SQL语句,可以对上述中的sql语句中的 '%${value}%' 改为concat()函数进行字符串拼接,如下
select * from t_customer where username like concat('%',#{value},'%')
(2)在测试类中添加查询的代码
/**
* 模糊查询用户的信息
*/
@Test
public void findCustomerByNameTest()throws Exception{
//1.读取配置文件
String resource ="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
//2.根据配置文件来构建SqlsessionFactory
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//3.根据工厂来创建会话对象
SqlSession sqlSession= sqlSessionFactory.openSession();
//4.执行查询方法
List<Customer> customers=sqlSession.selectList("com.itheima.mapper.CustomerMapper.findCustomerByName", 'j');
//5.输出结果集
for(Customer customer:customers) {
System.out.println(customer);
}
//6.关闭SqlSession
sqlSession.close();
(3)查询结果

二.添加客户
在MyBatis中由一个约定:
在形式上,无论输出参数和输入参数,都只能有一个,如果输入的参数是多种类型的,可以使用数组或者对象。
如果输入参数是简单类型(8个基本类型+String)是可以使用任何占位符的,#{xxx},如果是对象类型,则必须是对象的属性,#{属性名}
1.添加客户
(1)在配置文件customerMapper.xml中添加如下内容
<!-- 添加用户 -->
<insert id="addCustomer" parameterType="com.itheima.po.Customer">
insert into t_Customer(username,jobs,phone)
values(#{username},#{jobs},#{phone})
</insert>
(2)在测试类中添加addCustomer方法
/**
* 添加客户
*/
@Test
public void addCustomer() throws Exception{
//1.读取配置文件
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//2.通过SqlSession对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//3.执行添加操作
//3.1创建一个Customer对象
Customer customer=new Customer();
customer.setUsername("rose");
customer.setJobs("student");
customer.setPhone("11111111");
//3.2执行sqlSession的添加操作
int num=sqlSession.insert("com.itheima.mapper.CustomerMapper.addCustomer", customer);
//3.3通过查询结果来判断是否插入成功
if(num>0) {
System.out.println("您成功插入了"+num+"条数据");
}else {
System.out.println("插入失败!");
}
//3.4提交事务
sqlSession.commit();
//4.关闭sqlSession
sqlSession.close();
}
注意:如果是增删改,是需要提交事务的,不然是不会生效的。
三.修改用户,删除用户
(1).在配置文件中添加如下代码:
<!-- 更新客户 -->
<update id="updateCustomer" parameterType="com.itheima.po.Customer" >
update t_customer set
username=#{username},jobs=#{jobs},phone=#{phone} where id=#{id}
</update>
<!-- 删除用户 -->
<delete id="deleteCustomer" parameterType="Integer">
delete from t_customer where id=#{id}
</delete>
(2)在测试类中添加如下代码
/**
* 更新客户
*/ @Test
public void updateCustomerTest() throws Exception{
//1.读取配置文件
String resource ="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
//2.获取会话工厂对象
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//3.创建会话对象
SqlSession sqlSession=sqlSessionFactory.openSession();
//4.执行会话对象的方法
Customer customer=new Customer();
customer.setId(1);
customer.setUsername("zhaoli");
customer.setJobs("teacher");
customer.setPhone("111111");
int num=sqlSession.update("com.itheima.mapper.CustomerMapper.updateCustomer", customer);
//5.输出结果,根据返回的结果来判断
if(num>0) {
System.out.println("修改成功!");
}else {
System.out.println("修改失败!");
}
//6.提交事务
sqlSession.commit();
//7.关闭sqlSession对象
sqlSession.close();
} /**
* 删除用户
*/
@Test
public void deleteCustomer()throws Exception{
//1.读取配置文件
String resource ="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
//2.获取会话工厂对象
SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
//3.创建会话对象
SqlSession sqlSession=sqlSessionFactory.openSession(); //4.执行方法
int num=sqlSession.delete("com.itheima.mapper.CustomerMapper.deleteCustomer", 1);
//5.返回结果
if(num>0) {
System.out.println("删除成功!");
}else {
System.out.println("删除失败!");
}
//6.提交事务
sqlSession.commit();
//7.关闭sqlSession对象
sqlSession.close();
}
Mybatis学习——Mybatis入门程序的更多相关文章
- 【mybatis深度历险系列】mybatis的框架原理+入门程序解析
在前面的博文中,小编介绍了springmvc的相关知识点,在今天这篇博文中,小编将介绍一下mybatis的框架原理,以及mybatis的入门程序,实现用户的增删改查,她有什么优缺点以及mybatis和 ...
- mybatis由浅入深day01_4入门程序_4.6根据用户id(主键)查询用户信息
4 入门程序 4.1 需求 根据用户id(主键)查询用户信息 根据用户名称模糊查询用户信息 添加用户 删除 用户 更新用户 4.2 环境 java环境:jdk1.7.0_72 eclipse:indi ...
- Mybatis(一)Mybatis简介与入门程序
Mybatis简介: MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动.创建connection.创建 ...
- 【转】Mybatis学习---MyBatis知识、原始Dao开发和mapper代理开发
[原文]https://www.toutiao.com/i6594610137560777223/ 一.什么是MyBatis MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及 ...
- Mybatis学习---Mybatis分页插件 - PageHelper
1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件. 该插件目前支持Oracle,Mysql,MariaDB,S ...
- mybatis学习之入门实例
测试版本 mybatis:3.2.8 数据库:mysql 项目结构 jar包准备 mybatis-3.2.8.jar mysql-connector-java-5.1.39-bin.jar junit ...
- MyBatis学习--mybatis开发dao的方法
简介 使用Mybatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper接口开发方法. 主要概念介绍: MyBatis中进行Dao开发时候有几个重要的类,它们是SqlSessionFac ...
- Mybatis学习——Mybatis核心配置
MyBatis的核心配置 在使用MyBatis框架时,设计两个核心的d对象:SqlSessionFactory和SqlSession. SqlsessionFactory SqlSessionFact ...
- 大数据学习——scala入门程序
安装scala.msi https://blog.csdn.net/sinat_32867867/article/details/80305302 notepad++ object HelloScal ...
随机推荐
- NiFi之Processor配置
Processor(处理器)之配置 选择一个Processor,比如ExecuteSQL,从它的名字可以看出该处理器的功能就是去执行一个sql(当然是执行的该sql必须要有返回值的),下面就以Exec ...
- ES6 - 装饰器 - Decorater
注意,修饰器对类的行为的改变,是代码编译时发生的,而不是在运行时.这意味着,修饰器能在编译阶段运行代码.也就是说,修饰器本质就是编译时执行的函数. 修饰器是一个对类进行处理的函数.修饰器函 ...
- 使用dbcp连接mysql
1.创建dbcp.properties 文件 driver=com.mysql.jdbc.Driver url=jdbc:mysql:///zhang username=root password= ...
- SpringAOP 使用注解的简单使用
1. 导入jar包 /SpringAOPmy/lib/com.springsource.net.sf.cglib-2.2.0.jar/SpringAOPmy/lib/com.springsource. ...
- 【LeetCode】解数独
做题之前先复习下[STL中的Tuple容器] 我们知道,在Python中,大家都知道tuple这个概念,是一个只读的元素容器,容器内的元素数据类型可以不同,而在CPP中大部分的容器只能储存相同数据类型 ...
- 百度地图API提供Geocoder类进行地址解析
根据地址描述获得坐标百度地图API提供Geocoder类进行地址解析,您可以通过Geocoder.getPoint()方法来将一段地址描述转换为一个坐标. // 创建地址解析器实例var myGeo ...
- 04-String——课后动手动脑
1.请运行以下示例代码StringPool.java,查看输出结果.如何解释这样的输出结果?从中你能总结出什么? public class StringPool { public static voi ...
- 二十二、CI框架之模型别名
一.在控制器中调用模型时,可以给模型取别名,之后调用时,调用别名就可以了 二.界面显示如下: 不忘初心,如果您认为这篇文章有价值,认同作者的付出,可以微信二维码打赏任意金额给作者(微信号:382477 ...
- Essay写作的六大黄金法则以及四大禁区
虽然Essay这么难写,但是,也有一些可以拿高分的准则,本文小编就为大家分享高分Essay写作必知黄金法则,希望对想要在Essay拿高分的留学生小伙伴们有些帮助. 黄金法则1.关注相关问题的重点词汇 ...
- 实现VR直播的关键技术
VR是多媒体技术发展的必然趋势,人们所使用的信息载体从最早的文字.图像,到音视频,再到用VR,将事物的描述表达推向了极致,充分满足了沉浸性.互动性和构想性三大要素的需求.随着5G的商业化运营,VR有望 ...