设为首页 收藏本站
查看: 756|回复: 0

[经验分享] 使用mybatis实现CRUD

[复制链接]

尚未签到

发表于 2016-11-25 10:00:52 | 显示全部楼层 |阅读模式
  本文介绍的是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

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-305362-1-1.html 上篇帖子: myBatis无法用log4j输出日志 下篇帖子: mybatis学习笔记(六)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表