在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();
}
}