Mybatis_06_Mybatis_crud增删改查

Mybatis_crud

   * 一般情况下连接数据库的信息最好单独写在配置文件中,这样用户修改起来方便。

      - 在类路径下新建一个 jdbc.properties文件,配置连接数据库所需信息
          jdbc.driver=com.mysql.cj.jdbc.Driver
          jdbc.url=jdbc:mysql://127.0.0.1:3306/mydb?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
          jdbc.username=root
          jdbc.password=123456


      - 然后在Mybatis的核心配置文件中引入该配置文件
          <!--引入JDBC配置文件-->
              <properties resource="jdbc.properties">

              </properties>
   
       - 然后在属性值里写 ${配置文件中值得key}   <property name="driver" value="${jdbc.driver}"/>

                 <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>


   * 两个配置文件的作用 
    
          - mybatis-3-config.dtd     Mybatis核心配置文件XML的代码提示

          - mybatis-3-mapper.dtd    SqlMapper sql配置文件XML的代码提示
 
          - 这两个文件有网络的情况下是自动配置的,如果没有网络的话需要下载以后再IDEA里配置一下。



   * Sql配置文件中的各种属性的作用
   
        - id属性:  id具有唯一性,代表了本条sql语句,id用来传给Java程序,就代表了本条SQL语句

        - resultType属性:  告诉Mybatis所查询出的数据最终查询出数据后所要封装成的类型,要写全类名。

        - AS关键字: 实体类的属性名和数据库表中的字段名是怎么匹配的呢?  需要通过SQL语句的 AS关键字,给数据库中字段名取别名,使数据库中的字段名和实体类中的属性名相一致
    
        - Mybatis中的Sql语句占位符不能使用问号,必须使用 #{} , 大括号中写javabean的属性名
 
        - 当一个Sql语句的占位符只有一个的时候占位符 #{可以随意编写},Mybatis自动赋值。
       
        - parameterType属性是用来给SQL语句的占位符传值的,告诉Mybatis所要传给占位符的值是什么类型的数据
   
        - parameterType=“简单类型”的时候,parameterType属性可以省略不写。
 
        - javabean实体类 给占位符传值的时候,程序员需要告诉Mybatis javabean的哪个属性传给哪个占位符,这就要保证属性名和数据库表中的列名保持一致。

       
   
     


  * 插入数据(insert)
      
      - Sql映射文件 SqlMapper.xml
     
             <!--插入数据-->

            <insert id="addDataForUserSql"    parameterType="com.shige.mybatis.User">

                    insert into t_userinfo(username,email,userpwd)values(#{userName},#{userEmail},#{userPwd});

            </insert>

     
      - java程序

            //insert操作,第一个参数是sql语句id,第二个参数是Object类型的,所需要插入数据的类型。
             int count = sqlSession.insert("addDataForUserSql",user); //返回值代表影响数据库表几行数据
             System.out.println(count);


   * 插入更新修改(updata)
     
          - Sql映射文件 SqlMapper.xml

           <!--修改数据-->

               <update id="updateDataForUserSql"    parameterType="com.shige.mybatis.User">

                            update t_userinfo set userpwd=#{userPwd} where username=#{userName};
               </update>


         - java程序
 
            //update语句
            int count = sqlSession.update("updateDataForUserSql", user);
            System.out.println(count);



  * 查询数据(select)

      - Sql映射文件 SqlMapper.xml

          <!--查询数据-->

                <select id="getDataForUserSql" resultType="com.shige.mybatis.User" parameterType="java.lang.String" >

                    select username,email,userpwd from t_userinfo where username=#{userName};

                </select>



          <!--查询所有数据-->

                <select id="getDataForAllUserSql" resultType="com.shige.mybatis.User">

                    select * from t_userinfo;

                </select>



     - java程序

            //select 语句 查询一条数据
            Object userResult = sqlSession.selectOne("getDataForUserSql","Morty");
            System.out.println(userResult);
           


         // select 查询所有数据
            List<User> userList = sqlSession.selectList("getDataForAllUserSql");

            for(User user1:userList){

                System.out.println(user1);
            }
         



  * 删除数据(delete)

     - Sql映射文件 SqlMapper.xml


               <!--删除数据-->
              <delete id="delDataForUserSql"  parameterType="java.lang.String">

                  delete from t_userinfo where username=#{username};

              </delete>




    - java程序
   
             int count = sqlSession.delete("delDataForUserSql","Morty"); // 直接传参
             System.out.println(count);
上一篇:深入理解JVM:5年crud经验,90%的人看完都说好


下一篇:Springboot使用Mybatis实现完整的 增删改查 CRUD和分页