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>