ssm之路(2)处理查询结果

接着上一篇做笔记:

1。#{}表示占位符,{}中的参数名可以任意

    $ {}值表示拼接符,传入简单类型,{}里只能使用值,使用$ {}拼接SQL,可能会引起SQL语句注入。

2. 处理单条记录,用簿对象,处理一张表中的多条记录,也可用预定对象(对象的注入属性要与映射到数据表中字段的属性一一对应,操作才会成功)

根据ID查(单条记录):

mapper中代码:

 <select id="findUserById" parameterType="int" resultType="com.lmj.ssm.Book">
       select * from book where book_id=#{id}
</select>

servlet中代码:

Book book=sqlSession.selectOne("test.findUserByName",1004);
System.out.println(book);

根据名字查(多条记录):

mapper中代码:

<select id="findUserByName" parameterType="java.lang.String" resultType="com.lmj.ssm.Book">
     select * from book where name like '%${value}%'
</select>

servlet中代码:

List<Book> booklist=sqlSession.selectList("test.findUserByName","java");
System.out.println(booklist);

2.插入操作

映射文件:

<insert id="insertBook" parameterType="com.lmj.ssm.Book">
     insert into book(name,number) value(#{name},#{number})
</insert>

JUnit的中的测试代码:

public class Test {
    @org.junit.Test
    public void findUaerByIdTest() throws Exception{
        String resource="mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession=sqlSessionFactory.openSession();
        Book book=new Book();
        book.setName("java入门");
        book.setNumber(123);
        sqlSession.insert("test.insertBook",book);
        sqlSession.commit();
        System.out.println("ok");
        sqlSession.close();
    }
}

获取插入的自增主键,返回到本书中(即将查到的ID值赋给图书实体类中的与数据库ID映射的属性,BOOKID,所以keypropety也要设置成BOOKID,才能成功赋值),通过MySQL的自带的select last_insert_id()语句获取自增的主键

keyproperty:将查到的主键设置到parameterType(输入参数类型)的属性中,顺序:表示select last_insert_id()的执行顺序,在执行插入后执行select last_insert_id()语句

代码如下:

映射器中:

<insert id="insertBook" parameterType="com.lmj.ssm.Book">
		<selectKey keyProperty="bookId" order="AFTER" resultType="java.lang.Integer">
			select last_insert_id()
		</selectKey>
	insert into book(name,number) value(#{name},#{number})
</insert>

测试代码中:

public class Test {
    @org.junit.Test
    public void findUaerByIdTest() throws Exception{
        String resource="mybatis-config.xml";
        InputStream inputStream= Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession=sqlSessionFactory.openSession();
        Book book=new Book();
        book.setName("java入门");
        book.setNumber(123);
        sqlSession.insert("test.insertBook",book);
        sqlSession.commit();
        System.out.println(book.getBookId());
        System.out.println("ok");
        sqlSession.close();
    }

后续删除更新代码类似,注意的是,写了sqlSession.insert(XXX),更新(),删除(),不要忘了加上sqlSession.commit()语句;

 

后续可通过SqlSessionFactoryBuilder对象创建会话工厂的SqlSessionFactory,把SqlSessionFactoryBuilder对象当成工具类即可,当需要创建SqlSessionFactory的时候,只需要新的一次SqlSessionFactoryBuilder对象即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值