Mybatis框架总结(一)

Mybatis是javaweb开发中数据持久层使用的一个框架,它是一个不完全的ORM框架,这是它和Hibernate的区别之一,下面总结一下Mybatis框架的简单使用。

一、开发环境的准备

最基本的环境就是java开发环境,所以必有得有JDK开发工具包,因为是操作数据库的,所以必须要有数据库,这里使用的是Mysql数据库,还有一些相应的jar包和一个集成开发工具(MyEclipse或Eclipse)就可以了,下面是需要用到的jar包:
这里写图片描述
其中包含mysql数据库链接包和mybatis的一些依赖包。

二、数据库准备

这里需要在mysql中创建一个数据库mybatis,然后创建一张表user:
这里写图片描述

三、Mybatis框架的使用

1.配置SqlMapConfig.xml

使用Mybatis需要先写好相应的配置文件,这里的配置文件有全局配置文SqlMapConfig.xml,它的作用一个是配置好数据库环境,包括数据库驱动,url,用户名和密码等,另一个就是配置相应的数据库映射文件了。

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>

            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

    </environments>


</configuration>
2.编写Bean类
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 + "]";
    }
}
3.配置User.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="test">
    <select id="findUserById" parameterType="int" resultType="com.li.mybatis.po.User">
        SELECT * FROM USER WHERE id=#{value}
    </select>

    <select id="findUserByName" parameterType="java.lang.String" resultType="com.li.mybatis.po.User">
        SELECT * FROM USER WHERE username like '%${value}%'
    </select>

    <insert id="insertUser" parameterType="com.li.mybatis.po.User">
        <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
            SELECT LAST_INSERT_ID()
        </selectKey>
        insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
    </insert>

    <delete id="deleteUser" parameterType="java.lang.Integer" >
        delete from user where id=#{id}
    </delete>

    <update id="updateUser" parameterType="com.li.mybatis.po.User">
        update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
    </update>
</mapper>

这里已经写好了几个简单的数据库操作映射,包括对用户的增删改查。

4.在SqlMapConfig.xml中配置User.xml映射
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>

            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>

    </environments>

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

</configuration>
5.编写测试类
//根据id查询用户的信息
    @Test
    public void getUserById(){
        String resource = "SqlMapConfig.xml";

        InputStream inputStream;
        try {
            inputStream = Resources.getResourceAsStream(resource);

            //创建会话工厂
            SqlSessionFactory sqlSessionFactory = 
                    new SqlSessionFactoryBuilder().build(inputStream);

            //获取会话
            SqlSession sqlSession = sqlSessionFactory.openSession();

            //操作数据库
            User user = (User) sqlSession.selectOne("test.findUserById", 1);

            System.out.println(user.toString());

            sqlSession.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //根据用户名称模糊查询
    @Test
    public void getUserByName(){
        String resource = "SqlMapConfig.xml";

        InputStream inputStream;
        try {
            inputStream = Resources.getResourceAsStream(resource);

            //创建会话工厂
            SqlSessionFactory sqlSessionFactory = 
                    new SqlSessionFactoryBuilder().build(inputStream);

            //获取会话
            SqlSession sqlSession = sqlSessionFactory.openSession();

            //操作数据库
            List<User> userList =  sqlSession.selectList("test.findUserByName", "江博");

            System.out.println(userList.toString());

            sqlSession.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    //添加用户
    @Test
    public void insertUser(){
        String resource = "SqlMapConfig.xml";

        InputStream inputStream;
        try {
            inputStream = Resources.getResourceAsStream(resource);

            //创建会话工厂
            SqlSessionFactory sqlSessionFactory = 
                    new SqlSessionFactoryBuilder().build(inputStream);

            //获取会话
            SqlSession sqlSession = sqlSessionFactory.openSession();

            User user = new User();
            user.setAddress("测试地址");
            user.setBirthday(new Date());
            user.setSex("母");
            user.setUsername("愿宝宝");
            //操作数据库
            sqlSession.insert("test.insertUser", user);

            sqlSession.commit();

            System.out.println(user.getId());

            sqlSession.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
//更新用户
        @Test
        public void updateUser(){
            String resource = "SqlMapConfig.xml";

            InputStream inputStream;
            try {
                inputStream = Resources.getResourceAsStream(resource);

                //创建会话工厂
                SqlSessionFactory sqlSessionFactory = 
                        new SqlSessionFactoryBuilder().build(inputStream);

                //获取会话
                SqlSession sqlSession = sqlSessionFactory.openSession();

                User user = new User();
                user.setId(3);
                user.setAddress("测试地址");
                user.setBirthday(new Date());
                user.setSex("母");
                user.setUsername("愿宝宝");
                //操作数据库
                sqlSession.update("test.updateUser", user);

                sqlSession.commit();

                sqlSession.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
//删除用户
                @Test
                public void deleteUser(){
                    String resource = "SqlMapConfig.xml";

                    InputStream inputStream;
                    try {
                        inputStream = Resources.getResourceAsStream(resource);

                        //创建会话工厂
                        SqlSessionFactory sqlSessionFactory = 
                                new SqlSessionFactoryBuilder().build(inputStream);

                        //获取会话
                        SqlSession sqlSession = sqlSessionFactory.openSession();

                        User user = new User();
                        user.setAddress("测试地址");
                        user.setBirthday(new Date());
                        user.setSex("母");
                        user.setUsername("愿宝宝");
                        //操作数据库
                        sqlSession.delete("test.deleteUser", 2);

                        sqlSession.commit();

                        sqlSession.close();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }

以上就是Mybatis框架的简单使用步骤,可以在熟练使用的基础上再加以进一步的理解和应用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值