在这一个部分,主要进行增删改查的示例书写。
增删改查可以基于xml的,也可以基于注解的方式。
一:对单条数据的查询
1.目录结构
这个使得目录更加清晰
2.User.java
这个使用以前的user表。
因此,domain不需要改动。
3.配置文件
重要的参考部分是引用映射文件的部分
1 2 3 45 6 18 197 178 109 11 1612 13 14 15 20 22 2321
4.映射文件
1 2 5 67 8 12 13 169 10 11
5.测试类
这个对于加载的配置文件的方式不同,稍微有点区别,顺便整理一下。
1 package com.cao.test1; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.Reader; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory;10 import org.apache.ibatis.session.SqlSessionFactoryBuilder;11 import org.junit.Test;12 13 import com.cao.bean.User;14 /**15 * 这是一个对比程序16 * 当然也是一个根据条件,进行单条查询的程序17 * @author dell18 *19 */20 public class mainTest {21 /**22 * 查询单条数据23 * 根据id进行查询24 * @throws Exception25 */26 @Test27 public void testSelectOne1() throws Exception {28 String resources="/com/cao/config/Configuration.xml"; //这种方式在前面需要加一个/29 InputStream is=mainTest.class.getResourceAsStream(resources);30 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);31 SqlSession sqlSession=sqlSessionFactory.openSession();32 String statement="quickFirst.selectUserOne";33 User user=sqlSession.selectOne(statement, 1);34 System.out.println(user);35 }36 @Test37 public void testSelectOne2() throws Exception { 这种方式在前面不需要添加38 Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");39 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);40 SqlSession sqlSession=sqlSessionFactory.openSession();41 String statement="quickFirst.selectUserOne";42 User user=sqlSession.selectOne(statement, 2);43 System.out.println(user);44 }45 }
二:插入数据
1.xml
1 23 INSERT INTO USERS(name,age) value(#{name},#{age});4
2.测试程序
1 /** 2 * 插入数据 3 */ 4 @Test 5 public void testInsert()throws Exception { 6 Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml"); 7 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); 8 SqlSession sqlSession=sqlSessionFactory.openSession(); 9 String statement="quickFirst.insertData";10 int insert=sqlSession.insert(statement, new User(-1,"KK",9));11 sqlSession.commit();12 System.out.println(insert);13 sqlSession.close();14 }
3.效果
打印出1,表示插入一条数据。
数据库:
三:删除数据
1.xml
1 23 DELETE FROM USERS where id=#{id};4
2.测试程序
1 /** 2 * 删除数据 3 */ 4 @Test 5 public void testDelete()throws Exception { 6 Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml"); 7 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); 8 SqlSession sqlSession=sqlSessionFactory.openSession(); 9 String statement="quickFirst.deleteData";10 int delete=sqlSession.delete(statement, 4);11 System.out.println(delete); 12 sqlSession.commit();13 sqlSession.close();14 }
3.效果
打印出1,表示删除一条数据。
数据库:
四:更新数据
1.xml
1 23 UPDATE USERS set name=#{name},age=#{age} where id=#{id};4
2.测试类
1 /** 2 * 更新数据 3 */ 4 @Test 5 public void testUpdate()throws Exception{ 6 Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml"); 7 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader); 8 SqlSession sqlSession=sqlSessionFactory.openSession(); 9 String statement="quickFirst.updateData";10 int update=sqlSession.update(statement, new User(3,"TT",99));11 sqlSession.commit();12 System.out.println(update);13 sqlSession.close();14 15 }
3.效果
打印1,表示更新一条数据。
数据库:
、
五:完整程序
1.xml
1 2 5 67 8 12 13 14 17 18 199 10 11 20 INSERT INTO USERS(name,age) value(#{name},#{age});21 22 23 2425 DELETE FROM USERS where id=#{id};26 27 28 2930 UPDATE USERS set name=#{name},age=#{age} where id=#{id};31 32
2.测试类
1 package com.cao.test1; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.io.Reader; 6 import java.sql.Connection; 7 8 import org.apache.ibatis.io.Resources; 9 import org.apache.ibatis.session.Configuration;10 import org.apache.ibatis.session.ExecutorType;11 import org.apache.ibatis.session.SqlSession;12 import org.apache.ibatis.session.SqlSessionFactory;13 import org.apache.ibatis.session.SqlSessionFactoryBuilder;14 import org.apache.ibatis.session.TransactionIsolationLevel;15 import org.junit.Test;16 17 import com.cao.bean.User;18 /**19 * 这是一个对比程序20 * 当然也是一个根据条件,进行单条查询的程序21 * @author dell22 *23 */24 public class mainTest {25 /**26 * 查询单条数据27 * 根据id进行查询28 * @throws Exception29 */30 @Test31 public void testSelectOne1() throws Exception {32 String resources="/com/cao/config/Configuration.xml"; //这种方式在前面需要加一个/33 InputStream is=mainTest.class.getResourceAsStream(resources);34 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(is);35 SqlSession sqlSession=sqlSessionFactory.openSession();36 String statement="quickFirst.selectUserOne";37 User user=sqlSession.selectOne(statement, 1);38 System.out.println(user);39 }40 @Test41 public void testSelectOne2() throws Exception { 这种方式在前面不需要添加42 Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");43 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);44 SqlSession sqlSession=sqlSessionFactory.openSession();45 String statement="quickFirst.selectUserOne";46 User user=sqlSession.selectOne(statement, 2);47 System.out.println(user);48 }49 /**50 * 插入数据51 */52 @Test53 public void testInsert()throws Exception {54 Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");55 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);56 SqlSession sqlSession=sqlSessionFactory.openSession();57 String statement="quickFirst.insertData";58 int insert=sqlSession.insert(statement, new User(-1,"KK",9));59 sqlSession.commit();60 System.out.println(insert);61 sqlSession.close();62 }63 /**64 * 删除数据65 */66 @Test67 public void testDelete()throws Exception {68 Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");69 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);70 SqlSession sqlSession=sqlSessionFactory.openSession();71 String statement="quickFirst.deleteData";72 int delete=sqlSession.delete(statement, 4);73 System.out.println(delete); 74 sqlSession.commit();75 sqlSession.close();76 }77 /**78 * 更新数据79 */80 @Test81 public void testUpdate()throws Exception{82 Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");83 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);84 SqlSession sqlSession=sqlSessionFactory.openSession();85 String statement="quickFirst.updateData";86 int update=sqlSession.update(statement, new User(3,"TT",99));87 sqlSession.commit();88 System.out.println(update);89 sqlSession.close();90 91 }92 93 }
六:基于注解的增删改查
1.目录
2.接口
1 package com.cao.test1; 2 3 import java.util.List; 4 5 import org.apache.ibatis.annotations.Delete; 6 import org.apache.ibatis.annotations.Insert; 7 import org.apache.ibatis.annotations.Select; 8 import org.apache.ibatis.annotations.Update; 9 10 import com.cao.bean.User;11 12 public interface UserMapper {13 @Insert("INSERT INTO USERS(name,age) value(#{name},#{age})")14 public int add(User user);15 16 @Delete("DELETE FROM USERS where id=#{id}")17 public int delete(int id);18 19 @Update("UPDATE USERS set name=#{name},age=#{age} where id=#{id}")20 public int update(User user);21 22 @Select("SELECT * From users where id = #{id}")23 public User selectById(int id);24 25 @Select("SELECT * From users")26 public Listselect();27 }
3.xml
重要的是需要将接口注册进去
1 2 3 45 6 18 197 178 109 11 1612 13 14 15 20 22 2321
4.测试类
1 package com.cao.test; 2 3 import java.io.IOException; 4 import java.io.Reader; 5 6 import org.apache.ibatis.io.Resources; 7 import org.apache.ibatis.session.SqlSession; 8 import org.apache.ibatis.session.SqlSessionFactory; 9 import org.apache.ibatis.session.SqlSessionFactoryBuilder;10 import org.junit.Test;11 12 import com.cao.bean.User;13 import com.cao.test1.UserMapper;14 15 public class MainTest {16 @Test17 public void test1() throws Exception {18 Reader reader=Resources.getResourceAsReader("com/cao/config/Configuration.xml");19 SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(reader);20 SqlSession sqlSession=sqlSessionFactory.openSession(true); //true后是自动提交21 UserMapper userMapper=sqlSession.getMapper(UserMapper.class);22 int add=userMapper.add(new User(-1,"TT",89));23 System.out.println(add);24 sqlSession.close();25 }26 }
5.效果
、