Java EE MyBatis ,mysql增删改查

Java EE MyBatis 初识 ,mysql增删改查

在这里插入图片描述

事前准备


MyBatis框架下,需要用到的jar包
jar包

我所理解的结构图

↓↓↓

在这里插入图片描述

实体类↓↓↓

package com.gxjd.ShiTiLi;
/**
 * 
 * 实体类,没什么好说的,但要注意要和数据库的,表列名保存一致,就行了
 *
 */

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 + "]";
	}

}

**

创建连接类JDBC,是XML文件类型,创建在src目录外面↓↓↓

**

<?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">
<!-- 这个↑↑配置文件的代码可以从MyBatis的使用手册中找到 -->

<configuration>
<!-- 配置默认的环境 -->
	<environments default="mysql">
	<!-- 配置一个mysql的数据库环境 -->
		<environment id="mysql">
		<!-- 配置事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 配置数据源(数据池) -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8" /> 
				<property name="username" value="root" />
				<property name="password" value="root" />
			</dataSource>
		</environment>
	</environments>
	
	<!--加載映射文件  -->
	<mappers>
		<mapper resource="com/gxjd/Mapper/CustomerMapper.xml" />
	</mappers>
</configuration>

常见的JDBC格式。


创建存放sql语句的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">
<!-- 这个↑↑配置文件开头的代码可以从MyBatis的使用手册中找到 -->


<!-- namespace命名空间:唯一的规则 -->
<mapper namespace="com.gxjd.Mapper.CustomerMapper">

<!-- 根据id查询       id在测试类的时候引用                                                                                               这里↓↓只能使用点号,不能用/符号       -->
	<select id="findCustomerById" parameterType="Integer" resultType="com.gxjd.ShiTiLi.Customer">
		select * from t_customer where id=#{id}<!--                  因为这里↑↑调用了实体类,所以下面大括号里的变量要和实体类的一样 -->
	</select>
	
	
<!-- 模糊查询               id在测试类的时候引用                                                                                               这里↓↓只能使用点号,不能用/符号                     -->
	<select id="findCustomerByName" parameterType="String" resultType="com.gxjd.ShiTiLi.Customer">	
	    select * from t_customer where username like '%${value}%'<!--因为这里↑↑调用了实体类,所以下面大括号里的变量要和实体类的一样 -->	
	</select>
	
	
<!--修改               id在测试类的时候引用                           这里↓↓只能使用点号.不能用/符号                     -->	
	<insert id="insert" parameterType="com.gxjd.ShiTiLi.Customer">
	insert into t_customer(username,jobs,phone)<!--因为这里↑↑调用了实体类,所以下面大括号里的变量要和实体类的一样 -->
	values (#{username},#{jobs},#{phone})	
	</insert>
	
	
<!-- 修改          id在测试类的时候引用                             这里↓↓只能使用点号.不能用/符号                     -->	
	<update id="update" parameterType="com.gxjd.ShiTiLi.Customer">
	update t_customer set<!--       因为这里↑↑调用了实体类,所以下面大括号里的变量要和实体类的一样 -->
	username=#{username},
	jobs=#{jobs},
	phone=#{phone}
	where id=#{id}	
	</update>
	
	
<!-- 删除                 id在测试类的时候引用                                  这里↓↓只能使用点号.不能用/符号                     -->	
	<delete id="delete" parameterType="com.gxjd.ShiTiLi.Customer">
	delete from t_customer where id=#{id}<!--因为这里↑↑调用了实体类,所以下面大括号里的变量要和实体类的一样 -->
	</delete>
	

<!-- 查询所有信息     id在测试类的时候引用                                                                    这里↓↓只能使用点号.不能用/符号                     -->	
	<select id="select" parameterType="String" resultType="com.gxjd.ShiTiLi.Customer" >
	select * from t_customer;
	</select>
</mapper>

创建工具类

package com.gcjd.util;

import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
 * 工具类:将重复出现的代码,统一到同一个方法中,之后实现相关功能时,就能减少代码量
 * 
 *
 */

public class MyBatisUtil {
	private static SqlSessionFactory sqlSessionFactory=null;
	static {
	
		try {
			Reader reader=Resources.getResourceAsReader("mybatis-config.xml");//意思:获取配置文件
			sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);//意思:根据配置文件,构建出SqlSessionFactory
			
		}catch (Exception e) {
			e.printStackTrace();
		}
	}
	public static SqlSession getSession() {//意思:获取SqlSession的静态方法,测试类的时候引用
		return sqlSessionFactory.openSession();
	}
}

