mybatis的傳統的增,刪,改,查實現
阿新 • • 發佈:2018-12-14
3.2.1、儲存使用者
<insert id="saveUser" parameterType="com.atguigu.mybatis.pojo.User">
insert into t_user(`last_name`,`sex`) values(#{lastName},#{sex})
</insert>
3.2.2、更新使用者
<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 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 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 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、 標籤的使用 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的序列自增主鍵 select 序列名.nextval as id from dual