二:mybatis的传统的增,删,改,查实现

3.2.1、保存用户

	<!--insert标签定义insert语句
		id属性 定义一个唯一的标识
		parameterType 定义参数的类型
		#{lastName} 占位符 ->

<insert id="saveUser" parameterType="com.atguigu.mybatis.pojo.User">
	insert into t_user(`last_name`,`sex`) values(#{lastName},#{sex})
</insert>

3.2.2、更新用户
update标签定义update语句
id属性定义一个唯一的标识
parameterType参数的类型

<update id="updateUser" parameterType="com.atguigu.mybatis.pojo.User">
	update t_user set last_name = #{lastName} , sex = #{sex} where id = #{id}
</update>

3.2.3、根据id删除用户
delete标签定义delete 语句
id 属性定义一个唯一的标识
parameterType参数的类型

<delete id="deleteUserById" parameterType="int">
	delete from t_user where id = #{id}
</delete>

3.2.4、根据id搜索用户

	select标签可以用来配置(定义)一个select语句
		id 属性是给 sql语句定义一个唯一的标识(stamtentID)
		resultType属性是这个查询语句返回的数据类型
		
	#{参数名/属性名}
 
<select id="queryUserById" parameterType="int" resultType="com.atguigu.mybatis.pojo.User">
	select id,last_name lastName,sex from t_user where id = #{id}
</select>

3.2.5、搜索全部用户

	select 标签定义select语句
	id 属性定义一个唯一的标识
	resultType 定义返回的数据类型(查询的每一行记录对应的Bean对象)

<select id="queryUsers" resultType="com.atguigu.mybatis.pojo.User">
	select id,last_name lastName,sex from t_user
</select>

3.3、实现UserDao接口
public interface UserDao {

public User queryUserById(int id);

public List<User> queryUsers();

public int saveUser(User user);

public int updateUser(User user);

public int deleteUserById(int id);

}

UserDaoImpl的实现

public class UserDaoImpl implements UserDao {

private SqlSessionFactory sqlSessionFactory;

public UserDaoImpl(SqlSessionFactory sqlSessionFactory) {
	super();
	this.sqlSessionFactory = sqlSessionFactory;
}

public UserDaoImpl() {
	super();
	// TODO Auto-generated constructor stub
}

public SqlSessionFactory getSqlSessionFactory() {
	return sqlSessionFactory;
}

public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
	this.sqlSessionFactory = sqlSessionFactory;
}

@Override
public User queryUserById(int id) {
	SqlSession session = sqlSessionFactory.openSession();
	try {
		return session.selectOne("com.atguigu.mybatis.pojo.User.queryUserById", id);
	} finally {
		session.close();
	}
}

@Override
public List<User> queryUsers() {
	SqlSession session = sqlSessionFactory.openSession();
	try {
		return session.selectList("com.atguigu.mybatis.pojo.User.queryUsers");
	} finally {
		session.close();
	}
}

@Override
public int saveUser(User user) {
	SqlSession session = sqlSessionFactory.openSession();
	try {
		int updateCount = session.insert("com.atguigu.mybatis.pojo.User.saveUser", user);
		session.commit();
		return updateCount;
	} finally {
		session.close();
	}
}

@Override
public int updateUser(User user) {
	SqlSession session = sqlSessionFactory.openSession();
	try {
		int updateCount = session.update("com.atguigu.mybatis.pojo.User.updateUser", user);
		session.commit();
		return updateCount;
	} finally {
		session.close();
	}
}

@Override
public int deleteUserById(int id) {
	SqlSession session = sqlSessionFactory.openSession();
	try {
		int updateCount = session.delete("com.atguigu.mybatis.pojo.User.deleteUserById", id);
		session.commit();
		return updateCount;
	} finally {
		session.close();
	}
}

}

3.4、编写UserDao测试
public class UserDaoTest {

private static SqlSessionFactory sqlSessionFactory;
private static UserDao userDao;

@BeforeClass
public static void setUpBeforeClass() throws Exception {
	sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources
			.getResourceAsStream("mybatis-config.xml"));
	userDao = new UserDaoImpl(sqlSessionFactory);
}

@Test
public void testQueryUserById() {
	System.out.println(userDao.queryUserById(2));
}

@Test
public void testQueryUsers() {
	System.out.println(userDao.queryUsers());
}

@Test
public void testSaveUser() {
	User user = new User(0, "admin168", 1);
	System.out.println(userDao.saveUser(user));
	System.out.println( user );
}

@Test
public void testUpdateUser() {
	System.out.println(userDao.updateUser(new User(2, "国哥很帅!", 0)));
}

@Test
public void testDeleteUserById() {
	System.out.println( userDao.deleteUserById(2) );
}

}

3.5、插入记录并返回主键

	insert标签定义insert语句
		id属性 定义一个唯一的标识
		parameterType 定义参数的类型
		#{lastName} 占位符
		useGeneratedKeys="true" 表示返回生成的主键
		keyProperty="id" 把返回的主键值注入到bean对象的哪个属性中

<insert id="saveUser" parameterType="com.atguigu.mybatis.pojo.User" useGeneratedKeys="true" keyProperty="id">
	insert into t_user(`last_name`,`sex`) values(#{lastName},#{sex})
</insert>

3.6、< selectKey > 标签的使用
SELECT LAST_INSERT_ID()

MySql数据库下使用<selectKey标签

<insert id="saveUser" parameterType="com.atguigu.mybatis.pojo.User">
	<!-- 
		selectKey标签专门用来在执行sql语句【之前或之后】执行一些查询操作。
			order属性设置selectKey中的语句执行的顺序
				BEFORE	表示执行sql语句之前先执行selectkey中的语句
				AFTER	表示先执行sql语句之后,再执行selectKey中的语句
			keyProperty="id" 告诉mybatis查询回来的主键设置到哪个属性中
			resultType="int" 告诉mybatis查询返回的数据类型
	 -->
	<selectKey order="AFTER" keyProperty="id" resultType="int">
		select last_insert_id()
	</selectKey>
	insert into t_user(`last_name`,`sex`) values(#{lastName},#{sex})
</insert>

selectKey 返回Oracle的序列自增主键

在这里插入代码片
<selectKey order="BEFORE" resultType="int" keyProperty="id"> 
     select 序列名.nextval as id from dual 
</selectKey>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值