mybatis中的增删改查操作

在这一个部分,主要进行增删改查的示例书写。

增删改查可以基于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.效果

  

  

原文地址:https://www.cnblogs.com/juncaoit/p/8094653.html