首先是SqlMapConfig.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>
<!-- 和spring整合后environments配置将移除 -->
<environments default="development">
<environment id="development">
<!-- 使用JDBC事物管理,
事物控制由mybaties控制(和spring整合后就不是了) -->
<transactionManager type="JDBC" />
<!-- 数据库连接池,由mybaties控制(和spring整合后就不是了) -->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="1234" />
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
映射文件的配置信息:
<?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 : 命名空间,作用就是对sql进行分类管理
注意:使用mapper代理方法开发,namespace有重要特殊作用
-->
<mapper namespace="text" >
<!-- 在映射文件中可以配置很多sql语句 -->
<!--
通过select进行数据库查询
id:标识映射文件的id,称为statement的id,
将来sql语句会封装到mappdstatement对象中,所以称为statement的id
parameterType:指定输入参数类型
#{id}:表示一个占位符,其中的id表示接收输入的id,
如果输入参数是简单类型,#{}中的参数可以任意
resultType:指定sql输出结果的所映射的java对象类型,
select指定resultType表示将单条记录映射为Java对象
resultType="Bean.User":结果为Bean包下的User对象
-->
<select id="findUserById" parameterType="int" resultType="Bean.User">
SELECT * FROM USER WHERE ID=#{id}
</select>
</mapper>
Dao测试:
package dao;
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;
import org.junit.Test;
import Bean.User;
public class UserDao {
//根据ID查询用户信息,得到一条记录
@Test
public void selectUserById() throws IOException{
//mybaties配置文件
String resource = "SqlMapConfig.xml";
//获取mybaties配置文件的流
InputStream inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂,传入mybaties的配置信息
SqlSessionFactory sessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//创建一个session
SqlSession session = sessionFactory.openSession();
/**
* 通过SqlSession操作数据库:
* 第一个参数 : 映射文件中statement的id,格式:命名空间+"."+statement的id
* 第二个参数 : 指定和映射文件中所匹配的parameterType类型的参数
* session.selectOne()的结果就是与映射文件所匹配的resultType类型的对象
*/
User user = session.selectOne("text.findUserById", 1);
System.out.println(user);
//释放SqlSession资源
session.close();
}
}
日志文件基本配置log4j.properties:
log4j.rootLogger=stdout,DEBUG
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
实体Bean:
package Bean;
import java.util.Date;
public class User {
private int id;
//姓名
private String username;
//性别
private String sex;
//出生日期
private Date birthday;
//家庭住址
private String address;
public User() {
super();
}
public User(int id, String username, String sex, Date birthday,
String address) {
super();
this.id = id;
this.username = username;
this.sex = sex;
this.birthday = birthday;
this.address = address;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", sex=" + sex
+ ", birthday=" + birthday + ", address=" + address + "]";
}
}