<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.powernode</groupId> <artifactId>Mybatis-008-select</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.powernode</groupId> <artifactId>Mybatis-008-select</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.10</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> </dependency> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.13.2</version> <scope>test</scope> </dependency> </dependencies> <properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> </project>
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:13306/powernode jdbc.username=root jdbc.password=abc123
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:13306/powernode jdbc.username=root jdbc.password=abc123
<?xml version="1.0" encoding="UTF-8" ?> <configuration debug="false"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <logger name="org.apache.ibatis" level="TRACE"> </logger> <logger name="java.sql.Connection" level="DEBUG"> </logger> <logger name="java.sql.Statement" level="DEBUG"> </logger> <logger name="java.sql.PreparedStatement" level="DEBUG"> </logger> <!--日志级别,由低到高--> <!--ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF--> <root level="DEBUG"> <appender-ref ref="STDOUT"> </appender-ref> <appender-ref ref="FILE"> </appender-ref> </root> </configuration>
<?xml version="1.0" encoding="UTF-8" ?> <configuration debug="false"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> </encoder> </appender> <logger name="org.apache.ibatis" level="TRACE"> </logger> <logger name="java.sql.Connection" level="DEBUG"> </logger> <logger name="java.sql.Statement" level="DEBUG"> </logger> <logger name="java.sql.PreparedStatement" level="DEBUG"> </logger> <!--日志级别,由低到高--> <!--ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF--> <root level="DEBUG"> <appender-ref ref="STDOUT"> </appender-ref> <appender-ref ref="FILE"> </appender-ref> </root> </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> <properties resource="jdbc.properties"/> <settings> <setting name="logImpl" value="SLF4J"/> </settings> <typeAliases> <package name="com.powernode.mybatis.POJO"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <package name="com.powernode.mybatis.mappers"/> </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> <properties resource="jdbc.properties"/> <settings> <setting name="logImpl" value="SLF4J"/> </settings> <typeAliases> <package name="com.powernode.mybatis.POJO"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <package name="com.powernode.mybatis.mappers"/> </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="com.powernode.mybatis.mappers.CarMapper"> <select id="selectById" resultType="Car"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car where id = #{id}; </select> <select id="selectAll" resultType="Car"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car </select> <select id="selectByBrand" resultType="Car"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car where brand like '%${brand}%'; </select> <select id="selectByCarId" resultType="Car"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car where id = #{id}; </select> <!-- 查询结果没有合适的接收对象,没有合适的POJO类--> <select id="selectByIdGetMap" resultType="java.util.Map"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car where id = #{id}; </select> <select id="selectAllCar" resultType="Map"> select id as id, car_num as carNum, brand as 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="com.powernode.mybatis.mappers.CarMapper"> <select id="selectById" resultType="Car"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car where id = #{id}; </select> <select id="selectAll" resultType="Car"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car </select> <select id="selectByBrand" resultType="Car"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car where brand like '%${brand}%'; </select> <select id="selectByCarId" resultType="Car"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car where id = #{id}; </select> <!-- 查询结果没有合适的接收对象,没有合适的POJO类--> <select id="selectByIdGetMap" resultType="java.util.Map"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car where id = #{id}; </select> <select id="selectAllCar" resultType="Map"> select id as id, car_num as carNum, brand as brand, guide_price as guidePrice, produce_time as produceTime, car_type as carType from t_car </select> </mapper>
package com.powernode.mybatis.mappers; import com.powernode.mybatis.POJO.Car; import java.util.List; import java.util.Map; public interface CarMapper { List<Map<String,Object>> selectAllCar(); Map<String,Object> selectByIdGetMap(Long id); List<Car> selectByCarId(Long id); //模糊查询的对象可能有多个,会出问题吗? Car selectByBrand(String brand); List<Car> selectAll(); Car selectById(Long id); }
package com.powernode.mybatis.mappers; import com.powernode.mybatis.POJO.Car; import java.util.List; import java.util.Map; public interface CarMapper { List<Map<String,Object>> selectAllCar(); Map<String,Object> selectByIdGetMap(Long id); List<Car> selectByCarId(Long id); //模糊查询的对象可能有多个,会出问题吗? Car selectByBrand(String brand); List<Car> selectAll(); Car selectById(Long id); }
package com.powernode.mybatis.POJO; public class Car { //这是一个封装汽车相关信息的普通的java类,数据库表中的字段应该和属性一一对应 //为什么使用包装类,因为当我们查值的时候,返回值有可能是null //避免数据不兼容 private Long id; private String carNum; private String brand; private Double guidePrice; private String produceTime; private String carType; public Car(){}; public Car(Long id, String carNum, String brand, Double guidePrice, String produceTime, String carType) { this.id = id; this.carNum = carNum; this.brand = brand; this.guidePrice = guidePrice; this.produceTime = produceTime; this.carType = carType; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getCarNum() { return carNum; } public void setCarNum(String carNum) { this.carNum = carNum; } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public Double getGuidePrice() { return guidePrice; } public void setGuidePrice(Double guidePrice) { this.guidePrice = guidePrice; } public String getProduceTime() { return produceTime; } public void setProduceTime(String produceTime) { this.produceTime = produceTime; } public String getCarType() { return carType; } public void setCarType(String carType) { this.carType = carType; } @Override public String toString() { return "Car{" + "id=" + id + ", carNum='" + carNum + '\'' + ", brand='" + brand + '\'' + ", guidePrice=" + guidePrice + ", produceTime='" + produceTime + '\'' + ", carType='" + carType + '\'' + '}'; } }
package com.powernode.mybatis.POJO; public class Car { //这是一个封装汽车相关信息的普通的java类,数据库表中的字段应该和属性一一对应 //为什么使用包装类,因为当我们查值的时候,返回值有可能是null //避免数据不兼容 private Long id; private String carNum; private String brand; private Double guidePrice; private String produceTime; private String carType; public Car(){}; public Car(Long id, String carNum, String brand, Double guidePrice, String produceTime, String carType) { this.id = id; this.carNum = carNum; this.brand = brand; this.guidePrice = guidePrice; this.produceTime = produceTime; this.carType = carType; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getCarNum() { return carNum; } public void setCarNum(String carNum) { this.carNum = carNum; } public String getBrand() { return brand; } public void setBrand(String brand) { this.brand = brand; } public Double getGuidePrice() { return guidePrice; } public void setGuidePrice(Double guidePrice) { this.guidePrice = guidePrice; } public String getProduceTime() { return produceTime; } public void setProduceTime(String produceTime) { this.produceTime = produceTime; } public String getCarType() { return carType; } public void setCarType(String carType) { this.carType = carType; } @Override public String toString() { return "Car{" + "id=" + id + ", carNum='" + carNum + '\'' + ", brand='" + brand + '\'' + ", guidePrice=" + guidePrice + ", produceTime='" + produceTime + '\'' + ", carType='" + carType + '\'' + '}'; } }
package com.powernode.mybatis.utils; 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 java.io.IOException; public class SqlSessionUtil { private SqlSessionUtil(){}; private static SqlSessionFactory sqlSessionFactory; private static ThreadLocal<SqlSession> local = new ThreadLocal<>(); static { try { sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); } catch (IOException e) { throw new RuntimeException(e); } } public static SqlSession openSession() { SqlSession sqlSession = local.get(); if (sqlSession == null) { sqlSession = sqlSessionFactory.openSession(); local.set(sqlSession); } return sqlSession; } public static void close(SqlSession sqlSession) { if(sqlSession != null) { sqlSession.close(); local.remove(); } } }
package com.powernode.mybatis.utils; 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 java.io.IOException; public class SqlSessionUtil { private SqlSessionUtil(){}; private static SqlSessionFactory sqlSessionFactory; private static ThreadLocal<SqlSession> local = new ThreadLocal<>(); static { try { sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); } catch (IOException e) { throw new RuntimeException(e); } } public static SqlSession openSession() { SqlSession sqlSession = local.get(); if (sqlSession == null) { sqlSession = sqlSessionFactory.openSession(); local.set(sqlSession); } return sqlSession; } public static void close(SqlSession sqlSession) { if(sqlSession != null) { sqlSession.close(); local.remove(); } } }
package com.powernode.mybatis.Test; import com.powernode.mybatis.POJO.Car; import com.powernode.mybatis.mappers.CarMapper; import com.powernode.mybatis.utils.SqlSessionUtil; import org.apache.ibatis.session.SqlSession; import java.util.List; import java.util.Map; public class Test { @org.junit.Test public void TestPojoSelect() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); Car car = mapper.selectById(5l); System.out.println(car); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestSelectAll() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); List<Car> carList = mapper.selectAll(); carList.forEach(car -> { System.out.println(car); }); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestBrand() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); //会报错,因为返回了多条记录了 Car car = mapper.selectByBrand("比亚迪"); System.out.println(car); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestSelectByCarId() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); List<Car> carList = mapper.selectByCarId(5L); carList.forEach(car -> { System.out.println(car); }); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestSelectByIdGetMap() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); Map<String, Object> car = mapper.selectByIdGetMap(5l); System.out.println(car); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestselectAllCar() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); List<Map<String, Object>> maps = mapper.selectAllCar(); maps.forEach(map ->{ System.out.println(map); }); } }
package com.powernode.mybatis.Test; import com.powernode.mybatis.POJO.Car; import com.powernode.mybatis.mappers.CarMapper; import com.powernode.mybatis.utils.SqlSessionUtil; import org.apache.ibatis.session.SqlSession; import java.util.List; import java.util.Map; public class Test { @org.junit.Test public void TestPojoSelect() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); Car car = mapper.selectById(5l); System.out.println(car); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestSelectAll() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); List<Car> carList = mapper.selectAll(); carList.forEach(car -> { System.out.println(car); }); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestBrand() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); //会报错,因为返回了多条记录了 Car car = mapper.selectByBrand("比亚迪"); System.out.println(car); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestSelectByCarId() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); List<Car> carList = mapper.selectByCarId(5L); carList.forEach(car -> { System.out.println(car); }); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestSelectByIdGetMap() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); Map<String, Object> car = mapper.selectByIdGetMap(5l); System.out.println(car); SqlSessionUtil.close(sqlSession); } @org.junit.Test public void TestselectAllCar() { SqlSession sqlSession = SqlSessionUtil.openSession(); CarMapper mapper = sqlSession.getMapper(CarMapper.class); List<Map<String, Object>> maps = mapper.selectAllCar(); maps.forEach(map ->{ System.out.println(map); }); } }
本文含有隐藏内容,请 开通VIP 后查看