在应用中,操作数据库时,我们可以定义操作数据库的接口,然后让mybatis的sql的映射文件动态实现接口中的方法,在程序中只需要调用接口的方法就可以操作数据库。示例如下
1、首先导入mybaits的jar包和数据库的jar包,此地用的是
mybatis-3.1.1.jar
mysql-connector-java-5.1.7-bin.jar
2、创建对应数据库表users的实体类User
package com.lzj.mybaits.bean;
public class User {
private int id;
private String name;
private float age;
public User() {
super();
}
public User(int id, String name, float age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getAge() {
return age;
}
public void setAge(float age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
3、创建一个接口UserDao,调用接口中的getUser方法,传入一个id值就可以读取数据库。
package com.lzj.mybatis.dao;
import com.lzj.mybaits.bean.User;
public interface UserDao {
public User getUser(int id);
}
4、创建sql的映射文件UserDaoMapper.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为UserDao接口的全类名-->
<mapper namespace="com.lzj.mybatis.dao.UserDao">
<!--getUser要与UserDao接口中的接口方法名一致-->
<!--parameterType和resultType指定的类型除了基本类型外,自定义的类要用全类名-->
<select id="getUser" parameterType="int" resultType="com.lzj.mybaits.bean.User">
select * from users where id=#{id}
</select>
</mapper>
5、创建mybatis的配置文件conf.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.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/lzj_database" />
<property name="username" value="root" />
<property name="password" value="lzjlzj" />
</dataSource>
</environment>
</environments>
<!-- 由于是在src下创建的conf文件夹,然后在conf文件夹下创建的UserMapperDao.xml映射文件,所以此地写映射文件的位置是应写conf/UserDaoMapper.xml,千万不要写/conf/UserDaoMapper.xml,否则会提示找不到UserDaoMapper.xml文件 -->
<mappers>
<mapper resource="conf/UserDaoMapper.xml"/>
</mappers>
</configuration>
6、创建测试方法
package com.lzj.mybatis.example;
import java.io.InputStream;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import com.lzj.mybaits.bean.User;
import com.lzj.mybatis.dao.UserDao;
public class MybaitsTest {
public static void main(String[] args) {
String resource = "conf.xml";
InputStream in = MybaitsTest.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
SqlSession session = factory.openSession();
/*由于UserDaoMapper.xml动态的实现了UserDao接口,所以此地通过接口去获取对应的Mapper文件,然后去调用Mapper文件中的getUer方法*/
UserDao userDao = session.getMapper(UserDao.class);
int id = 1;
User user = userDao.getUser(id);
System.out.println(user);
session.close();
}
}
工程目录如下: