這里用mysql作為測(cè)試
需要的依賴包 mybatis-3.5.7.jar鼓蜒,mysql-connector-java-8.0.24.jar
使用xml配置
項(xiàng)目結(jié)構(gòu)
image.png
Teacher.java是簡(jiǎn)單的java bean
Main.java代碼如下
package com.ly1;
import com.ly1.entity.Teacher;
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;
import java.io.InputStream;
public class Main {
public static void main(String[] args) throws IOException {
/*final InputStream resourceAsStream =
Main.class.getResourceAsStream("/mappings/mybatis-config.xml");
Scanner scanner=new Scanner(resourceAsStream);
while (scanner.hasNextLine()){
System.out.println(scanner.nextLine());
}*/
String id="1";
if(args.length==1){
id=args[0] ;
}
String resource = "mappings/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(
resource
);
//或者下面形式也是可以的,注意地址
/*resource = "/mappings/mybatis-config.xml";
inputStream = Main.class.getResourceAsStream(
resource
);*/
SqlSessionFactory sqlSessionFactory
= new SqlSessionFactoryBuilder().build(inputStream);
//從factory中獲取sqlSession的實(shí)例
try(SqlSession sqlSession=sqlSessionFactory.openSession()){
long time1=System.currentTimeMillis();
Teacher teacher= sqlSession.selectOne(
"org.mybatis1.example.TeacherMapper.selectTeacher",
id);
long time2=System.currentTimeMillis();
//這里可能是由于第一次連接數(shù)據(jù)庫(kù)需要耗費(fèi)一些時(shí)間
System.out.println("第一次查詢使用了"+(time2-time1)+"毫秒");//700+
time1=System.currentTimeMillis();
Teacher teacher2= sqlSession.selectOne(
"org.mybatis1.example.TeacherMapper.selectTeacher",
3);
time2=System.currentTimeMillis();
System.out.println("第二次查詢使用了"+(time2-time1)+"毫秒");//1ms
System.out.println(teacher2);
}
}
}
注意购裙,這里的org.mybatis1.example.TeacherMapper對(duì)應(yīng)的是mapper里面的namespace
TeacherMapper.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">
<!--這里namespace可以隨便寫(xiě)-->
<mapper namespace="org.mybatis1.example.TeacherMapper">
<select id="selectTeacher" resultType="com.ly1.entity.Teacher">
select * from teacher where id = #{id}
</select>
</mapper>
mybatis-config.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="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://127.0.0.1:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="test.lwm"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--注意廓推,這里的地址要寫(xiě)resources下的絕對(duì)地址火窒,不能寫(xiě)相對(duì)地址-->
<mapper resource="mappings\org\mybatis\example\TeacherMapper.xml" />
</mappers>
</configuration>
稍微更改聊倔,使用Mapper注解進(jìn)行映射
在mybatis-config.xml中寫(xiě)上要掃描的包(mappers標(biāo)簽中)
<mappers>
<!--注意,這里的地址要寫(xiě)resources下的絕對(duì)地址恋拷,不能寫(xiě)相對(duì)地址-->
<mapper resource="mappings\org\mybatis\example\TeacherMapper.xml" />
<!--注明要掃描的包-->
<package name="com.ly1.mappers" />
</mappers>
新增加的代碼
image.png
TeacherMapper.java
package com.ly1.mappers;
import com.ly1.entity.Teacher;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface TeacherMapper {
@Select("select * from teacher where id = #{id}")
Teacher selectTeacher(@Param("id")String id);
}
使用Main.java文件中)
//使用注解
System.out.println("使用注解進(jìn)行查詢~");
TeacherMapper teacherMapper=sqlSession.getMapper(TeacherMapper.class);
final Teacher teacher2 = teacherMapper.selectTeacher("4");
System.out.println(teacher2);
//替代了原先的使用語(yǔ)句,如下
/*Teacher teacher1= sqlSession.selectOne(
"org.mybatis1.example.TeacherMapper.selectTeacher",
3);*/