本文共 4104 字,大约阅读时间需要 13 分钟。
下面演示时只给出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()方法,具体如下:
ListfindUserByName = (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下的,不是其他包下面的,否则会失效
清空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})
sqlSession.delete("deleteUserByName","李成"); sqlSession.commit();//提交事务,否则会事务回滚
清空Test里的代码添加下面代码:
delete from user where username = #{ vale}
User.xml关键内容:
delete from user where username = #{ vale}
清空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/