我的本机mysql环境:springdb数据库内创建一个student表,里面有两组数据,要求用mybatis框架完成sql查询,打印出这两组数据。
可以参过以前我写的一个博客:maven配置使用,到3.2即可,后续一些步骤是配tomcat,暂时用不到。
在src目录下,把默认的main文件夹删除,添加java和resources两个文件夹,并分别将其标记为Sources Boot
和Resources Boot文件,在java文件夹中创建我们的包,如我的是cn.gs。
mysql中插入学生表,已完成
maven的pom.xml配置文件中,依赖项中加入mybatis和mysql驱动包,并在编译build里面加入扫描到.xml的配置。pom.xml详细信息如下:
<?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>cn.gs</groupId> <artifactId>mybatis-blog-test</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <name>mybatis-blog-test Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!--mysql驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> <scope>compile</scope> </dependency> <!--mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.5</version> </dependency> </dependencies> <build> <!--配置能编译.xml文件--> <resources> <resource> <directory>src/main/java</directory><!--所在的目录--> <includes><!--包括目录下的.properties,.xml 文件都会扫描到--> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build> </project> 在cn.gs下创建一个domain包,包下面创建一个Student类 public class Student { private Integer id; private String name; private String email; private Integer age; //再生成它的 toString 和 getter/setter方法 } 在cn.gs下创建一个dao包,包下面创建一个StudentDao接口 public interface StudentDao { //查询student表所有数据 public List<Student> selectStudents(); }创建mybatis的配置文件,叫做sql映射文件,文件名与接口文件名一样
即在dao包下创建StudentDao.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="cn.gs.dao.StudentDao"> <select id="selectStudents" resultType="cn.gs.domain.Student"> select id,name,email,age from Student order by id </select> </mapper> <!--namespace: 唯一值,要求你使用dao接口的全限定名称--> <!--select 表示执行查询,也可用其他,如update、delete、insert等--> <!--id: 执行sql的唯一标识,要求你使用接口中定义的方法名称--> <!--resultType:表示返会结果的类型,如我们查询得到的就是Student类,写全限定名称--> 在resources目录下创建mybatis.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> <!--环境配置 : 数据库连接信息--> <environments default="mydev"> <!-- id: 一个唯一值,自定义,表示环境名称--> <environment id="mydev"> <!-- transactionManager: mybatis的事物类型 type: JDBC(表示使用jdbc中的Connection对象的commit,rollback做事物处理)--> <transactionManager type="JDBC"/> <!-- dataSource: 表示数据源,连接数据库--> <dataSource type="POOLED"> <!--数据库的驱动类名--> <property name="driver" value="com.mysql.jdbc.Driver"/> <!--连接数据库的url字符串--> <property name="url" value="jdbc:mysql://localhost:3306/springdb"/> <!--mysql中我的用户名:root--> <property name="username" value="root"/> <!--root对应的登录密码:root--> <property name="password" value="root"/> </dataSource> </environment> <environment id="online"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/springdb"/> <property name="username" value="root"/> <property name="password" value="root"/> </dataSource> </environment> </environments> <!--sql映射文件--> <mappers> <mapper resource="cn/gs/dao/StudentDao.xml"/> </mappers> </configuration> 在cn.gs下面创建一个APP类,完成测试 public class App { public static void main( String[] args ) throws IOException { //访问mybatis读取Student数据 //1.定义mybatis主配置文件的名称,从类路径的跟开始(target/classes) String config = "mybatis.xml"; //2.读取这个config文件 InputStream is = Resources.getResourceAsStream(config); //3.创建SqlSessionFactoryBuilder对象 SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); //4.创建SqlSessionFactory对象 SqlSessionFactory factory = builder.build(is); //5.【重要】获取SqlSession对象,从SqlSessionFactory中获取 SqlSession sqlSession = factory.openSession(); //6.指定要执行的sql语句的表示,sql映射文件中的namesapce+ "." +标签的id值 String sqlId = "cn.gs.dao.StudentDao" + "." + "selectStudents"; //7.执行sql语句 List<Student> list = sqlSession.selectList(sqlId); list.forEach(stu -> System.out.println(stu)); //8.关闭SqlSession对象 sqlSession.close(); } }