到测试类

package com.gxjd.Test;

import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import com.gcjd.util.MyBatisUtil;
import com.gxjd.ShiTiLi.Customer;

public class MyBatisTest {//测试类
			
	@Test//选有数字‘4’的那个,引入
	public void selectId() {//根据ID查询
		SqlSession sqlSession=MyBatisUtil.getSession();//↓↓创建的那个XML文件路径,及方法,这里是‘精确查询’方法
		Customer customer=sqlSession.selectOne("com.gxjd.Mapper.CustomerMapper.findCustomerById",2);
		System.out.println(customer.toString());
		sqlSession.close();//关闭		
	}
	
	@Test//选有数字‘4’的那个,引入
	public void selectName() {//模糊查询
		SqlSession sqlSession=MyBatisUtil.getSession();//↓↓创建的那个XML文件路径,及方法,这里是‘模糊查询’方法
		List<Customer> customer=sqlSession.selectList("com.gxjd.Mapper.CustomerMapper.findCustomerByName","j");
		//多数据,用List                            List
		for(Customer customer2 :customer) {
			System.out.println(customer2);
		}
		sqlSession.close();//关闭
	}
	@Test//选有数字‘4’的那个,引入
	public void insert() {//添加
		SqlSession sqlSession=MyBatisUtil.getSession();
		Customer customer=new Customer();
		customer.setUsername("ssssss");
		customer.setJobs("tttttt");
		customer.setPhone("66666665");//↓↓创建的那个XML文件路径,及方法,这里是‘添加’方法
		int cou=sqlSession.insert("    com.gxjd.Mapper.CustomerMapper.insert", customer);
		//                .insert添加方法     
		if(cou>0) {
			System.out.println("成功添加"+cou+"条数据");
		}else {
			System.out.println("添加失败");
		}
		sqlSession.commit();//提交事务,注意:只有查询select,不用提交事务,其他都要
		sqlSession.close();//关闭
		
		
		
	}
	
	@Test//选有数字‘4’的那个,引入
	public void update() {//修改
		SqlSession sqlSession=MyBatisUtil.getSession();
		
		Customer customer=new Customer();
		customer.setId(5);
		customer.setUsername("修改后的");
		customer.setJobs("修改后的5");
		customer.setPhone("修改后的");//↓↓创建的那个XML文件路径,及方法,这里是‘修改’方法
		int con=sqlSession.update("   com.gxjd.Mapper.CustomerMapper.update", customer);
        //                .update修改方法   
		if(con>0) {
			System.out.println("修改后的"+customer);
		}else {
			System.out.println("修改失败");
		}
		sqlSession.commit();//提交事务,注意:只有查询select,不用提交事务,其他都要
		sqlSession.close();	//关闭
	}
	@Test//选有数字‘4’的那个,引入
	public void delete() {//删除
		SqlSession sqlSession=MyBatisUtil.getSession();
		                          //↓↓创建的那个XML文件路径,及方法,这里是‘删除查询’方法
		int con=sqlSession.delete("com.gxjd.Mapper.CustomerMapper.delete",6);
		//                .delete删除方法
		if(con>0) {
			System.out.println("成功删除"+con+"条记录");
		}else {
			System.out.println("删除失败");
		}
		sqlSession.commit();//提交事务,注意:只有查询select,不用提交事务,其他都要
		sqlSession.close();//关闭
	}
	
	@Test//选有数字‘4’的那个,引入
	public void select() {//查询全部
		SqlSession sqlSession=MyBatisUtil.getSession();//↓↓创建的那个XML文件路径,及方法,这里是‘查询全部’方法
		List<Customer> customer=sqlSession.selectList("com.gxjd.Mapper.CustomerMapper.select");
		//多数据,用 List                        List
		for(Customer customer2: customer) {
			System.out.println(customer2);
		}
		sqlSession.close();//关闭
	}

}

到这里,就可以了,不过可以加个日志log文件,加不加都能运行
在这里插入图片描述

容易出错的地方,主要在调用路径上。其他到没什么。
例:在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值