Mybatis是javaweb开发中数据持久层使用的一个框架,它是一个不完全的ORM框架,这是它和Hibernate的区别之一,下面总结一下Mybatis框架的简单使用。
一、开发环境的准备
最基本的环境就是java开发环境,所以必有得有JDK开发工具包,因为是操作数据库的,所以必须要有数据库,这里使用的是Mysql数据库,还有一些相应的jar包和一个集成开发工具(MyEclipse或Eclipse)就可以了,下面是需要用到的jar包:
其中包含mysql数据库链接包和mybatis的一些依赖包。
二、数据库准备
这里需要在mysql中创建一个数据库mybatis,然后创建一张表user:
三、Mybatis框架的使用
1.配置SqlMapConfig.xml
使用Mybatis需要先写好相应的配置文件,这里的配置文件有全局配置文SqlMapConfig.xml,它的作用一个是配置好数据库环境,包括数据库驱动,url,用户名和密码等,另一个就是配置相应的数据库映射文件了。
<?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/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
</configuration>
2.编写Bean类
public class User {
private int id;
private String username;
private String sex;
private Date birthday;
private String 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 + "]";
}
}
3.配置User.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">
<mapper namespace="test">
<select id="findUserById" parameterType="int" resultType="com.li.mybatis.po.User">
SELECT * FROM USER WHERE id=#{value}
</select>
<select id="findUserByName" parameterType="java.lang.String" resultType="com.li.mybatis.po.User">
SELECT * FROM USER WHERE username like '%${value}%'
</select>
<insert id="insertUser" parameterType="com.li.mybatis.po.User">
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into user(username,birthday,sex,address) value(#{username},#{birthday},#{sex},#{address})
</insert>
<delete id="deleteUser" parameterType="java.lang.Integer" >
delete from user where id=#{id}
</delete>
<update id="updateUser" parameterType="com.li.mybatis.po.User">
update user set username=#{username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id}
</update>
</mapper>
这里已经写好了几个简单的数据库操作映射,包括对用户的增删改查。
4.在SqlMapConfig.xml中配置User.xml映射
<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/mybatis"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<!-- 加载映射文件 -->
<mappers>
<mapper resource="sqlmap/User.xml"/>
</mappers>
</configuration>
5.编写测试类
//根据id查询用户的信息
@Test
public void getUserById(){
String resource = "SqlMapConfig.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//获取会话
SqlSession sqlSession = sqlSessionFactory.openSession();
//操作数据库
User user = (User) sqlSession.selectOne("test.findUserById", 1);
System.out.println(user.toString());
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//根据用户名称模糊查询
@Test
public void getUserByName(){
String resource = "SqlMapConfig.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//获取会话
SqlSession sqlSession = sqlSessionFactory.openSession();
//操作数据库
List<User> userList = sqlSession.selectList("test.findUserByName", "江博");
System.out.println(userList.toString());
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//添加用户
@Test
public void insertUser(){
String resource = "SqlMapConfig.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//获取会话
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setAddress("测试地址");
user.setBirthday(new Date());
user.setSex("母");
user.setUsername("愿宝宝");
//操作数据库
sqlSession.insert("test.insertUser", user);
sqlSession.commit();
System.out.println(user.getId());
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//更新用户
@Test
public void updateUser(){
String resource = "SqlMapConfig.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//获取会话
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setId(3);
user.setAddress("测试地址");
user.setBirthday(new Date());
user.setSex("母");
user.setUsername("愿宝宝");
//操作数据库
sqlSession.update("test.updateUser", user);
sqlSession.commit();
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//删除用户
@Test
public void deleteUser(){
String resource = "SqlMapConfig.xml";
InputStream inputStream;
try {
inputStream = Resources.getResourceAsStream(resource);
//创建会话工厂
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
//获取会话
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User();
user.setAddress("测试地址");
user.setBirthday(new Date());
user.setSex("母");
user.setUsername("愿宝宝");
//操作数据库
sqlSession.delete("test.deleteUser", 2);
sqlSession.commit();
sqlSession.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
以上就是Mybatis框架的简单使用步骤,可以在熟练使用的基础上再加以进一步的理解和应用。