1.效果图:
2.Mybatis的步骤:
本内容涉及到mysql数据库,先去下载一个数据库,新建一个User表和Article表
Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong');
Drop TABLE IF EXISTS `article`; Create TABLE `article` ( `id` int(11) NOT NULL auto_increment, `userid` int(11) NOT NULL, `title` varchar(100) NOT NULL, `content` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- 添加几条测试数据 -- ----------------------------
Insert INTO `article` VALUES ('1', '1', '11111', 'dsgfd');
Insert INTO `article` VALUES ('2', '1', '22222', 'dfsdgds');
Insert INTO `article` VALUES ('3', '1', 'dddd3','dfsfsdfd');
Insert INTO `article` VALUES ('4', '1', 'ddd4', '5555');
2.1先将mybatis-3.2.7.jar和mysql-connector-java-5.1.22-bin.jar两个需要用到的jar包拷到WEB-INF下面的lib文件夹
2.2 看上图中的架构,新建包和类,按顺序新建
Article类:
package com.mybatis.model;
public class Article {
private int id;
private User user;
private String title;
private String content;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
}
package com.mybatis.model;
public class User {
private int id;
private String userName;
private String userAge;
private String userAddress;
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 getUserAge() {
return userAge;
}
public void setUserAge(String userAge) {
this.userAge = userAge;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
}
package com.mybatis.interfaces;
import com.mybatis.model.*;
import java.util.List;
public interface IUserOperation {
//定义的接口名需与User.xml里的id值要对应
public List getUserList(String userName);
public List getUserAticles(int id);
public User selectUserByID(int id);
public int insertUserInfo(User user);
public int updateUserInfo(User user);
public int deleteUserInfo(int id);
}
新建User.xml:
insert into `user`(userName,userAge,userAddress) values (#{userName},#{userAge},#{userAddress})
update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}
delete from `user` where id=#{id}
新建配置文件configuration.xml
最后开始测试,新建一个测试类:
package com.mybatis.test;
import com.mybatis.interfaces.IUserOperation;
import com.mybatis.model.User;
import com.mybatis.model.Article;
import java.io.Reader;
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 java.util.List;
public class Test {
private static SqlSessionFactory sqlFactory;
private static Reader reader;
private static User user;
private static int Ret;
/*static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方*/
static {
try {
reader = Resources.getResourceAsReader("Configuration.xml");
sqlFactory = new SqlSessionFactoryBuilder().build(reader);
} catch (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSession() {
return sqlFactory;
}
//获取用户列表
public static void GetUserList(List UserList)
{
if(UserList.size()>0){
for(User u:UserList){
System.out.println("Id:"+u.getId()+";UserName:"+u.getUserName()+";UserAge:"+u.getUserAge()+
";UserAddress:"+u.getUserAddress());
}
}
else{
System.out.println("用户不存在!");
}
}
//获取用户文章列表
public static void GetUserArticle(List articleList)
{
if(articleList.size()>0){
for(Article a:articleList){
System.out.println("UserName:"+a.getUser().getUserName()+";UserAddress:"+a.getUser().getUserAddress()+
";ArticleTitle:"+a.getTitle()+";ArticleContent:"+a.getContent());
}
}
else{
System.out.println("用户不存在!");
}
}
public static void main(String[] args) {
SqlSession session = sqlFactory.openSession();
try {
IUserOperation operation=session.getMapper(IUserOperation.class);
//新增
/*user=new User();
user.setUserName("Amyli");
user.setUserAge("20");
user.setUserAddress("Ludun BaLin");
Ret=operation.insertUserInfo(user);
if(Ret>0){
System.out.println("新增成功!");
}
else{
System.out.println("新增失败!");
}*/
//删除
/*Ret=operation.deleteUserInfo(27);
if(Ret>0){
System.out.println("删除成功!");
}
else{
System.out.println("删除失败!");
}*/
//修改
user = operation.selectUserByID(24);
user.setUserAge("23");
user.setUserAddress("Chendu SiChuan");
Ret=operation.updateUserInfo(user);
if(Ret>0){
System.out.println("修改成功!");
}
else{
System.out.println("修改失败!");
}
session.commit(); //记住,做增删改操作,一定要记得调用commit提交,否则无效。
//查询
user = operation.selectUserByID(24);
System.out.println(user.getId());
System.out.println(user.getUserName());
System.out.println(user.getUserAge());
System.out.println(user.getUserAddress());
System.out.println("");
Test.GetUserList(operation.getUserList("DaLei"));
System.out.println("文章:");
Test.GetUserArticle(operation.getUserAticles(24));
} finally {
session.close();
}
}
}
里面有好几个细节要注意,具体看代码,里面有详细注释!
Mybatis代码下载 :Mybatis代码