mybatis学习

mybatis介绍:

mybatis 支持普通的sql查询,存储过程,高级映射的优秀持久层框架

特点:

消除了jdbc代码和手工设置相关的参数和对结果集的封装

使用方式:

注解和xml的方式

代码实现:

准备数据表:

    CREATE TABLE `user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT,
  `user_name` varchar(20) DEFAULT NULL,
  `user_tel` varchar(20) DEFAULT NULL,
  `user_account` varchar(20) DEFAULT NULL,
  `user_level` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1




Create Table

CREATE TABLE `orderhis` (
  `order_id` int(11) NOT NULL AUTO_INCREMENT,
  `order_good` varchar(20) DEFAULT NULL,
  `order_user_id` int(11) DEFAULT NULL,
  `order_is_pay` varchar(20) DEFAULT NULL,
  `order_good_num` int(11) DEFAULT NULL,
  `order_type` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`order_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1

数据库连接配置相关:

    <?xml version="1.0" enc
oding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

<!-- 这是Mybatis的配置文件, 这个配置文件将会影响到Mybatis的属性。 -->

<configuration>
  <!-- 配置实体类的别名,配置实体类别名的目的是为了在引用实体类时可以使用实体类的别名来代替实体类,达到简写的目的 -->
    <typeAliases>
        <typeAlias alias="User" type="com.mvc.model.User" />
        <typeAlias  alias ="Order" type="com.mvc.model.Order"/>
        <!-- 为com.zhao.entity包下的所有实体类配置别名,MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名 比如com.zhao.entity.Student这个实体类的别名就会被设置成Student 
            <package name="com.mvc.model"/> -->
    </typeAliases>


<environments default="develop">

<environment id="develop">
    <transactionManager type="JDBC"/>
    <dataSource type="POOLED">
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/mvctest"/>
        <property name="username" value="root"/>
        <property name="password" value="root"/>
    </dataSource>
</environment>
</environments>



    <!-- 映射配置文件的。 -->
    <mappers>
        <mapper resource="mybatis/user-mapper.xml"/>
        <mapper resource="mybatis/order-mapper.xml"/>
        <mapper class="com.mvc.model.User"/>
    </mappers>
</configuration>

