Mybatis学习笔记,框架搭建 一
程序员文章站
2022-07-12 22:41:51
...
首先先展示一下搭建环境所需要的jar包
<?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.meng</groupId>
<artifactId>TestMybatis</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.21</version>
</dependency>
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
我们有mybatis包、mysql连接驱动包、log4j包、junit测试工具包。
下图是我工程的基本目录结构。。。。
下面是mybatis的配置文件
<?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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/mybatisplus"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="sql/studentMapper.xml"/>
</mappers>
</configuration>
上面的配置文件我们设置了连接mysql数据库所需要的最基本的连接参数,然后在最下面我们还指定了mapper配置文件,这种配置文件里面存放很多的sql语句。
下面的语句我们就展示的是mybatis的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.test.studentMapper">
<select id="selectStudent" resultType="com.test.Student">
select * from student where sid = #{id}
</select>
</mapper>
下面是我们的pojo类
package com.test;
public class Student {
private int sid;
private String userName;
private String age;
private String userAddress;
private String sex;
private String version;
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getVersion() {
return version;
}
public void setVersion(String version) {
this.version = version;
}
@Override
public String toString() {
return "Student{" +
"sid=" + sid +
", userName='" + userName + '\'' +
", age='" + age + '\'' +
", userAddress='" + userAddress + '\'' +
", sex='" + sex + '\'' +
", version='" + version + '\'' +
'}';
}
public Student() {
}
public Student(int sid, String userName, String age, String userAddress, String sex, String version) {
this.sid = sid;
this.userName = userName;
this.age = age;
this.userAddress = userAddress;
this.sex = sex;
this.version = version;
}
}
log4j日志配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true" xmlns:log4j='http://jakarta.apache.org/log4j/' >
<!-- ========================== 自定义输出格式说明================================ -->
<!-- %p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL -->
<!-- %r 输出自应用启动到输出该log信息耗费的毫秒数 -->
<!-- %c 输出所属的类目,通常就是所在类的全名 -->
<!-- %t 输出产生该日志事件的线程名 -->
<!-- %n 输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” -->
<!-- %d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921 -->
<!-- %l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlo4.main(TestLog4.java:10) -->
<!-- ========================================================================== -->
<!-- ========================== 输出方式说明================================ -->
<!-- Log4j提供的appender有以下几种: -->
<!-- org.apache.log4j.ConsoleAppender(控制台), -->
<!-- org.apache.log4j.FileAppender(文件), -->
<!-- org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件), -->
<!-- org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), -->
<!-- org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方) -->
<!-- ========================================================================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
<!-- <param name="Target" value="System.out"/> -->
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c Method: %l ]%n%p:%m%n"/>
</layout>
<!-- <filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="DEBUG"/>
</filter> -->
</appender>
<root>
<priority value="debug"/>
<appender-ref ref="CONSOLE" />
<appender-ref ref="log4jDebug" />
<appender-ref ref="log4jInfo" />
<appender-ref ref="log4jWarn" />
<appender-ref ref="log4jError" />
<!-- <appender-ref ref="MAIL" /> -->
</root>
</log4j:configuration>
下面就是我们的测试类了。
@Test
public void test01() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
Student student = sqlSession.selectOne("com.test.studentMapper.selectStudent",1);
System.out.println(student);
sqlSession.close();
inputStream.close();
}
运行成功没有报错的话说明mybatis框架的最简单是使用我们已经完成了。
下面我们写一下接口式编程:
package com.test.mapper;
import com.test.Student;
public interface StudentMapper {
public Student findStudentAll(Integer sid);
}
首先我们定义一个接口。
<?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">
<!-- 其中需要注意的是namespace一定要与mapper接口的类的全路径对应,否则是不行的 -->
<mapper namespace="com.test.mapper.StudentMapper">
<!-- id要与接口的方法名称一致,返回值要与接口定义的返回值一致 -->
<select id="findStudentAll" resultType="com.test.Student">
SELECT * from student where sid = #{sid}
</select>
</mapper>
然后我们定义了一个mapper配置文件,其中需要注意的是一定要与mapper接口的类的全路径对应,id要与接口的方法名称一致,返回值要与接口定义的返回值一致。
@Test
public void test02() throws Exception{
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession();
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper.class);
Student stu = studentMapper.findStudentAll(1);
System.out.println(stu);
sqlSession.close();
inputStream.close();
}
上面的代码是一个测试类,其中我们用接口的方式就是用getMapper获取接口,然后调用接口的方法,就可以实现想要的操作。这里使用了动态代理的方式。
上一篇: JQuery动态绑定 事件 点击事件无效
下一篇: Vue子组件绑定事件无效