博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatis知识点复习-02其他入门操作
阅读量:3959 次
发布时间:2019-05-24

本文共 4104 字,大约阅读时间需要 13 分钟。

MyBatis知识点复习-02其他入门操作

下面演示时只给出java代码和添加在在User.xml里面的mapper标签下的关键操作代码,其他的内容参见上篇(本教程是一环一环的,要接着看才行)

文章目录

一.模糊查询操作

[${
}]:表示拼接SQL字符串 [${
value}]:表示要拼接的是简单类型参数。 注意: 简单类型:int,byte,short,long,float,double,char,boolean... String 1、如果参数为简单类型时,${
}里面的参数名称必须为value(就是这5个字母,不可以改的) 2、${
}会引起SQL注入,一般情况下不推荐使用。但是有些场景必须使用${
},比如order by ${
colname}

User.xml关键内容:

java文件:

package test;import domain.User;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.InputStream;public class TestUser {
@Test public void Test(){
//读取全局配置文件 InputStream resourceAsStream = TestUser.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"); //获取工厂对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream); SqlSession sqlSession = build.openSession(); User findUserByName = (User)sqlSession.selectOne("findUserByName", "张小"); System.out.println(findUserByName); //关闭SqlSession sqlSession.close(); }}

在这里插入图片描述

上面因为查询张小查询到了一个数据,如果查询有多条数据这时可以用sqlsession.selectList()方法,具体如下:

List
findUserByName = (sqlSession.selectList("findUserByName", "张"));

打印如下

在这里插入图片描述

二.插入删除更新操作

接下来为了方便书写修改后面的java代码我都是在Test方法内部的:

package test;import domain.User;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;import java.io.InputStream;import java.util.List;public class TestUser {
SqlSession sqlSession; @Before public void beforeFun(){
//读取全局配置文件 InputStream resourceAsStream = TestUser.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"); //获取工厂对象 SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); SqlSessionFactory build = sqlSessionFactoryBuilder.build(resourceAsStream); sqlSession = build.openSession(); } @Test public void Test(){
//代码放在这 } @After public void AfterFun(){
//关闭SqlSession sqlSession.close(); }}

注意上面的@After与@Before是在Junit下的,不是其他包下面的,否则会失效

1.插入

清空Test里的代码添加下面代码:

User user = new User();        user.setId(19);        user.setBirthday(new Date());        user.setAddress("北京");        user.setUsername("李成");        user.setSex("男");        //insert的返回值影响的行数        int affectedRwows = sqlSession.insert("insertUser", user);        System.out.println(affectedRwows);        sqlSession.commit();//提交事务,否则会事务回滚

User.xml关键内容:

insert into user (id,username,birthday,sex,address) value(#{
id},#{
username},#{
birthday},#{
sex},#{
address})

在这里插入图片描述

影响一行
在这里插入图片描述

2.删除

sqlSession.delete("deleteUserByName","李成");        sqlSession.commit();//提交事务,否则会事务回滚

清空Test里的代码添加下面代码:

delete from user where username = #{
vale}

User.xml关键内容:

delete from user where username = #{
vale}

在这里插入图片描述

3.修改

清空Test里的代码添加下面代码:

int update = sqlSession.update("updateUser", "王五");    System.out.println(update);    sqlSession.commit();

User.xml关键内容:

update user set username = "王六" where username = #{
name}

在这里插入图片描述

影响行数:
在这里插入图片描述

三.插入自动返回主键操作

这个部分我们重用上面的插入的代码;

清空Test里的代码添加下面代码:

User user = new User();        user.setId(19);        user.setBirthday(new Date());        user.setAddress("北京");        user.setUsername("李成");        user.setSex("男");        //insert的返回值影响的行数        int affectedRwows = sqlSession.insert("insertUser", user);        System.out.println(affectedRwows);        System.out.println(user.getId());        sqlSession.commit();//提交事务,否则会事务回滚

User.xml关键内容:

SELECT LAST_INSERT_ID()
insert into user (username,birthday,sex,address) value(#{
username},#{
birthday},#{
sex},#{
address})

在这里插入图片描述

在这里插入图片描述

转载地址:http://bvlzi.baihongyu.com/

你可能感兴趣的文章