【MyBatis学习01】一个简单入门实例

来源:互联网 发布:家族企业 知乎 编辑:程序博客网 时间:2024/05/28 16:28

本文博客地址:http://blog.csdn.net/soonfly/article/details/63323701 (转载请注明出处)
mybatis框架是一个持久层框架,它提供一种“半自动化”的ORM实现。mybatis主要关注POJO(Plain Old Java Objects,普通的Java 对象)与SQL之间的映射关系,对于SQL语句,需要自己编写。 Mybatis的使用非常简单,下面通过一个小示例来入门mybatis 。

一、准备工作:

1、创建java项目
这里我们选择Dynamic Web Project(动态web项目),当然也可以选择普通的Java Project。
这里写图片描述

在创建的过程中,我们给source folder增加一个config目录用于放置配置文件。在开发中,要养成归类的习惯。
这里写图片描述

2、创建Mysql库、表
创建库

CREATE DATABASE `tangwenmingdb` /*!40100 DEFAULT CHARACTER SET utf8 */

tangwenmingdb中创建分类用户表user

CREATE TABLE `user` (  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,  `username` varchar(50) DEFAULT NULL,  `password` varchar(50) DEFAULT NULL,  `salt` varchar(50) DEFAULT NULL,  `sex` smallint(1) DEFAULT NULL COMMENT '0-未知 1-男 2-女',  `address` varchar(50) DEFAULT NULL,  `cellphone` varchar(30) DEFAULT NULL,  `email` varchar(30) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

二、在Java项目中导入mybatis相关包以及mysql连接组件

mybatis需要jar包:mybatis-3.3.0.jar和几个依赖包,全部导入到工程中即可
mysql驱动jar包:mysql-connector-java-5.1.26-bin.jar
日志记录jar包:log4j-core-2.2.jar和依赖包
记得拷贝log4j的配置文件log4j.properties至config目录下
(相关包下载请点击)

这里写图片描述

三、创建mybatis配置文件sqlMapConfig.xml及数据库连接配置文件

这里写图片描述
db.properties内容:

url=jdbc:mysql://localhost:3306/tangwenmingdbuser=rootpassword=yjcsxdldriverClass=com.mysql.jdbc.Driver

sqlMapConfig.xml内容由三部分组成:
1、typeAliases:设置pojo别名
2、配置mybatis运行环境
3、加载mapper映射

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <!-- 引入外部db连接配置文件 -->    <properties resource="db.properties"></properties>    <!-- 1、typeAliases:设置pojo别名 -->    <typeAliases>        <!-- 方式1:针对单个别名的定义。type:类型的路径; alias:别名 -->        <!-- <typeAlias type="twm.mybatisdemo.pojo.User" alias="User"/> -->        <!-- 方式2:自动扫描,将JAVA类的类名作为类的类别名 -->        <package name="twm.mybatisdemo.pojo" />    </typeAliases>    <!-- 2、配置mybatis运行环境 -->    <environments default="development">        <environment id="development">            <transactionManager type="JDBC">            </transactionManager>            <!-- mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->            <!-- POOLED 表示支持JDBC数据源连接池 -->            <!-- UNPOOLED 表示不支持数据源连接池 -->            <!-- JNDI 表示支持外部数据源连接池 -->            <dataSource type="POOLED">                <property name="driver" value="${driverClass}" />                <property name="url" value="${url}" />                <property name="username" value="${user}" />                <property name="password" value="${password}" />            </dataSource>        </environment>    </environments>    <!-- 3、加载mapper映射 -->    <!-- 第一种方式: 一个个指定接口文件及配置文件位置    <mappers>        <mapper resource="twm/mybatisdemo/mapper/User.xml" />        <mapper class="twm.mybatisdemo.mapper.UserMapper"/>     </mappers> -->    <!-- 第二种方式: 指定目录加载,要求接口文件与xml配置在同一个目录下 -->     <mappers>        <package name="twm/mybatisdemo/mapper" />    </mappers> </configuration>

四、创建POJO,即:数据实体对象

package twm.mybatisdemo.pojo;public class User {    Integer id;    String username;    String password;    String salt;    Short sex;    String address;    String cellphone;    String email;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getPassword() {        return password;    }    public void setPassword(String password) {        this.password = password;    }    public String getSalt() {        return salt;    }    public void setSalt(String salt) {        this.salt = salt;    }    public Short getSex() {        return sex;    }    public void setSex(Short sex) {        this.sex = sex;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    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 User() {    }    public User(String username, String password, String salt,            Short sex, String address, String cellphone, String email) {        super();        this.username = username;        this.password = password;        this.salt = salt;        this.sex = sex;        this.address = address;        this.cellphone = cellphone;        this.email = email;    }    @Override    public String toString() {        return "姓名:"+username+",性别:"+sex+",地址:"+address+",邮箱:"+email;    }}

五、创建映射器接口UserMapper.java及映射器配置文件UserMapper.xml

映射器接口文件 UserMapper.java:

package twm.mybatisdemo.mapper;import java.util.List;import org.apache.ibatis.annotations.Param;import twm.mybatisdemo.pojo.User;public interface UserMapper {    /**     * 新增用戶     *      * @param user     * @return     * @throws Exception     */    public int insert(User user) throws Exception;    /**     * 修改用戶     *      * @param user     * @param id     * @return     * @throws Exception     */    public int update(User user) throws Exception;    /**     * 刪除用戶     *      * @param id     * @return     * @throws Exception     */    public int delete(int id) throws Exception;    /**     * 根据id查询用户信息     *      * @param id     * @return     * @throws Exception     */    public User selectById(int id) throws Exception;    /**     * 查询所有的用户信息     *      * @return     * @throws Exception     */    public List<User> selectAll() throws Exception;    /**     * 根据用户名模糊查询用户     * @param searchkey     * @return     * @throws Exception     */    public List<User> findByName(@Param(value="searchkey") String searchkey) throws Exception;}

映射配置文件UserMapper.xml:

<?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="twm.mybatisdemo.mapper.UserMapper">    <!-- 自定义返回结果集 -->    <resultMap id="userMap" type="twm.mybatisdemo.pojo.User">        <id column="id" property="id" jdbcType="INTEGER" />        <result property="username" column="username" javaType="String" jdbcType="VARCHAR"></result>        <result property="password" column="password" javaType="String" jdbcType="VARCHAR"></result>        <result property="salt" column="salt" javaType="String" jdbcType="VARCHAR"></result>        <result property="sex" column="sex" javaType="Short" jdbcType="INTEGER"></result>        <result property="address" column="address" javaType="String" jdbcType="VARCHAR"></result>        <result property="cellphone" column="cellphone" javaType="String" jdbcType="VARCHAR"></result>        <result property="email" column="email" javaType="String" jdbcType="VARCHAR"></result>    </resultMap>    <!-- useGeneratedKeys 取值范围true|false 默认值是:false。     含义:设置是否使用JDBC的getGenereatedKeys方法(如:Mysql自增)获取主键并赋值到keyProperty设置的模型属性中 -->    <!-- #{}:表示一个占位符,用来接收输入参数的。 -->    <insert id="insert" useGeneratedKeys="true" keyProperty="id">        insert into user (username,password,salt,sex,address,cellphone,email) values        (#{username},#{password},#{salt},#{sex},#{address},#{cellphone},#{email})    </insert>    <update id="update">        update user set        username=#{username},password=#{password},salt=#{salt},sex=#{sex},address=#{address},        cellphone=#{cellphone},email=#{email}         where id=#{id}    </update>    <delete id="delete" parameterType="int">        delete from user where id=#{id}    </delete>    <select id="selectById" parameterType="int" resultMap="userMap">        select * from user where id=#{id}    </select>    <select id="selectAll" resultMap="userMap">        select * from user    </select></mapper>

六、创建生成Sqlsession的辅助类

package twm.mybatisdemo.Assist;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 SqlSessionAssist {    public static SqlSessionFactory sessionFactory;    static {        try {            Reader reader = Resources.getResourceAsReader("sqlMapConfig.xml");            // InputStream inputStream = Resources.getResourceAsStream("mybatis.cfg.xml");            sessionFactory = new SqlSessionFactoryBuilder().build(reader);        } catch (Exception e) {            e.printStackTrace();        }    }    public static SqlSession getSession() {        return sessionFactory.openSession();    }}

七、调用 Run as Java Application

public class firstTest {    public static void main(String[] args) throws Exception {        SqlSession session = SqlSessionAssist.getSession();        //session.select("select", 38);        /*获取user O/R映射关系*/        UserMapper usermapper=session.getMapper(UserMapper.class);        User aPerson;        /*1、增加单条记录*/        aPerson=new User("郭灭","123456", "aX3Qcs", (short)1, "济南云龙客栈", "18911110000", "guom@gulong.com");        /*insert返回操作记录的数量,插入一条记录即为:1。*/        usermapper.insert(aPerson);//接口映射方式        //session.insert("insert",aPerson);//直接采用DAO方式        System.out.println("1、增加单条记录:插入用户["+aPerson+"]成功。");        /*2、增加单条记录,并返回插入ID*/        aPerson=new User("高天仪","123456", "aX3Qcs", (short)2, "北冥山庄", "18911110000", "gaotianyi@gulong.com");        /*xml配置了useGeneratedKeys="true" keyProperty="id",则会将插入后的主键填充到参数里的user对象的主键中。         *aPerson.getId()返回插入记录的主键*/        usermapper.insert(aPerson);        System.out.println("2、增加单条记录,并返回插入ID:插入用户["+aPerson+"]成功。ID:"+aPerson.getId());        session.commit();/*提交*/        /*3、读取单条记录*/        User tmpuser=usermapper.selectById(aPerson.getId());//接口映射方式        //User tmpuser=session.selectOne("selectById", aPerson.getId());//直接采用DAO方式        System.out.println("3、读取单条记录:"+tmpuser+"。ID:"+tmpuser.getId());        /*4、修改单条记录*/        tmpuser.setAddress("锦绣山庄");        tmpuser.setUsername("三笑将军");        usermapper.update(tmpuser);        session.commit();/*提交*/        System.out.println("4、修改单条记录:"+tmpuser+"。ID:"+tmpuser.getId());        /*5、删除单条记录*/        usermapper.delete(tmpuser.getId());        session.commit();/*提交*/        System.out.println("5、删除单条记录:"+tmpuser);        /*6、查询记录*/        List<User>  userList=usermapper.findByName("灭");        System.out.println("6、查询记录:共找到"+userList.size()+"个用户");        /*End:关闭mybatis会话*/        session.close();    }}

运行后输出:

1、增加单条记录:插入用户[姓名:郭灭,性别:1,地址:济南云龙客栈,邮箱:guom@gulong.com]成功。
2、增加单条记录,并返回插入ID:插入用户[姓名:高天仪,性别:2,地址:北冥山庄,邮箱:gaotianyi@gulong.com]成功。ID:52
3、读取单条记录:姓名:高天仪,性别:2,地址:北冥山庄,邮箱:gaotianyi@gulong.com。ID:52
4、修改单条记录:姓名:三笑将军,性别:2,地址:锦绣山庄,邮箱:gaotianyi@gulong.com。ID:52
5、删除单条记录:姓名:三笑将军,性别:2,地址:锦绣山庄,邮箱:gaotianyi@gulong.com 6、查询记录:共找到1个用户

至此我们用mybatis完成了基础的增删改查操作。

本文博客地址:http://blog.csdn.net/soonfly/article/details/63323701 (转载请注明出处)

0 0
原创粉丝点击