基础知识:
1)从xml中构建SqlSessionFactory
private static SqlSessionFactory sqlSessionFactory;
static {
try {
sqlSessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsReader("Configuration.xml"));
} catch (Exception e) {
e.printStackTrace();
}
}
Resources.getResourceAsReader可以使用Resources.getResourceAsStream方法,效果是一样的
2)获取SqlSession
SqlSession session = sqlSessionFactory.openSession();
一、数据库及表创建
create database test;
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(64) NOT NULL DEFAULT '',
`dept` varchar(254) NOT NULL DEFAULT '',
`website` varchar(254) DEFAULT '',
`phone` varchar(16) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
1、Eclipse创建MyBatisProj项目
1)、导入jar包:mysql-connector-java-5.1.22-bin.jar、mybatis-3.3.0.jar
2)、src目录下创建package:com.dingxm.inter、com.dingxm.model、com.dingxm.test
3)、src目录下创建文件:Configuration.xml、dataSource.properties
三、项目文件代码
1)Configuration.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>
<properties resource="dataSource.properties" />
<typeAliases>
<typeAlias type="com.dingxm.model.User" alias="User" />
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>
<mappers>
<!-- <mapper resource="com/dingxm/model/User.xml" /> -->
<mapper class="com.dingxm.inter.IUser"/>
</mappers>
</configuration>
2).dataSource.properties
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=utf-8
username=root
password =123
driver=com.mysql.jdbc.Driver
3)User.java
package com.dingxm.model;
public class User {
private int id;
private String name;
private String dept;
private String website;
private String phone;
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 String getDept() {
return dept;
}
public void setDept(String dept) {
this.dept = dept;
}
public String getWebsite() {
return website;
}
public void setWebsite(String website) {
this.website = website;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
4)IUser.java
package com.dingxm.inter;
import java.util.List;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import com.dingxm.model.User;
public interface IUser {
@Select("select * from user where id=#{id}")
public User selectUserById(int id);
@Insert("insert into user(name,dept,website,phone) values(#{name},#{dept},#{website},#{phone})")
public void add(User user);
@Delete("delete from user where id=#{id}")
public void delete(int id);
@Update("update user set name=#{name},dept=#{dept},website=#{website},phone=#{phone} where id=#{id}")
public void update(User user);
@Select("select * from user")
public List<User> getAllUser();
@Select("select * from user where name=#{name}")
public List<User> getUserListByName(String name);
}
5)项目测试类Test
package com.dingxm.test;
import java.util.List;
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 com.dingxm.inter.IUser;
import com.dingxm.model.User;
public class MyBatisTest {
private static SqlSessionFactory sqlSessionFactory;
static {
try {
sqlSessionFactory = new SqlSessionFactoryBuilder()
.build(Resources.getResourceAsReader("Configuration.xml"));
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSession() {
return sqlSessionFactory;
}
public static void main(String[] args) {
// func1(); <span style="white-space:pre"> </span>//selectUserById 使用User.xml方式
// selectUserById(); <span style="white-space:pre"> </span>//selectUserById
// addUser(); <span style="white-space:pre"> </span>//insert
// updateUser(); <span style="white-space:pre"> </span>// update
// DeleteUser(); <span style="white-space:pre"> </span>// delete
getAllUserList(); <span style="white-space:pre"> </span>// getAllUserList
}
/**
* 获取所有User
*/
private static void getAllUserList() {
SqlSession session = sqlSessionFactory.openSession();
IUser iuser = session.getMapper(IUser.class);
List<User> list = iuser.getAllUser();
for (User user : list) {
printUser(user);
}
}
/**
* 打印user信息
*
* @param user
*/
private static void printUser(User user) {
System.out.print(user.getId() + "、 姓名:" + user.getName() + ", 部门:" + user.getDept() + ", 个人主页:"
+ user.getWebsite() + ", 联系方式:" + user.getPhone());
System.out.println();
}
/**
* 根据User.id删除User
*/
private static void DeleteUser() {
SqlSession session = sqlSessionFactory.openSession();
IUser iuser = session.getMapper(IUser.class);
try {
iuser.delete(4);
session.commit();
} finally {
session.close();
}
}
/**
* 更新User
*/
private static void updateUser() {
SqlSession session = getSession().openSession();
IUser iuser = session.getMapper(IUser.class);
try {
User user = iuser.selectUserById(2);
user.setPhone("0633-5462300");
iuser.update(user);
session.commit();
} finally {
session.close();
}
}
/**
* 向数据库表中插入一条数据
*/
private static void addUser() {// add
SqlSession session = getSession().openSession();
User user = new User();
// user.setId(3);
user.setName("Cathy");
user.setDept("VP");
user.setWebsite("http://www.risfond.com");
user.setPhone("18561979288");
IUser iuser = session.getMapper(IUser.class);
try {
iuser.add(user);
session.commit();
printUser(user);
} finally {
session.close();
}
}
/**
* 通过User.id查找User
*/
private static void selectUserById() {
SqlSession session = sqlSessionFactory.openSession();
try {
IUser iuser = session.getMapper(IUser.class);
User user = iuser.selectUserById(2);
printUser(user);
} finally {
session.close();
}
}
/**
* 通过映射文件User.xml方式根据USER ID获取User
*/
public static void func1() {
SqlSession sqlSession = getSession().openSession();
try {
User user = (User) sqlSession.selectOne("com.dingxm.model.UserMapper.selectUserById", 1);
printUser(user);
} finally {
sqlSession.close();
}
}
}
四、说明
无论是使用实体类xml映射文件还是接口注解方式,都要记得在Configuration.xml中注册一下
<mappers>
<span style="white-space:pre"> </span><!-- <mapper resource="com/dingxm/model/User.xml" /> -->
<mapper class="com.dingxm.inter.IUser"/>
</mappers>