在这一个部分,主要进行增删改查的示例书写。
增删改查可以基于xml的,也可以基于注解的方式。
一:对单条数据的查询
1.目录结构
这个使得目录更加清晰
2.User.java
这个使用以前的user表。
因此,domain不需要改动。
3.配置文件
重要的参考部分是引用映射文件的部分
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 4 <configuration> 5 <environments default="development"> 6 <environment id="development"> 7 <transactionManager type="JDBC"> 8 <property name="" value=""/> 9 </transactionManager> 10 <dataSource type="UNPOOLED"> 11 <property name="driver" value="com.mysql.jdbc.Driver"/> 12 <property name="url" value="jdbc:mysql://127.0.0.1:3308/mybatis"/> 13 <property name="username" value="root"/> 14 <property name="password" value="123456"/> 15 </dataSource> 16 </environment> 17 </environments> 18 19 <mappers> 20 <mapper resource="com/cao/sql/config/users.xml"/> 21 </mappers> 22 23 </configuration>
4.映射文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 6 <mapper namespace="quickFirst"> 7 <resultMap type="com.cao.bean.User" id="User"> 8 <id column="ID" jdbcType="INTEGER" property="id"/> 9 <result column="NAME" jdbcType="VARCHAR" property="name"/> 10 <result column="AGE" jdbcType="INTEGER" property="age"/> 11 </resultMap> 12 <!-- 单条数据的查询,根据id查询 --> 13 <select id="selectUserOne" parameterType="int" resultMap="User"> 14 SELECT * From users where id = #{id}; 15 </select> 16 </mapper>
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 dell 18 * 19 */ 20 public class mainTest { 21 /** 22 * 查询单条数据 23 * 根据id进行查询 24 * @throws Exception 25 */ 26 @Test 27 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 @Test 37 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 <!-- 插入数据 --> 2 <insert id="insertData" parameterType="com.cao.bean.User"> 3 INSERT INTO USERS(name,age) value(#{name},#{age}); 4 </insert>
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 <!-- 删除数据 --> 2 <delete id="deleteData" parameterType="int"> 3 DELETE FROM USERS where id=#{id}; 4 </delete>
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 <!-- 更新数据 --> 2 <update id="updateData" parameterType="com.cao.bean.User"> 3 UPDATE USERS set name=#{name},age=#{age} where id=#{id}; 4 </update>
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 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 6 <mapper namespace="quickFirst"> 7 <resultMap type="com.cao.bean.User" id="User"> 8 <id column="ID" jdbcType="INTEGER" property="id"/> 9 <result column="NAME" jdbcType="VARCHAR" property="name"/> 10 <result column="AGE" jdbcType="INTEGER" property="age"/> 11 </resultMap> 12 13 <!-- 单条数据的查询,根据id查询 --> 14 <select id="selectUserOne" parameterType="int" resultMap="User"> 15 SELECT * From users where id = #{id}; 16 </select> 17 18 <!-- 插入数据 --> 19 <insert id="insertData" parameterType="com.cao.bean.User"> 20 INSERT INTO USERS(name,age) value(#{name},#{age}); 21 </insert> 22 23 <!-- 删除数据 --> 24 <delete id="deleteData" parameterType="int"> 25 DELETE FROM USERS where id=#{id}; 26 </delete> 27 28 <!-- 更新数据 --> 29 <update id="updateData" parameterType="com.cao.bean.User"> 30 UPDATE USERS set name=#{name},age=#{age} where id=#{id}; 31 </update> 32 </mapper>
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 dell 22 * 23 */ 24 public class mainTest { 25 /** 26 * 查询单条数据 27 * 根据id进行查询 28 * @throws Exception 29 */ 30 @Test 31 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 @Test 41 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 @Test 53 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 @Test 67 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 @Test 81 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 List<User> select(); 27 }
3.xml
重要的是需要将接口注册进去
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> 3 4 <configuration> 5 <environments default="development"> 6 <environment id="development"> 7 <transactionManager type="JDBC"> 8 <property name="" value=""/> 9 </transactionManager> 10 <dataSource type="UNPOOLED"> 11 <property name="driver" value="com.mysql.jdbc.Driver"/> 12 <property name="url" value="jdbc:mysql://127.0.0.1:3308/mybatis"/> 13 <property name="username" value="root"/> 14 <property name="password" value="123456"/> 15 </dataSource> 16 </environment> 17 </environments> 18 19 <mappers> 20 <mapper class="com.cao.test1.UserMapper"/> 21 </mappers> 22 23 </configuration>
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 @Test 17 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.效果
、