Mybatis基于命名空间完成POJO类增删改查-----Mybatis框架

132 篇文章 0 订阅
120 篇文章 0 订阅
在SQL mapper.xml文件中有一个nameSpace,它是用来指定命名空间的
用来防止ID重复,sqlSession.selectList("abc.selectAll");
应该是namespace.执行id才是正确的写法,本质上mybatis的sqlId的本质写法是加上命名空间的
在SQL mapper.xml文件中有一个nameSpace,它是用来指定命名空间的
用来防止ID重复,sqlSession.selectList("abc.selectAll");
应该是namespace.执行id才是正确的写法,本质上mybatis的sqlId的本质写法是加上命名空间的
<?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>
    <!--    如果引入了三方可以不用写-->
    <settings>
        <setting name="logImpl" value="SLF4J"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:13306/powernode" />
                <property name="username" value="root" />
                <property name="password" value="abc123" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--        指定xml文件的路径,自动从根路径下找资源-->
        <mapper resource="CarMapper.xml"></mapper>
        <mapper resource="UserMapper.xml"></mapper>
        <!--        url属性,是从绝对路径下加载资源的,语法格式是file:///加绝对路径-->
        <!--        <mapper resource="CarMapper.xml" url="file:///d:/CarMapper.xml"></mapper>-->
    </mappers>
</configuration>
<?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>
    <!--    如果引入了三方可以不用写-->
    <settings>
        <setting name="logImpl" value="SLF4J"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:13306/powernode" />
                <property name="username" value="root" />
                <property name="password" value="abc123" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--        指定xml文件的路径,自动从根路径下找资源-->
        <mapper resource="CarMapper.xml"></mapper>
        <mapper resource="UserMapper.xml"></mapper>
        <!--        url属性,是从绝对路径下加载资源的,语法格式是file:///加绝对路径-->
        <!--        <mapper resource="CarMapper.xml" url="file:///d:/CarMapper.xml"></mapper>-->
    </mappers>
</configuration>
<?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="123">
    <!--    这个id是这条SQL语句的唯一标识,这个ID就代表了这条SQL语句-->
    <select id="selectAll" resultType="com.powernode.mybatis.pojo.Car">
        select
            id,
            car_num as carNum,
            brand,
            guide_price as guidePrice,
            produce_time as produceTime,
            car_type as carType
        from
            t_car
    </select>

</mapper>
<?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="123">
    <!--    这个id是这条SQL语句的唯一标识,这个ID就代表了这条SQL语句-->
    <select id="selectAll" resultType="com.powernode.mybatis.pojo.Car">
        select
            id,
            car_num as carNum,
            brand,
            guide_price as guidePrice,
            produce_time as produceTime,
            car_type as carType
        from
            t_car
    </select>

</mapper>
package com.powernode.mybatis.test;

import com.powernode.mybatis.pojo.Car;
import com.powernode.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class CarMapperTest
{
    private static final Logger logger = LoggerFactory.getLogger(CarMapperTest.class);
    @Test
    public void TestSelectAll()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //执行SQL语句
        List<Object> selectAll = sqlSession.selectList("selectAll");
        for (int i = 0; i < selectAll.size(); i++)
        {
            logger.info(selectAll.toString());
        }
        Iterator iterator = selectAll.iterator();
        while (iterator.hasNext())
        {
            logger.info(iterator.next().toString());
        }
        selectAll.forEach(car -> logger.info(car.toString()));
        sqlSession.close();
    }
    @Test
    public void TestInsertCar()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //前端传过来数据了,用MAP封装
        Map<String,Object> map = new HashMap<>();
        map.put("car_num","1111");
        map.put("brand","比亚迪汉");
        map.put("guide_price","10.0");
        map.put("produce_time","2020-11-11");
        map.put("car_type","新能源");
        //执行sql语句,insert(sqlID,一个对象用来封装数据)
        //两个参数,一个是sqlId,一个是数据封装的对象
        //用这个封装了数据的对象来传值
        //这个对象就体现了ORM(对象关系映射)
        int insert = sqlSession.insert("insertCar",map);
        logger.info("" + insert);
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void TestInsertCarByPOJO()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //执行SQL
        Car car = new Car(null,"3333","比亚迪秦",12.0,"2020-11-11","新能源");
        int insertCar = sqlSession.insert("insertCar1", car);
        //ORM对象,我们都是映射,要取值只能是调用get方法
        logger.info(insertCar == 1?"成功" : "失败");
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void TestDeleteById()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //执行SQL语句
        int deleteById = sqlSession.delete("deleteById", 2);
        logger.info(deleteById == 1?"成功" : "失败");
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void TestUpdateById()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        Car car = new Car(3L,"3333","比亚迪秦",12.0,"2020-11-11","新能源");
        int updateById = sqlSession.update("updateById", car);
        logger.info(updateById == 1?"成功" : "失败");
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void TestSelectById()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //执行DQL语句
        Car car = sqlSession.selectOne("selectById", 5);
        //mybatis底层执行了select后会返回一个ResultSet结果对象
        //接下来mybatis应该从ResultSet中取值封装成java对象
        //封装完成返回一个java对象
        logger.info(car.toString());
        sqlSession.close();
    }
    @Test
    public void TestNameSpace()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
