Mybaits深入了解(二)—-入门实例

来源:互联网 发布:阿里云404页面设置 编辑:程序博客网 时间:2024/05/21 18:31

  • Mybatis CRUD实例
    • 实例的开发环境
    • 项目的目录结构
    • log4jproperties配置
    • SqlMapConfigxml的配置
    • 创建POJO类
    • 映射文件
    • 具体代码实现

    

Mybatis CRUD实例


实例的开发环境

java环境 开发工具 数据库 jdk1.7 myeclipse mysql

    

项目的目录结构

这里写图片描述
    

log4j.properties配置

    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 此外,通过Log4j其他语言接口,您可以在C、C++、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言 分布式系统得到一个统一一致的日志组件模块。而且,通过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。想要详细了解的话可以看看下面的博客:log4j.properties 详解与配置步骤。在本项目中的配置:

# Global logging configuration#在开发环境下日志要设置成Debug,生产环境设置成info或errorlog4j.rootLogger=DEBUG, stdout# Console output...log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

    

SqlMapConfig.xml的配置

    这是一个关键的配置文件,是mybaits的全局配置文件,不过名称不固定,主要是用来配置数据源、事务等,mybaits的运行环境。

<?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>    <!-- 和spring整合后 environments配置将废除-->    <environments default="development">        <environment id="development">        <!-- 使用jdbc事务管理-->            <transactionManager type="JDBC" />        <!-- 数据库连接池-->            <dataSource type="POOLED">                <property name="driver" value="com.mysql.jdbc.Driver" />                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8" />                <property name="username" value="root" />                <property name="password" value="root" />            </dataSource>        </environment>    </environments>    <!-- 加载映射文件 -->    <mappers>        <mapper resource="sqlmap/User.xml"/>    </mappers></configuration>

    

创建POJO类

package cn.itcast.mybatis.po;import java.util.Date;public class User {    private int id;    private String username;// 用户姓名    private String sex;// 性别    private Date birthday;// 生日    private String address;// 地址    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getUsername() {        return username;    }    public void setUsername(String username) {        this.username = username;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        this.sex = sex;    }    public Date getBirthday() {        return birthday;    }    public void setBirthday(Date birthday) {        this.birthday = birthday;    }    public String getAddress() {        return address;    }    public void setAddress(String address) {        this.address = address;    }    @Override    public String toString() {        return "User [id=" + id + ", username=" + username + ", sex=" + sex                + ", birthday=" + birthday + ", address=" + address + "]";    }}

    

映射文件

    映射文件的命名最好规范统一下,本实例中命名为User.xml载映射文件中配置sql语句。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="test"><!-- 根据id获取用户信息 -->    <select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">        select * from user where id = #{id}    </select>    <!-- 自定义条件查询用户列表 ,可能返回多条-->    <select id="findUserByUsername" parameterType="java.lang.String"             resultType="cn.itcast.mybatis.po.User">       select * from user where username like '%${value}%'     </select>    <!-- 添加用户 AFTER LAST_INSERT_ID() -->    <insert id="insertUser" parameterType="cn.itcast.mybatis.po.User">    <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">        select LAST_INSERT_ID()    </selectKey>      insert into user(username,birthday,sex,address)       values(#{username},#{birthday},#{sex},#{address})    </insert>    <delete id="deleteUserById" parameterType="int">        delete from user where id=#{id}    </delete>    <update id="updateUser" parameterType="cn.itcast.mybatis.po.User">        update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}    </update></mapper>

    并在SqlMapConfig.xml文件中加载映射文件

<!-- 加载映射文件 -->    <mappers>        <mapper resource="sqlmap/User.xml"/>    </mappers>

    

具体代码实现

    接下来就是具体的代码实现了,在MybatisFirst类中:

package cn.itcast.mybatis.first;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.List;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Before;import org.junit.Test;import cn.itcast.mybatis.po.User;public class MybatisFirst {    //创建会话工厂    private SqlSessionFactory sqlSessionFactory;    @Before    public void createSqlSessionFactory() throws IOException{        //配置文件        String resource="SqlMapConfig.xml";        //得到配置文件流        InputStream inputStream=Resources.getResourceAsStream(resource);        // 使用SqlSessionFactoryBuilder从xml配置文件中创建SqlSessionFactory        sqlSessionFactory=new SqlSessionFactoryBuilder().build(inputStream);    }    @Test    public void findUserByIdTest() throws IOException{        SqlSession sqlSession=null;        try {            //创建数据库会话实例            sqlSession=sqlSessionFactory.openSession();            //根据用户ID查询单个记录            User user=sqlSession.selectOne("test.findUserById", 1);            System.out.println(user);        } catch (Exception e) {            e.printStackTrace();        } finally {            if (sqlSession != null) {                sqlSession.close();            }        }    }    @Test    public void findUserByUsername() throws IOException{        SqlSession sqlSession=null;        try {            //创建数据库会话实例            sqlSession=sqlSessionFactory.openSession();            //根据用户名查询多条记录            List<User> list=sqlSession.selectList("test.findUserByUsername","张");            System.out.println(list);        } catch (Exception e) {            e.printStackTrace();        } finally {            if (sqlSession != null) {                sqlSession.close();            }        }    }    @Test    public void testInsert(){        SqlSession sqlSession=null;        try {            sqlSession=sqlSessionFactory.openSession();            User user=new User();            user.setAddress("廊坊市广阳区");            user.setBirthday(new Date());            user.setSex("1");            user.setUsername("张令");            sqlSession.insert("test.insertUser",user);            //提交事务            sqlSession.commit();        } catch (Exception e) {            e.printStackTrace();        }finally{            if(sqlSession!=null){                sqlSession.close();            }        }    }    @Test    public void testDelete(){        SqlSession sqlSession=null;        try {            sqlSession=sqlSessionFactory.openSession();            sqlSession.delete("test.deleteUserById",29);            //提交事务            sqlSession.commit();        } catch (Exception e) {            e.printStackTrace();        }finally{            if(sqlSession!=null){                sqlSession.close();            }        }    }    @Test    public void testUpdate(){        SqlSession sqlSession=null;        try {            sqlSession=sqlSessionFactory.openSession();            User user=new User();            user.setId(26);            user.setAddress("河北省南宫市");            user.setBirthday(new Date());            user.setSex("男");            user.setUsername("令仔");            sqlSession.update("test.updateUser",user);            //提交事务            sqlSession.commit();        } catch (Exception e) {            e.printStackTrace();        }finally{            if(sqlSession!=null){                sqlSession.close();            }        }    }}

    

    
    

    为大家贡献上我写的源码:Mybatis实例源码下载地址

1 0
原创粉丝点击