zoukankan      html  css  js  c++  java
  • Mybatis案例

    MyBatis

    MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。 MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录.

    mybatis提供一种“半自动化”的ORM实现。
       这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。

        而mybatis的着力点,则在于POJO与SQL之间的映射关系。

    需要的jar包:

    mybatis需要jar包:mybatis-3.3.0.jar

    mysql驱动jar包:mysql-connector-java-5.1.15.-bin.jar

    日志记录jar包:log4j.jar

     User.java

    package com.kangjie.bean;
    
    import java.util.Date;
    
    public class User {
    
        private String id;
        private String name;
        private String gender;
        private Date birthday;
        private String cellphone;
        private String email;
        private String hobby;
        private String type;
        private String description;
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getGender() {
            return gender;
        }
        public void setGender(String gender) {
            this.gender = gender;
        }
        public Date getBirthday() {
            return birthday;
        }
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
        public String getCellphone() {
            return cellphone;
        }
        public void setCellphone(String cellphone) {
            this.cellphone = cellphone;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public String getHobby() {
            return hobby;
        }
        public void setHobby(String hobby) {
            this.hobby = hobby;
        }
        public String getType() {
            return type;
        }
        public void setType(String type) {
            this.type = type;
        }
        public String getDescription() {
            return description;
        }
        public void setDescription(String description) {
            this.description = description;
        } 
    }

    创建方法接口UserMapper.java和定义操作user表的sql映射文件UserMapper.xml

    package com.kangjie.mapper;
    
    import java.util.List;
    
    import com.kangjie.bean.User;
    
    public interface UserMapper {
    
        /**
         * 
         * @param user
         * @return
         * @throws Exception
         */
        public int addUser(User user) throws Exception;
        
        public int updateUser(User user) throws Exception;
        
        public int deleteUser(String id) throws Exception;
        public int findUserByID(String id) throws Exception;
        public List<User> getAllUser() throws Exception;
    }

     UserMapper.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org/DTD Mapper 3.0" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.kangjie.mapper.UserMapper">
    <!-- 自定义结果返回集 -->
        <resultMap type="User" id="userMap">
            <id property="id" column="id" javaType="java.lang.String"></id>
            <result property="name" column="name" javaType="java.lang.String"></result>
            <result property="gender" column="gender" javaType="java.lang.String"></result>
            <result property="birthday" column="birthday" javaType="java.util.Date"></result>
            <result property="cellphone" column="cellphone" javaType="java.lang.String"></result>
            <result property="email" column="email" javaType="java.lang.String"></result>
            <result property="hobby" column="hobby" javaType="java.lang.String"></result>
            <result property="type" column="type" javaType="java.lang.String"></result>
            <result property="description" column="description" javaType="java.lang.String"></result>
        </resultMap>
    <!-- 标签中的id属性必须和接口中的方法名相同,id必须唯一 -->
    <!-- keyProperty:仅对insert有效,MyBatis通过getGeneratedKeys或者通过insert语句的selectKey 子元素设置它的值 -->
        <insert id="addUser" useGeneratedKeys="true" keyProperty="id">
            insert into teacher (id,name,gender,birthday,cellphone,email,hobby,type,description) values (#{id},#{name},#{gender},#{birthday},#{cellphone},#{email},#{hobby},#{type},#{description})
        </insert>
    
    </mapper>

    为mybatis.cfg.xml里注册UserMapper.xml文件

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <configuration>
    <!-- 引入外部配置文件 -->
    <properties resource="dbcfg.properties"></properties>
    <!-- 为Java Bean起别名-->
    <typeAliases>
        <typeAlias type="com.kangjie.bean.User" alias="User"/>
    </typeAliases>
    
    <!-- 配置mybatis运行环境 -->
    <environments default="cybatis">
    
    <environment id="cybatis">
    <!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
    <transactionManager type="JDBC" />
    <!-- mybatis提供了3种数据源类型,分别是POOLED,UNPOOL,JNDI -->
    <!-- POOLED 表示支持JDBC数据源连接池 -->
    <!-- UNPOOLED 表示不支持数据源连接池 -->
    <!-- JNDI 表示支持外部数据源连接池 -->
    <dataSource type="POOLED">
    <property name="driver" value="${jdbc.driver}"/>
    <property name="url" value="${jdbc.url}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    </dataSource>
    <!-- </transactionManager> -->
    </environment>
    </environments>
    
    <mappers>
    <!-- 告知映射文件方式 -->
        <!-- <package name="com/kangjie/mapper/UserMapper.xml"/> -->
        <mapper resource="com/kangjie/mapper/UserMapper.xml"/>
    </mappers>
    </configuration>

    创建工具类

    package com.kangjie.tools;
    
    import java.io.IOException;
    import java.io.Reader;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    public class DBTools {
    
        public static SqlSessionFactory sessionFactory;
        static{
            try {
                //使用MyBatis提供的Resource类加载mybaits的配置文件
    //            Reader reader = Resources.getResourceAsReader("/MyBatis/src/mybatis.cfg.xml");
                Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");
                //构建sqlsession工厂
                sessionFactory = new SqlSessionFactoryBuilder().build(reader);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        
        //创建能执行映射文件中的sql的sqlSession
        public static SqlSession getSession(){
            return sessionFactory.openSession();
        }
    }

    测试插入数据

    package com.kangjie.service;
    
    import java.util.Date;
    
    import org.apache.ibatis.session.SqlSession;
    
    import com.kangjie.bean.User;
    import com.kangjie.mapper.UserMapper;
    import com.kangjie.tools.DBTools;
    
    public class UserService {
    
        public static void main(String[] args) {
            addUser();
        }
    
        private static void addUser() {
            // TODO Auto-generated method stub
            SqlSession session = DBTools.getSession();
            UserMapper mapper = session.getMapper(UserMapper.class);
            User user = new User();
            user.setId("6");
            user.setName("wang");
            user.setGender("2");
            user.setBirthday(new Date());
            user.setCellphone("13343462545");
            user.setDescription("do what I want , when I want");
            user.setEmail("67556677@qq.com");
            user.setHobby("a have fun");
            user.setType("vip");
            
            try {
                mapper.addUser(user);
                session.commit();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                session.rollback();
            }
        }
    }
  • 相关阅读:
    《应用Yii1.1和PHP5进行敏捷Web开发》学习笔记(转)
    YII 小模块功能
    Netbeans代码配色主题大搜集
    opensuse 启动巨慢 解决方法 90s多
    opensuse 安装 网易云音乐 rpm netease music
    linux qq rpm deb opensuse
    openSUSE 安装 alien
    第一行代码 Android 第2版
    Android Studio AVD 虚拟机 联网 失败
    docker error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.29/containers/json: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuratio
  • 原文地址:https://www.cnblogs.com/taiguyiba/p/6232778.html
Copyright © 2011-2022 走看看