//        List<Object> selectAll = sqlSession.selectList("selectAll");
        List<Object> objects = sqlSession.selectList("abc.selectAll");
        objects.forEach(car -> logger.info(car.toString()));
        sqlSession.close();
    }
}
package com.powernode.mybatis.test;

import com.powernode.mybatis.pojo.Car;
import com.powernode.mybatis.utils.SqlSessionUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class CarMapperTest
{
    private static final Logger logger = LoggerFactory.getLogger(CarMapperTest.class);
    @Test
    public void TestSelectAll()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //执行SQL语句
        List<Object> selectAll = sqlSession.selectList("selectAll");
        for (int i = 0; i < selectAll.size(); i++)
        {
            logger.info(selectAll.toString());
        }
        Iterator iterator = selectAll.iterator();
        while (iterator.hasNext())
        {
            logger.info(iterator.next().toString());
        }
        selectAll.forEach(car -> logger.info(car.toString()));
        sqlSession.close();
    }
    @Test
    public void TestInsertCar()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //前端传过来数据了,用MAP封装
        Map<String,Object> map = new HashMap<>();
        map.put("car_num","1111");
        map.put("brand","比亚迪汉");
        map.put("guide_price","10.0");
        map.put("produce_time","2020-11-11");
        map.put("car_type","新能源");
        //执行sql语句,insert(sqlID,一个对象用来封装数据)
        //两个参数,一个是sqlId,一个是数据封装的对象
        //用这个封装了数据的对象来传值
        //这个对象就体现了ORM(对象关系映射)
        int insert = sqlSession.insert("insertCar",map);
        logger.info("" + insert);
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void TestInsertCarByPOJO()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //执行SQL
        Car car = new Car(null,"3333","比亚迪秦",12.0,"2020-11-11","新能源");
        int insertCar = sqlSession.insert("insertCar1", car);
        //ORM对象,我们都是映射,要取值只能是调用get方法
        logger.info(insertCar == 1?"成功" : "失败");
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void TestDeleteById()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //执行SQL语句
        int deleteById = sqlSession.delete("deleteById", 2);
        logger.info(deleteById == 1?"成功" : "失败");
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void TestUpdateById()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        Car car = new Car(3L,"3333","比亚迪秦",12.0,"2020-11-11","新能源");
        int updateById = sqlSession.update("updateById", car);
        logger.info(updateById == 1?"成功" : "失败");
        sqlSession.commit();
        sqlSession.close();
    }
    @Test
    public void TestSelectById()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
        //执行DQL语句
        Car car = sqlSession.selectOne("selectById", 5);
        //mybatis底层执行了select后会返回一个ResultSet结果对象
        //接下来mybatis应该从ResultSet中取值封装成java对象
        //封装完成返回一个java对象
        logger.info(car.toString());
        sqlSession.close();
    }
    @Test
    public void TestNameSpace()
    {
        SqlSession sqlSession = SqlSessionUtil.openSqlSession();
//        List<Object> selectAll = sqlSession.selectList("selectAll");
        List<Object> objects = sqlSession.selectList("abc.selectAll");
        objects.forEach(car -> logger.info(car.toString()));
        sqlSession.close();
    }
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旧约Alatus

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值