使用Mybaties xml的增删改查

来源:互联网 发布:笑傲江湖ol捏脸数据 编辑:程序博客网 时间:2024/06/05 17:35

目录结构:
这里写图片描述

数据库:mysql
这里写图片描述

resource:jdbc.properties

##for Mysqldriver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/mybatisusername=rootpassword=123456

mybaties的配置:mybaties-config.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>        <!-- 引入 jdbc.properties  -->        <properties resource="jdbc.properties" />        <!-- default属性表示采用哪种配置 -->        <environments default="development">            <!-- 配置情况的一种,可以有多个,根据environments 的default来指定使用哪一种 -->            <environment id="development">                <!-- 配置事务管理 采用JDBC -->                <transactionManager type="JDBC"/>                <!-- POOLED:mybatis的数据源,JNDI:基于tomcat的数据源 -->                <dataSource type="POOLED">                    <!-- 数据库连接信息 -->                    <property name="driver" value="${driver}" />                    <property name="url" value="${url}" />                    <property name="username" value="${username}" />                    <property name="password" value="${password}" />                </dataSource>            </environment>        </environments>        <mappers>            <!-- 注册userMapper.xml文件,             userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/mapping/userMapper.xml-->            <mapper resource="me/mapping/userMapper.xml"/>        </mappers></configuration>

首先是domain的代码:

package me.domain;public class user {    private int id;    private String name;    private int age;    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;    }    @Override    public String toString() {       return "User [id=" + id + ", name=" + name + ", age=" + age + "]";    }}

userMapping.xml
主要是sql语句的映射 ….以这种形式在mybaties-cinfig.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,namespace的值习惯上设置成包名+sql映射文件名,这样就能够保证namespace的值是唯一的例如namespace="me.gacl.mapping.userMapper"就是me.gacl.mapping(包名)+userMapper(userMapper.xml文件去除后缀) --><mapper namespace="me.mapping.userMapper">    <!-- 在select标签中编写查询的SQL语句, 设置select标签的id属性为getUser,id属性值必须是唯一的,不能够重复    使用parameterType属性指明查询时使用的参数类型,resultType属性指明查询返回的结果集类型    resultType="me.gacl.domain.User"就表示将查询结果封装成一个User类的对象返回    User类就是users表所对应的实体类    -->    <!--         根据id查询得到一个user对象     -->    <select id="getUser" parameterType="int"         resultType="me.domain.user">        select * from users where id=#{id}    </select>    <insert id="addUser" parameterType="me.domain.user">        insert into  users(name,age) values (#{name},#{age});    </insert>    <update id="updateUser" parameterType="me.domain.user">        update users set name=#{name},age=#{age} where id=#{id};    </update>    <delete id="deleteUser" parameterType="int">        delete from users where id=#{id};    </delete>    <select id="getAllUser"   resultType="me.domain.user">        select * from users;    </select></mapper>

TestMappingXml:

package me.test;import java.util.List;import me.domain.user;import org.apache.ibatis.session.SqlSession;import org.junit.Test;import util.MyBatisUtil;public class TestMappingXml {    @Test    public void testAdd(){        SqlSession sqlSession = MyBatisUtil.getSqlSession();         /**         * 映射sql的标识字符串,         * me.gacl.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,         * addUser是insert标签的id属性值,通过insert标签的id属性值就可以找到要执行的SQL         */        String statement = "me.mapping.userMapper.addUser";//映射sql的标识字符串        user user = new user();        user.setName("道剑剑非道");        user.setAge(400);      //执行插入操作        sqlSession.insert(statement,user);        sqlSession.commit();        sqlSession.close();    }    @Test    public void testUpdate(){        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);        String sql = "me.mapping.userMapper.updateUser";        user user = new user();        user.setName("天际神毓逍遥");        user.setAge(800);        user.setId(1);        sqlSession.update(sql, user);        sqlSession.close();    }    @Test    public void testDelele(){        SqlSession sqlSession = MyBatisUtil.getSqlSession(true);        String sql = "me.mapping.userMapper.deleteUser";        sqlSession.delete(sql, 2);        sqlSession.close();    }    @Test     public void testGetAll(){       SqlSession sqlSession = MyBatisUtil.getSqlSession();        /**         * 映射sql的标识字符串,         * me.mapping.userMapper是userMapper.xml文件中mapper标签的namespace属性的值,         * getAllUsers是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL         */        String statement = "me.mapping.userMapper.getAllUser";//映射sql的标识字符串        //执行查询操作,将查询结果自动封装成List<User>返回        List<user> lstUsers = sqlSession.selectList(statement);        //使用SqlSession执行完SQL之后需要关闭SqlSession        sqlSession.close();        System.out.println(lstUsers);    }}

工具类:MyBatisUtil

package util;import java.io.InputStream;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;public class MyBatisUtil {    /**     * 获取SqlSessionFactory     * @return SqlSessionFactory     */    public static SqlSessionFactory getSqlSessionFactory(){        String resource = "mybatis-config.xml";        //使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)        InputStream input = MyBatisUtil.class.getClassLoader().getResourceAsStream(resource);        //构建sqlSession的工厂        SqlSessionFactory fatory = new SqlSessionFactoryBuilder().build(input);        return fatory;    }    /**     * 获取SqlSession     * @return SqlSession     */    public static SqlSession getSqlSession(){         //创建能执行映射文件中sql的sqlSession        return getSqlSessionFactory().openSession();    }      /**     * 获取SqlSession     * @param isAutoCommit      *         true 表示创建的SqlSession对象在执行完SQL之后会自动提交事务     *         false 表示创建的SqlSession对象在执行完SQL之后不会自动提交事务,这时就需要我们手动调用sqlSession.commit()提交事务     * @return SqlSession     */     public static SqlSession getSqlSession(boolean isAutoCommit) {            return getSqlSessionFactory().openSession(isAutoCommit);        }}

注意点是:配置文件不要搞错了。

原创粉丝点击