这种java框架自带链接池,不需要自己写,非常方便好用。
只需要三步:一个接口,一个实体类,两个配置文件。
先导包
去maven网址上找mybatis包(今天的主题)、mysql包(总要连数据库的吧)、lombok包(便捷工具):
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
导入到pom.xml然后开始操作。
1.一个接口
"一个接口"指的是一个表一个接口,数据库里每有一个表就写一个这样的接口,需要实现的功能写在里面即可。
public interface UserinfosDAO {
public List<Userinfos> findTop10();
}
2.一个实体类
封装上一些属性——表中的列名,有多少列就写多少属性,利用lombok的方法便捷构造。
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Userinfos {
private long userid;
private String username;
private Date birthday;
private String pwd;
}
3.两个配置文件
第一个配置文件:
头四行是固定的,可以设置快捷键直接敲出来。
别名方便下一个配置文件使用;连接数据库配置部分依自己连的机器修改;mapper是调取下一个配置文件的。
这个配置文件用来连接数据库。
<?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>
<!-- 给自己的实体类起别名-->
<typeAliases>
<typeAlias type="com.kgc.mymb.domain.Userinfos" alias="user"></typeAlias>
</typeAliases>
<!-- 连接数据库配置-->
<environments default="cm">
<environment id="cm">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://192.168.133.150:3306/mydemo"/>
<property name="username" value="root"/>
<property name="password" value="ok"/>
</dataSource>
</environment>
</environments>
<!-- 加载用户的sql xml文件,读一个就能找到另一个-->
<mappers>
<mapper resource="mapper/userinfos.xml"></mapper>
</mappers>
</configuration>
第二个配置文件:
写在与上一个配置文件并列的名为mapper的包里面。
这个配置文件用来写SQL语句。
<?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">
<!--这个文件专门写sql语句,就叫sql语句配置-->
<mapper namespace="com.kgc.mymb.dao.UserinfosDAO">
<!-- 告诉找哪个接口的哪个方法-->
<!-- 返回值是类的全路径,但上一个配置文件里面已经有了别名-->
<select id="findTop10" resultType="user">
select * from userinfos limit 10
</select>
</mapper>
4.如需测试,可以写测试类如下
public class Demo {
public static void main(String[] args) throws IOException {
//读取配置文件
Reader reader = Resources.getResourceAsReader("mybatiscfg.xml");
//开启SqlSessionFactory工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
//开启SqlSession
SqlSession session = factory.openSession();
//获取接口对象
UserinfosDAO udao = session.getMapper(UserinfosDAO.class);
List<Userinfos> top10 = udao.findTop10();//加一行这个,打断点debug就能看到List中的内容
System.out.println(udao.findTop10());//这样打印可能无法显示
//关闭会话
session.close();
}
}
注:实际的测试方法不是这样,需要结合Spring,这种简单测试方式可以供初学者使用。