mybatis增删改应用(三)

    上篇博客我们进行了简单查询,在mybatis一、二的基础上,我们来实现模糊查询和增删改的简单使用。

    模糊查询:user.xml中的sql语句

	<select id="findUserByName" parameterType="java.lang.String" resultType="cn.itcast.mybatis.po.User">
		SELECT * FROM USER WHERE username LIKE '%${value}%'
	</select>
    详解:这里我们根据用户名称查询用户信息,可能返回多条记录。resultType:指定的是单条记录所映射的java对象类型。${}:表示拼接sql串,将接收到的参数内容不加任何修饰的拼接在SQL中。需要注意的是使用${}拼接sql,有引起sql注入的风险。${value}接收输入参数的内容,如果传入类型是简单类型,${}中只能使用valye。

    src的first包中mybatisfirst.java类添加测试程序如下:

@Test
public void findUserByNameTest() throws IOException {
	//mybatis配置文件
	String resource = "SqlMapConfig.xml";
	//得到配置文件流
	InputStream inputStream = Resources.getResourceAsStream(resource);
	//创建会话工厂,传入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
	.build(inputStream);
       //通过工厂得到sqlsession
SqlSession sqlSession = sqlSessionFactory.openSession();
 //list中的user和映射文件中resultType所指定的类型一致
List<User> list = sqlSession.selectList("test.findUserByName", "小明");
System.out.println(list);
sqlSession.close();

}


    添加用户:user.xml中添加用户的sql

	<insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">
	   insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
        </insert>
    详解:parameterType指定输入参数的类型是pojo。

    mybatisfirst中添加测试代码:

// 添加添加用户实体
	@Test
	public void insertUserTest() throws IOException {
		// mybatis配置文件
		String resource = "SqlMapConfig.xml";
		// 得到配置文件流
		InputStream inputStream = Resources.getResourceAsStream(resource);

	//创建会话工厂,传入mybatis的配置文件信息
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
		.build(inputStream);

	// 通过工程得到SqlSession
	SqlSession sqlSession = sqlSessionFactory.openSession();
	// 插入用户对象
	User user = new User();
	user.setUsername("王小军");
	user.setBirthday(new Date());
	user.setSex("1");
	user.setAddress("河北");
	//list中的user和映射文件中resulttype所指定的类型一致
	sqlSession.insert("test.insertUser", user);

	//提交事务
	sqlSession.commit();

	// 关闭会话
	sqlSession.close();

	}


    删除用户:user.xml中配置删除用户的sql

<delete id="deleteUser" parameterType="java.lang.Integer">
	delete from user where id=#{id}
</delete>

    mybatisfirst中添加测试代码:

// 删除用户
@Test
public void deleteUserTest() throws IOException {
	// mybatis配置文件
	String resource = "SqlMapConfig.xml";
	// 得到配置文件流
	InputStream inputStream = Resources.getResourceAsStream(resource);

	//创建会话工厂,传入mybatis的配置文件信息
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
		.build(inputStream);

	// 通过工厂得到SqlSession
	SqlSession sqlSession = sqlSessionFactory.openSession();

	// 传入id删除用户
	sqlSession.delete("test.deleteUser", 39);

	// 提交事务
	sqlSession.commit();

	// 关闭会话
	sqlSession.close();

}


    更新用户:user.xml中添加更新用户的sql

<update id="updateUser" parameterType="cn.itcast.mybatis.po.User">
	update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} 
	 where id=#{id}
</update>
    详解:parameterType指定user对象,包括id和更新信息,注意,id必须存在#{id}:从输入user对象中获取id属性值

    mybatisfirst中测试代码:

// 更新用户信息
	@Test
	public void updateUserTest() throws IOException {
		// mybatis配置文件
		String resource = "SqlMapConfig.xml";
		// 得到配置文件流
		InputStream inputStream = Resources.getResourceAsStream(resource);

	// 创建会话工厂,传入mybatis的配置文件信息
	SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder()
		.build(inputStream);

	// 通过工厂得到SqlSession
	SqlSession sqlSession = sqlSessionFactory.openSession();
	// 更新用户信息
	
	User user = new User();
	//必须设置id
	user.setId(41);
	user.setUsername("王大军");
	user.setBirthday(new Date());
	user.setSex("2");
	user.setAddress("河北");

	sqlSession.update("test.updateUser", user);
	
	// 提高事务
	sqlSession.commit();

	// 关闭会话
	sqlSession.close();

	}

    下面我们对一些常用的属性进行总结归纳: 

 1. parameterType

在映射文件中通过parameterType指定输入 参数的类型。
2. resultType
在映射文件中通过resultType指定输出结果的类型。
3. #{}和${}
#{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。
如果接收简单类型,#{}中可以写成value或其它名称。
#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。
${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。
${}接收输入参数,类型可以是简单类型,pojo、hashmap。
如果接收简单类型,${}中只能写成value。
${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。
4. selectOne和selectList
selectOne表示查询出一条记录进行映射。如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对象)。
selectList表示查询出一个列表(多条记录)进行映射。如果使用selectList查询多条记录,不能使用selectOne。







    



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值