增删改查代码的实现

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="mybatis.user-mapper">


  <resultMap id="userResultMap" type="com.mvc.model.User" >
    <result column="user_id" property="userId" jdbcType="INTEGER" />
    <result column="user_name" property="userName" jdbcType="VARCHAR" />
    <result column="user_tel" property="userTel" jdbcType="VARCHAR" />
    <result column="user_account" property="userAccount" jdbcType="VARCHAR" />
    <result column="user_level" property="userLevel" jdbcType="VARCHAR"/>
  </resultMap>



  <select id="getUser" parameterType="int" resultType="com.mvc.model.User">
    select user_id userId,user_name userName,user_tel userTel,user_account userAccount,user_level userLevel from user where user_id=#{userid}
  </select>


  <select id="getUserByMap" resultMap="userResultMap" parameterType="int">
    select *  from user

  </select>


  <delete id="deleteUser" parameterType="int">
    delete from user where user_id=#{userid}
  </delete>

  <select id="getUserList" resultType="com.mvc.model.User">
        select * from user
  </select>


  <insert id="insertUser"  parameterType="java.util.List">
    INSERT INTO USER(user_id,user_name,user_tel,user_account,user_level) 
    VALUES
     <foreach collection="userlist" item="item" index="index" separator=",">
           (#{item.userId},#{item.userName},#{item.userTel},#{item.userAccount},#{item.userLevel})
     </foreach>


  </insert>


  <insert id="insertOneUser" parameterType="com.mvc.model.User" >
        INSERT INTO USER(user_id,user_name,user_tel,user_account,user_level) 
        VALUES
        (#{userId},#{userName},#{userTel},#{userAccount},#{userLevel})

  </insert>


  <update id="updateUser" parameterType="User">

    update user 
    set user_name=#{userName},user_tel=#{userTel}, user_account=#{userAccount},user_level=#{userLevel}
    where user_id=#{userId}

  </update>


 <!--  <update>
        update user set user_name="#{name}" where id="#{id}"

  </update> -->


  <!-- 
  <insert id="addDemo" parameterType="com.dh.demo.model.Demo"  >
    insert into demo (TYPE_CODE, TYPE_NAME, IN_CODE
      )
    values (#{typeCode,jdbcType=VARCHAR}, #{typeName,jdbcType=VARCHAR}, #{inCode,jdbcType=VARCHAR}
      )
  </insert>
  <insert id="insertSelective" parameterType="com.dh.demo.model.Demo" >
    insert into NEWS_TYPE
    <trim prefix="(" suffix=")" suffixOverrides="," >
      <if test="typeCode != null" >
        TYPE_CODE,
      </if>
      <if test="typeName != null" >
        TYPE_NAME,
      </if>
      <if test="inCode != null" >
        IN_CODE,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides="," >
      <if test="typeCode != null" >
        #{typeCode,jdbcType=VARCHAR},
      </if>
      <if test="typeName != null" >
        #{typeName,jdbcType=VARCHAR},
      </if>
      <if test="inCode != null" >
        #{inCode,jdbcType=VARCHAR},
      </if>
    </trim>
  </insert>

   -->
</mapper>

写相关junit测试方法

package com.mvc.test;

import java.io.IOException;
import java.io.Reader;
import java.util.ArrayList;
import java.util.List;

import org.activiti.engine.impl.interceptor.SessionFactory;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import com.google.code.yanf4j.core.Session;
import com.mvc.model.Order;
import com.mvc.model.User;

public class MyBatisTest {




    public static SqlSessionFactory getSession(){

        String recource= "mybatis/mybatis-conf.xml";

        Reader reader =null;
        try {
            reader = Resources.getResourceAsReader(recource);
        } catch (IOException e) {
            e.printStackTrace();
        }

        SqlSessionFactory  sqlsessionfactory = new SqlSessionFactoryBuilder().build(reader);


        return sqlsessionfactory;

    }


    // query
    public User getUserById(Integer id){

        String statement = "mybatis.user-mapper.getUser"; 

        User user=  getSession().openSession().selectOne(statement,4);

        return user;
    }


    public void addUser(User user){

        user.setUserId(5);
        user.setUserName("jiang");
        user.setUserAccount(11223);
        user.setUserTel("4556");
        user.setUserTel("48");

        List<User> userlist =new ArrayList<User>();
        userlist.add(user);

        String statement= conMapper("insertUser");

        //getSession().insert(statement, userlist);


    }





    @Test
    public void addOneUser(){

        User user = new User();

        user.setUserId(5);
        user.setUserName("jiang");
        user.setUserAccount(11223);
        user.setUserTel("4556");
        user.setUserLevel(63);

        System.out.println(conMapper("insertOneUser"));

        String statement= conMapper("insertOneUser");

        System.out.println(user.toString());


        SqlSession session =  getSession().openSession();

        int result = session.insert(statement, user);
        session.commit();

        System.out.println("result:"+result);


    }


    @Test
    public void udpateUser(){

        User user = new User(5,"jiang","858222",222,33);

        String statement= conMapper("updateUser");

        SqlSession session =  getSession().openSession();


        int result = session.update(statement, user);

        session.commit();

        System.out.println(result);

    }


    @Test
    public void getUserList(){

        String statement= conMapper("getUserList");

        SqlSession session =  getSession().openSession(true);


        List<User> list = session.selectList(statement);

        System.out.println(list.size());

        session.close();

        System.out.println(list.toString());


    }


    @Test
    public void getUserById(){


        String statement = conMapper("getUser");
        SqlSession session  = getSession().openSession();

        User user = session.selectOne(statement, 4);

        System.out.println(user.toString());


    }


    @Test
    public void getUserByMap(){

        String statement = conMapper("getUserByMap");
        SqlSession session  = getSession().openSession();
        User user = session.selectOne(statement, 4);
        System.out.println(user.toString());


    }

    @Test
    public void getOrderById(){
        String statement = orderConMapper("getOrderById");
        SqlSession session = getSession().openSession();
        Order order = session.selectOne(statement,4);
        System.out.println(order.toString());
    }



    @Test
    public void getOrderById1(){
        String statement = orderConMapper("getOrder");
        SqlSession session = getSession().openSession();
        Order order = session.selectOne(statement,4);
        System.out.println(order.toString());
    }



    public static  String conMapper(String str){

        String strpre = "mybatis.user-mapper.";

        return strpre+str;

    }

    public static  String orderConMapper(String str){

        String strpre = "mybatis.order-mapper.";

        return strpre+str;

    }



}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值