Mybatis(一)增删改查、各种类型、#和$、sql语句符号

前言:Mybaits是一个ORM(对象关系映射)框架,将对象和数据表之间一一映射,使我们可以像操作对象一样操作数据。
因为本篇涉及插入数据,所以在上一篇的基础上对actor实体类增加两个构造方法
同时为了去除那些冗余的操作,将打开session的代码封装到一个方法中

 	public actor() {
    }

    public actor(Integer actor_id, String first_name, String last_name, Date last_update) {
        this.actor_id = actor_id;
        this.first_name = first_name;
        this.last_name = last_name;
        this.last_update = last_update;
    }
private static SqlSession load(){
        String xml="config.xml";
        InputStream is=SelectActor.class.getClassLoader().getResourceAsStream(xml);
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
        //创建能执行映射文件中sql的sqlSession
        SqlSession session = sessionFactory.openSession();
        return session;
    }

一、增删改查

以下有些地方可能不太理解,如<#{xxx}等,这是小于符号,以及#取值, parameterType=“int” resultType="dao.actor"这些是输入值类型,返回值类型,文后会有讲解

select

mapper文件

<select id="actorselect" parameterType="int" resultType="dao.actor">

        select * from actor where actor_id &lt;#{xxx}
    </select>
    <select id="selectOne" parameterType="int" resultType="dao.actor">
        select * from actor where actor_id=#{x}
    </select>

java代码

 @Test
    public void selectOne(){
        //sql语句映射,需要映射文件名加sql语句id值
        String statement="mapper.map.selectOne";
        SqlSession session=load();
        actor name=session.selectOne(statement,3);
        System.out.println(name);
    }
    @Test
    public void actorSelect(){
        //sql语句映射,需要映射文件名加sql语句id值
        String statement="mapper.map.actorselect";
        SqlSession session=load();
        List<actor> names= session.selectList(statement,9);
        System.out.println(names.get(2));
    }

语句二中查询值用列表存储了,因为此时在mapper中设置了小于号,得到了一个范围的数据,除了列表还有map类型

update

mapper
这里取值用了$符号,在处理简单类型时使用$符号,那么值必须为value,而使用#时可以是任意值

<update id="actorupdate" parameterType="int">
        update actor set first_name="Jam" where actor_id=${value}
    </update>

java代码
JDBC手动提交事务

@Test
    public void actorUpdate(){
        String statement="mapper.map.actorupdate";
        SqlSession sqlSession=load();
        int count=sqlSession.update(statement,3);
        sqlSession.commit();
        System.out.println("有"+count+"行受到影响");
    }

delete

mapper

<delete id="actorDelete" parameterType="int">
        delete from actor where actor_id=#{x}
    </delete>

java代码

@Test
    public void actorDelete(){
        String statement="mapper.map.actorDelete";
        SqlSession sqlSession=load();
        int count=sqlSession.delete(statement,3);
        sqlSession.commit();
        System.out.println("有"+count+"行受到影响");
    }

insert

mapper
在处理引用类型时,必须使用字段名

 <insert id="actorInsert" parameterType="dao.actor">
        insert into actor(actor_id,first_name,last_name,last_update) 
        values (#{actor_id},#{first_name},#{last_name},#{last_update})
    </insert>

java代码
这里我们new了有个对象,吧这个对象插入了表中,所以actor中的两个构造方法是必须的

 @Test
    public void actorInsert(){
        String statement="mapper.map.actorInsert";
        SqlSession sqlSession=load();
       actor name=new actor(3,"曹","jim",new Date());
        int count=sqlSession.insert(statement,name);
        sqlSession.commit();
        System.out.println("有"+count+"行受到影响");
    }

二、映射类型

parameterType="int" resultType="dao.actor" resulultMap=""

这里由两个参数,输入类型,返回类型,在Mybatis中都要写全名,但是也提供了别名,比如这里的int其实就是一个别名,是Intager的别名,mybitis已经把简单类型起好了别名,但是dao.actor这就是全面,没有在confnig,xml中设置别名的都要写全称,具体属性在文末

三、#和$的区别

两者在注入上有区别,以及取值用了$符号,在处理简单类型时使用,那么值必须为value,而使用#时可以是任意值
在这里插入图片描述

四、sql语句符号

因为sql语句写在映射文件中,而映射文件是xml文件,所以要满足xml约束

     &            &amp;

     <            &lt;

     >            &gt;

     "             &quot;

     '              &apos
    小于等于   	 a<=b                 a &lt;= b      a <![CDATA[<= ]]>b

	大于等于    		a>=b                 a &gt;= b      a <![CDATA[>= ]]>b
	
	不等于        	a!=ba <![CDATA[ <> ]]>b      a <![CDATA[!= ]]>b

如下语句

<select id="actorname" parameterType="int" resultType="dao.actor">

        select * from actor where actor_id &lt;#{xxx}
    </select>

此时多个数据需要容器

 List<actor> names= session.selectList(statement,18);

文档

mybatis官方文档

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值