2 . Mybatis — 增-删-改
数据库是 test,表是user,,Bean那些已经准备好 自己去get and set 和 toString 等..
1、导入gav
2、编写配置文件(核心配置 和 映射配置)
我们学了最基础的 查询。现在操作 增加操作:
核心配置文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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"> <mapper namespace="crud"> <!--插入 那就是插入标签 parameterType 表示那个对象是占位符数据的来源对象--> <insert id="insertDemo" parameterType="com.bihu.Bean.User"> <!-- 下面这条是语句 其中不是用? 作占位符,是用#{} 花括号内写入占位符数据来源对象的字段即可--> insert into user values(#{id},#{username},#{password}) </insert> </mapper>
映射配置文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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"> <mapper namespace="crud"> <!--插入 那就是插入标签 parameterType 表示那个对象是占位符数据的来源对象--> <insert id="insertDemo" parameterType="com.bihu.Bean.User"> <!-- 下面这条是语句 其中不是用? 作占位符,是用#{} 花括号内写入占位符数据来源对象的字段即可--> insert into user values(#{id},#{username},#{password}) </insert> </mapper>
3.编写测试类
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import com.bihu.Bean.User;
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 java.io.IOException;
import java.io.InputStream;
public class MybatisTest {
@Test
public void db_show() throws IOException {
//因为插入操作数据对象是 冲 前端->Controller->Service->DAO层 所以这里模拟下DAO层
User user = new User();
user.setId(10088);
user.setUsername("BiHu");
user.setPassword("123456");
InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
//因为是插入操作 所以这里是 insert方法,第二个参数是 占位符数据源
sqlSession.insert("crud.insertDemo",user);
//因为我们是更新操作 所以要提交事务 ,查询不需要
sqlSession.commit();
sqlSession.close();
}
}
4.查看数据库
插入操作完事!
更改操作:【其实也可以单条件和多条件 看你喜欢】
核心配置文件不用改 用最上面那个一样的。。。。
映射文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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"> <mapper namespace="crud"> <!--更新 那就是update标签 parameterType 表示那个对象是占位符数据的来源对象--> <update id="updateTest" parameterType="com.bihu.Bean.User"> update user set username = #{username},password = #{password} where id = #{id} </update> </mapper>
测试文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import com.bihu.Bean.User; 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 java.io.IOException; import java.io.InputStream; public class MybatisTest { @Test public void db_show() throws IOException { //因为更新操作数据对象是 从 前端->Controller->Service->DAO层 所以这里模拟下DAO层 User user = new User(); user.setId(10088); user.setUsername("LZ"); user.setPassword("654321"); InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); //因为是插入操作 所以这里是 update方法,第二个参数是 占位符数据源 sqlSession.update("crud.updateTest",user); //因为我们是更新操作 所以要提交事务 ,查询不需要 sqlSession.commit(); sqlSession.close(); } }
完事!
删除操作 更新和删除都存在条件,分 单条件(一个条件) 和 多条件(多个条件判断),这样 映射文件中的占位符就会有两种写法:
单条件删除:
核心配置文件不变 依照最上面那个来写:
映射文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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"> <mapper namespace="crud"> <!--删除操作 那就是delete标签 parameterType 表示那个对象是占位符数据的来源对象--> <!--因为这是单条件写法 下面的parameterType是Integer型的 占位符中写什么都可以 但一定的是Integer型的--> <delete id="deleteTest" parameterType="java.lang.Integer"> delete from user where id = #{random} </delete> </mapper>
测试类:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import com.bihu.Bean.User; 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 java.io.IOException; import java.io.InputStream; public class MybatisTest { @Test public void db_show() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); //因为是删除操作 所以这里是 delete方法,第二个参数是 占位符数据源 sqlSession.delete("crud.deleteTest",10088); //因为我们是更新操作 所以要提交事务 ,查询不需要 sqlSession.commit(); sqlSession.close(); } }
ID为10088 的 LZ就被删除了
所以这里要注意的就是 parameterType 。
多条件删除
映射文件:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?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"> <mapper namespace="crud"> <!--删除操作 那就是delete标签 parameterType 表示那个对象是占位符数据的来源对象--> <delete id="deleteTest" parameterType="com.bihu.Bean.User"> delete from user where id = #{id} and username = #{username} </delete> </mapper>
测试类:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import com.bihu.Bean.User; 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 java.io.IOException; import java.io.InputStream; public class MybatisTest { @Test public void db_show() throws IOException { //模拟数据来源 User user = new User(); user.setId(3); user.setUsername("qq333"); user.setPassword("565de98"); InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); //因为是删除操作 所以这里是 delete方法,第二个参数是 占位符数据源 sqlSession.delete("crud.deleteTest",user); //因为我们是更新操作 所以要提交事务 ,查询不需要 sqlSession.commit(); sqlSession.close(); } }
qq333就没了...这是 ID + usename 的删除操作。
本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/15122211.html