提示:先看最后总结的程序总体布局
文章目录
前言
该使用Mybatis框架实现数据库的增删改查,数据库设计等先看连接文章:
https://blog.csdn.net/m0_49173531/article/details/115376709
提示:以下是本篇文章正文内容,下面案例可供参考
一 、查
1.添加映射
查询分为两种,一是单数据精确查询,二是多数据模糊查询,下面演示两种不同根据姓名的查询方法
PS:SQL语句中的"${}"用来表示拼接SQL的字符串,即不加解释的原样输出,但是在使用时无法防止SQL注入问题,需要用concat()进行字符拼接
在com.ccit.Mapper包下的UserMapper.xml文件中加入以下代码
<!-- 通过姓名 精确 查询用户信息 -->
<select id="findUserByName" resultType="com.ccit.entity.User">
select * from t_user where username = #{username}
</select>
<!-- 通过姓名 模糊 查询用户信息 -->
<select id="findUserByName2" resultType="com.ccit.entity.User" parameterType="String">
select * from t_user where username like concat('%',#{value},'%');
</select>
2.创建[查找操作]测试类
在com.ccit.test包下创建MyBatisSelectTest测试类
package com.ccit.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
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.ccit.entity.User;
public class MyBatisSelectTest {
/*
* 1.根据客户姓名 精确 查询用户信息 2.根据客户姓名 模糊 查询用户信息
*/
@Test
public void findUserByNameTest() throws Exception {
// 1.读取配置文件
String resource = "MyBatis.config.xml";
InputStream inputstream = Resources.getResourceAsStream(resource);
// 2.根据配置文件构建SqlSessionFactory
SqlSessionFactory salsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
// 3.通过SqlSessionFactory创建SqlSession
SqlSession sqlsession = salsessionfactory.openSession();
// 4.SqlSession执行映射文件中定义的SQL,并返回映射结果
/*
* 根据用户姓命精确查询客户信息 User
* user=sqlsession.selectOne("com.ccit.Mapper"+".UserMapper.findUserByName","小吴");
* System.out.println(user.toString());
*/
List<User> users = sqlsession.selectList("com.ccit.Mapper" + ".UserMapper.findUserByName2", "龙");
// 5.打印输出结果
for(User user:users) {
System.out.println(user.toString());
}
// 6.关闭SqlSession
sqlsession.close();
}
}
3.执行结果
执行MyBatisSelectTest.java的结果
二、增
1、添加映射
在com.ccit.Mapper包下的UserMapper.xml文件中加入以下代码
<!-- 添加用户信息 -->
<insert id="addUser" parameterType="com.ccit.entity.User">
insert into t_user(username,passward,gender,registTime)
values(#{username},#{passward},#{gender},#{registTime})
</insert>
2.创建[添加操作]测试类
在com.ccit.test包下创建MyBatisInsertTest测试类
package com.ccit.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
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.ccit.entity.User;
public class MyBatisInsertTest {
/*
* 添加用户信息
*
* */
@Test
public void addUserTest() throws IOException {
String resource = "MyBatis.config.xml";
InputStream inputstream = Resources.getResourceAsStream(resource);
SqlSessionFactory salsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
SqlSession sqlsession = salsessionfactory.openSession();
//4.SqlSession对象执行添加操作
//4.1创建User对象
User user=new User();
user.setUsername("陈晓晓");
user.setPassward("345");
user.setGender(1);
user.setRegistTime(new Date());
//4.2执行SqlSession对象的插入方法,返回的是受影响行数
int rows=sqlsession.insert("com.ccit.Mapper"+".UserMapper.addUser", user);
//4.3通过返回的结果判断插入操作是否执行成功
if(rows>0) {
System.out.println("成功插入"+rows+"条数据");
}else {
System.out.println("插入数据失败!!!");
}
//4.4提交事务
sqlsession.commit();
//5.关闭SqlSession
sqlsession.close();
}
}
3.执行结果
运行MyBatisInsertTest.java产生的结果
三、 删
1.添加映射
在com.ccit.Mapper包下的UserMapper.xml文件中加入以下代码
<!-- 删除用户信息 根据id删除用户-->
<delete id="deleteUser" parameterType="Integer">
delete from t_user where id=#{id}
</delete>
2.创建[删除操作]测试类
在com.ccit.test包下创建MyBatisDeleteTest测试类
package com.ccit.test;
import java.io.IOException;
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;
public class MyBatisDeleteTest {
/*
* 删除用户
* 根据id删除用户
* */
@Test
public void deleteUserTest() throws IOException {
String resource = "MyBatis.config.xml";
InputStream inputstream = Resources.getResourceAsStream(resource);
SqlSessionFactory salsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
SqlSession sqlsession = salsessionfactory.openSession();
int rows=sqlsession.delete("com.ccit.Mapper"+".UserMapper.deleteUser", 4);
if(rows>0) {
System.out.println("成功删除"+rows+"条数据");
}else {
System.out.println("删除数据失败!!!");
}
sqlsession.commit();
sqlsession.close();
}
}
3.执行结果
运行MyBatisDeleteTest.java产生的结果
四、改
1.添加映射
在com.ccit.Mapper包下的UserMapper.xml文件中加入以下代码
<!-- 修改用户信息 -->
<update id="updateUser" parameterType="com.ccit.entity.User">
update t_user set
username=#{username},passward=#{passward},gender=#{gender},registTime=#{registTime}
where id=#{id}
</update>
2.创建[修改操作]测试类
在com.ccit.test包下创建MyBatisUpdateTest测试类
package com.ccit.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.Date;
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.ccit.entity.User;
public class MyBatisUpdateTest {
/*
* 修改用户信息
*
* */
@Test
public void updateUserTest() throws IOException {
String resource = "MyBatis.config.xml";
InputStream inputstream = Resources.getResourceAsStream(resource);
SqlSessionFactory salsessionfactory = new SqlSessionFactoryBuilder().build(inputstream);
SqlSession sqlsession = salsessionfactory.openSession();
User user=new User();
user.setId(1);
user.setUsername("吴文英");
user.setPassward("123");
user.setRegistTime(new Date());
int rows=sqlsession.update("com.ccit.Mapper"+".UserMapper.updateUser", user);
if(rows>0) {
System.out.println("成功修改"+rows+"条数据");
}else {
System.out.println("修改数据失败!!!");
}
sqlsession.commit();
sqlsession.close();
}
}
3.执行结果
运行MyBatisUpdateTest.java产生的结果
总结
主要是在com.ccit.test包下创建增删改查四个类
(PS:可以放在一个类中同时测试MyBatis的增删改查,这里分开写更容易理解)
com.ccit.Mappper下的UserMapper.xml所有代码:
<?xml version="1.0" encoding="UTF-8"?>
<!-- MyBatis约束 -->
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- <mapper>是配置文件根元素 namespace为该mapper指定唯一命名空间 -->
<mapper namespace="com.ccit.Mapper.UserMapper">
<!--根据用户姓名获取客户信息-->
<!-- <select>子元素用于执行查询操作的配置
id:方法名
parameterType:形参类型
resultType:返回值类型
#{}:花括号内是形参名
-->
<!-- 通过姓名 精确 查询用户信息 -->
<select id="findUserByName" resultType="com.ccit.entity.User">
select * from t_user where username = #{username}
</select>
<!-- 通过姓名 模糊 查询用户信息 -->
<select id="findUserByName2" resultType="com.ccit.entity.User" parameterType="String">
select * from t_user where username like concat('%',#{value},'%');
</select>
<!-- 添加用户信息 -->
<insert id="addUser" parameterType="com.ccit.entity.User">
insert into t_user(username,passward,gender,registTime)
values(#{username},#{passward},#{gender},#{registTime})
</insert>
<!-- 修改用户信息 -->
<update id="updateUser" parameterType="com.ccit.entity.User">
update t_user set
username=#{username},passward=#{passward},gender=#{gender},registTime=#{registTime}
where id=#{id}
</update>
<!-- 删除用户信息 根据id删除用户-->
<delete id="deleteUser" parameterType="Integer">
delete from t_user where id=#{id}
</delete>
</mapper>