本文介绍的是mybatis3的使用,针对使用mybatis3作为持久层框架的入门学习。下面具体讲解:
mybatis需要程序员手动建表,用于测试的建表语句如下:
--oracle10g
CREATE TABLE user_tbl (
id int PRIMARY KEY ,
name varchar2(20),
age int,
sex varchar2(5),
password varchar2(20)
)
create sequence user_seq;
INSERT INTO user_tbl VALUES (1, 'zs',18, '张三', 'zs');
连接数据库的工具类:
package util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
/**
* 连接数据库的工具类
* @author Jzl
*
*/
public class MybatisUtil {
private static SqlSessionFactory sessionFactory;
private SqlSession session;
static {
String resource = "mybatis3-config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
e.printStackTrace();
}
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
public static SqlSessionFactory getSqlsessionfactory() {
return sessionFactory;
}
public static SqlSession getSession() {
return sessionFactory.openSession(false);
}
public void closeSession(SqlSession session) {
if (session != null) {
session.close();
session = null;
}
}
}
UserDao,用于实现对User表的CRUD操作:
package dao;
import java.util.List;
import entity.User;
public interface UserDao {
public List<User> getUserByName(String name);
public List<User> getAllUser();
public User getUser(String name);
public void insertUser(User user);
public void updateUser(User user);
public void deleteUser(int id);
}
不同于hibernate,mybatis映射文件(这里是UserDao.xml)映射的是Dao层的方法,用于将Dao层的方法与具体的sql语句绑定。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="dao.UserDao">
<select id="getAllUser" resultType="entity.User">
select * from user_tbl
</select>
<select id="getUserByName" parameterType="String" resultType="entity.User">
select * from user_tbl
where name like #{name}
</select>
<select id="getUser" parameterType="String" resultType="entity.User">
select * from user_tbl where
name=#{name}
</select>
<insert id="insertUser" parameterType="entity.User">
<selectKey resultType="int" order="BEFORE" keyProperty="id">
select user_seq.nextval from dual
</selectKey>
insert into user_tbl (id,name,age,sex,password)
values
(#{id},#{name},#{age},#{sex},#{password})
</insert>
<update id="updateUser" parameterType="entity.User">
update user_tbl set name = #{name},age =
#{age},
sex = #{sex},password = #{password} where id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
delete from user_tbl where id = #{id}
</delete>
</mapper>
实体类User如下:
package entity;
public class User {
private int id;
private String name;
private int age;
private String sex;
private String password;
public User() {
System.out.println("--调用无参数构造方法--");
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
最后就可以测试了,测试类TestUser如下:
package test;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import util.MybatisUtil;
import dao.UserDao;
import entity.User;
public class TestUser {
public void testGetByName() {
SqlSession session = MybatisUtil.getSession();
List<User> users = session.selectList("getUserByName", "%s%");
for (User user : users) {
System.out.println(user.getId() + "==" + user.getName());
}
session.commit();
session.close();
}
public void testGetAll() {
SqlSession session = MybatisUtil.getSession();
List<User> users = session.selectList("getAllUser");
for (User user : users) {
System.out.println(user.getId() + "==" + user.getName());
}
session.commit();
session.close();
}
public void testGet() {
SqlSession session = MybatisUtil.getSession();
UserDao userDao = session.getMapper(UserDao.class);
User user = userDao.getUser("zs");
System.out.println(user.getId() + "==" + user.getName());
session.commit();
session.close();
}
@Test
public void testAdd() {
SqlSession session = MybatisUtil.getSession();
UserDao userDao = session.getMapper(UserDao.class);
User user = new User();
// user.setId(10);
user.setName("zs");
user.setPassword("zs");
user.setAge(20);
user.setSex("女");
try {
userDao.insertUser(user);
System.out.println("id:" + user.getId());
// session.commit();
} catch (Exception e) {
e.printStackTrace();
}
// session.close();
}
public void testUpdate() {
SqlSession session = MybatisUtil.getSession();
UserDao userDao = session.getMapper(UserDao.class);
User user = userDao.getUser("sb");
user.setName("sa");
user.setAge(19);
userDao.updateUser(user);
session.commit();
session.close();
}
public void testDelete() {
SqlSession session = MybatisUtil.getSession();
UserDao userDao = session.getMapper(UserDao.class);
userDao.deleteUser(1001);
session.commit();
session.close();
}
}
附上测试项目的源代码。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com