先导驱动,数据库的和MyBatis的,sql的找不到了,切记要导入或者写log4j.properties文件
然后第一步,写一个小的pojo类,这个没啥说的,对应数据库里的字段,
package pojo;
public class Role {
private String id;
private String text;
private String un;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getUn() {
return un;
}
public void setUn(String un) {
this.un = un;
}
}
然后写RoleMapper接口,这个是要写需要完成的逻辑功能的名字,也没啥说的
package mapper;
import java.util.List;
import pojo.Role;
public interface RoleMapper {
public int insertRole(Role r);
public int updateRole(Role r);
public int deleteRole(String id);
public Role getRole(Long l);
public List<Role> findRole();
}
然后配置RoleMapper.xml文件,注意,这个mapper里的namespace写上面接口的全限定名,insert等操作的名称也需要和接口里的方法名对应
<?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="mapper.RoleMapper"><!--这个namespace对应的就是接口的全限定名-->
<insert id="insetRole" parameterType="role">
insert into test(id,text,un) values(#{roleName},#{roleText});
</insert>
<select id="findRole" resultType="role">
select * from test;
</select>
</mapper>
然后配置MyBatis-config文件,最应该注意的是在没提示的情况下的单词拼写,跑了好几遍,都是单词错了
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases><!--别名-->
<typeAlias alias="role" type="pojo.Role"/>
</typeAliases>
<!--数据库环境-->
<environments default="developmen">
<environment id="developmen">
<transactionManager type="JDBC"/><!--代表MyBatis内部提供的数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?Unicode=true&characterEncoding=utf8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<mappers ><!--这个代表了映射到RoleMapper.xml里-->
<mapper resource="mapper/RoleMapper.xml"/>
</mappers>
</configuration>
然后写单例的工厂
package utils;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class SqlSessionFactoryUtil {
private final static Class<SqlSessionFactoryUtil> lock = SqlSessionFactoryUtil.class;
private static SqlSessionFactory sessionFactory = null;
private SqlSessionFactoryUtil() {}
public static SqlSessionFactory getSqlSessionFactory(){
synchronized (lock) {
if(sessionFactory!=null){
return sessionFactory;
}
String resource="mybatis/mybatis-config.xml";
InputStream inputStream;
try {
inputStream= Resources.getResourceAsStream(resource);
sessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return sessionFactory;
}
public static SqlSession openSqlSession(){
if(sessionFactory==null){
getSqlSessionFactory();
}
return sessionFactory.openSession();
}
}
测试类
package main;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import mapper.RoleMapper;
import pojo.Role;
import utils.SqlSessionFactoryUtil;
public class Main {
public static void main(String[] args) {
Logger log = Logger.getLogger(Main.class);//这个应该是记录的
SqlSession sqlSession = null;
try{
sqlSession = SqlSessionFactoryUtil.openSqlSession();
RoleMapper mapper = sqlSession.getMapper(RoleMapper.class);
//Role role = mapper.getRole(1L);//这么写会报错,至于为啥呢,因为我懒,没在RoleMapper里写啊
Role role = mapper.findRole().get(0);
log.info(role);
//log.info(role.getId());
}finally{
if(sqlSession!=null){
sqlSession.close();
}
}
}
}
---------------------------------------------------------------------------------------分割线,输出结果 部分-------------------------------------------------------------------------------------------------------------
INFO - pojo.Role@627551fb
到这里一个简单地MyBatis测试就完成了,还是用了我一上午时间学习,接下来就是理论的了,痛苦T^T