• 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.效果

      

      

  • 相关阅读:
    [Functional Programming] Running though a serial number prediction functions for tagging, pairing the result into object
    [Angular] Communicate with Angular Elements using Inputs and Events
    [Tools] Target specific browsers with babel-preset-env and the babel pollyfill (browserslist)
    [Webpack] Externalize Dependencies to be Loaded via CDN with webpack
    [Webpack] Analyze a Production JavaScript Bundle with webpack-bundle-analyzer
    [Algorithm] Largest sum of non-adjacent numbers
    [Angular] Use ngx-build-plus to compile Angular Elements
    [Algorithm] Search for matching words
    Is life always hard?
    poj3177 Redundant Paths
  • 原文地址:https://www.cnblogs.com/juncaoit/p/8094653.html
Copyright © 2020-2023  润新知