前言:实现增删改查以及总记录查询问题
代码:
结构图:
Customer实体类:
package com.test.po;
public class Customer {
private int id;
private String username;
private String jobs;
private String phone;
public int getId() {
return id;
}
public void setId(int 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 + "]";
}
}
CustomerMapper.xml:
CustomerMapper接口:
package com.test.mapper;
import java.util.List;
import com.test.po.Customer;
public interface CustomerMapper {
//按照id查询客户信息
Customer findCustomerById(int id);
//按照客户名模糊查询客户信息
List findCustomerByName(String username);
//增加客户信息
int addCustomer(Customer customer);
//修改客户信息
int updateCustomer(Customer customer);
//删除客户信息
int deleteCustomerById(int id);
}
MyBatisTest测试类:
package com.test.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
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.test.mapper.CustomerMapper;
import com.test.po.Customer;
public class MybatisTest {
//Junit 是java语言的单元测试框架
//@Test这个注释说明依附在Junit的public void方法可以作为一个测试案例
//单元测试是一个对单一实体的测试(类或方法)
@Test
public void findCustomerByIdTest() throws IOException{
//1.读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//2根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlsession = sqlSessionFactory.openSession();
//3.sqlsession执行映射文件中的SQL,并返回映射结果
CustomerMapper customerMapper=sqlsession.getMapper(CustomerMapper.class);
Customer customer = customerMapper.findCustomerById(1);
System.out.println(customer.toString());
//4.关闭sqlsession
sqlsession.close();
}
//模糊查询
@Test
public void findCustomerByNameTest() throws IOException{
//1.读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//2根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlsession = sqlSessionFactory.openSession();
//3.sqlsession执行映射文件中的SQL,并返回映射结果
CustomerMapper customerMapper=sqlsession.getMapper(CustomerMapper.class);
List list = customerMapper.findCustomerByName("小");
for (Customer customer : list) {
System.out.println(customer.toString());
}
//4.关闭sqlsession
sqlsession.close();
}
//插入
@Test
public void addCustomerTest() throws IOException{
//1.读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//2根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlsession = sqlSessionFactory.openSession();
//3.创建customer对象,并向对象中添加数据
Customer customer = new Customer();
customer.setUsername("小张");
customer.setJobs("幼儿园老师");
customer.setPhone("122");
//4.insert 返回影响的行数
CustomerMapper customerMapper=sqlsession.getMapper(CustomerMapper.class);
int rows= customerMapper.addCustomer(customer);
//5.通过返回结果判断插入操作是否成功
if(rows>0){
System.out.println("成功插入了"+rows+"条数据");
}else{
System.out.println("插入失败");
}
//6.提交事物
sqlsession.commit();
//7.关闭sqlsession
sqlsession.close();
}
//更新
@Test
public void updateCustomerTest() throws IOException{
//1.读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//2根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlsession = sqlSessionFactory.openSession();
//3.创建customer对象,并向对象中添加数据
Customer customer = new Customer();
customer.setId(2);
customer.setUsername("小p");
customer.setJobs("幼儿园老师");
customer.setPhone("122");
//4.insert 返回影响的行数
CustomerMapper customerMapper=sqlsession.getMapper(CustomerMapper.class);
int rows= customerMapper.updateCustomer(customer);
//5.通过返回结果判断插入操作是否成功
if(rows>0){
System.out.println("成功更新了"+rows+"条数据");
}else{
System.out.println("更新失败");
}
//6.提交事物
sqlsession.commit();
//7.关闭sqlsession
sqlsession.close();
}
//根据id删除
@Test
public void deleteCustomerByIdTest() throws IOException{
//1.读取配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//2根据配置文件构建SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlsession = sqlSessionFactory.openSession();
//4.insert 返回影响的行数
// int rows= sqlsession.delete("com.test.mapper.CusotmerMapper.deleteCustomerById",7);
CustomerMapper customerMapper=sqlsession.getMapper(CustomerMapper.class);
int rows = customerMapper.deleteCustomerById(10);
//5.通过返回结果判断插入操作是否成功
if(rows>0){
System.out.println("成功删除了"+rows+"条数据");
}else{
System.out.println("删除失败");
}
//6.提交事物
sqlsession.commit();
//7.关闭sqlsession
sqlsession.close();
}
}
部分运行截图:
查询表总记录时SELECT count(1) FROM product 测试类运行时只显示
DEBUG [main] - ==> Preparing: SELECt count(1) FROM product
DEBUG [main] - ==> Parameters:
原因在于未指定sql输出结果类型 resultType
成功后显示如下:
DEBUG [main] - ==> Preparing: SELECt count(1) FROM product
DEBUG [main] - > Parameters:
DEBUG [main] - < Total: 1
总记录数为:3
SELECT count(1) FROM product



