mybatis快速使用

1.项目结构:


2.代码:

1.User.java,Article.java:两个用到的javabean
package com.mybatis.bean;

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.bean;

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;
	}
}

2.mybatis通过接口去执行CRUD,没有实现类,对应XML配置文件,实现接口方法:IUserOperation.java
package com.mybatis.service;

import java.util.List;

import com.mybatis.bean.Article;
import com.mybatis.bean.User;

public interface IUserOperation {
	
	public User selectUserById(int id);
	public List selectUsers(String userName);
	public void addUser(User user);
	public void updateUser(User user);
	public void deleteUser(int id);
	public List<Article> getUserArticles(int userid);
}

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">
	<!-- namespace="com.mybatis.bean.UserMapper com.mybatis.service.IUserOperation"  -->
<!-- mapepr参数,namespace 对应接口   以下用到的 User 在Configuration.xml配置文件进行了匹配处理类-->	
<mapper namespace="com.mybatis.service.IUserOperation" >  
	<!-- id 对应接口 方法名  parameterType传入参数类型   resultType返回值类型-->
	<select id="selectUserById" parameterType="int" resultType="User">
		select * from user where id = #{id}
	</select>
	
	<!-- 定义返回值集合对象  通过id引用 -->
	<resultMap type="User" id="resultListUser">
		<id column="id" property="id"/>
		<result column="userName" property="userName"/>
		<result column="userAge" property="userAge"/>
		<result column="userAddress" property="	"/>
	</resultMap>
	<!--查询集合  传入string 返回map,上面声明的map-->
	<select id="selectUsers" parameterType="string" resultMap="resultListUser">
		select * from user where userName like #{userName}
	</select>
	
	
	<!-- useGeneratedKeys="true" keyProperty="id"绑定key列,自动创建 -->
	<insert  id="addUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
		insert into user(userName,userAge,userAddress)
		values(#{userName},#{userAge},#{userAddress})
	</insert>
	
	<update id="updateUser" parameterType="User">
		update user set userName=#{userName},userAge=#{userAge},userAddress=#{userAddress} where id=#{id}
	</update>
	
	<delete id="deleteUser" parameterType="int">
		delete from user where id=#{id}
	</delete>
	
	<!-- 多对一查询  注意 id和aid -->	
	<resultMap type="Article" id="resultUserArticleList">
		<id property="id" column="aid"/>
		<result property="title" column="title"/>
		<result property="content" column="content"/>
		<!-- association处理多对一的关系 多本书 一个作者 -->
		<association property="user" javaType="User">
			<id property="id" column="id"/>
			<result column="userName" property="userName"/>
			<result column="userAge" property="userAge"/>
			<result column="userAddress" property="userAddress"/>
		</association>
	</resultMap>  
	<select id="getUserArticles" parameterType="int" resultMap="resultUserArticleList">
		select user.id,user.userAge,user.userName,user.userAddress,article.id aid,article.title,article.content from user,article 
                where user.id=article.userid and user.id=#{id}
	</select>
</mapper>

4.Mybatis配置文件: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>
	<!-- 匹配别名和处理类  -->
	<typeAliases>
		<!--alias可选,默认为类名,type必须 -->
		<typeAlias  alias="User"  type="com.mybatis.bean.User"/>
		<typeAlias type="com.mybatis.bean.Article"/>
	</typeAliases>
	<!-- 配置数据库连接 -->
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC"></transactionManager>
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver"/>
				<property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis?useUnicode=true&characterEncoding=UTF-8"/>
				<property name="username" value="root"/>
				<property name="password" value="root"/>
			</dataSource>
		</environment>
	</environments>
	<!--导入mapper User.xml  -->
	<mappers>
		<mapper resource="com/mybatis/bean/User.xml"/>
	</mappers>
	
</configuration>

5.测试:UserTest.java:
package com.junit.test;

import static org.junit.Assert.*;

import java.io.IOException;
import java.io.Reader;
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 org.apache.naming.resources.Resource;
import org.junit.Before;
import org.junit.Test;

import com.mybatis.bean.Article;
import com.mybatis.bean.User;
import com.mybatis.service.IUserOperation;

public class UserTest {

	private static SqlSessionFactory sqlSessionFactory ;
	private static Reader reader;
	
	static{
		try {
			reader = Resources.getResourceAsReader("Configuration.xml");
			sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	public static SqlSessionFactory getSession(){
		return sqlSessionFactory;
	}
。。。。。
。。。。。
}
加载配置文件,获取sqlsessionfactory对象

	@Test
	public void test() {
		SqlSession session = sqlSessionFactory.openSession();
		/*User user = session.selectOne("com.mybatis.bean.UserMapper.selectUserById", 1);*/
		
		IUserOperation userOperation=session.getMapper(IUserOperation.class);
		User user = userOperation.selectUserById(1);
		System.out.println(user.getUserAddress());
		System.out.println(user.getUserName());
		session.close();
	}
通过session的getMapper(xxx.class)获取接口对象xxx,通过接口方法直接操作。
还有一种方式改User.xml的
namespace="com.mybatis.bean.UserMapper
再在test()中:直接获取 传入 包名.namespace.id + id
User user = session.selectOne("com.mybatis.bean.UserMapper.selectUserById", 1);
获取集合:
	@Test
	public void getUserList(){
        SqlSession session = sqlSessionFactory.openSession();
        try {
            IUserOperation userOperation=session.getMapper(IUserOperation.class);           
            List<User> users = userOperation.selectUsers("%");
            for(User user:users){
                System.out.println(user.getId()+":"+user.getUserName()+":"+user.getUserAddress());
            }

        } finally {
            session.close();
        }
    }
添加:要commit
@Test
	public void addUser(){
		User user = new User();
		user.setUserAddress("东京不热");
		user.setUserName("藏进一空");
		user.setUserAge("18");
		SqlSession session= sqlSessionFactory.openSession();
		IUserOperation userOperation = session.getMapper(IUserOperation.class);
		userOperation.addUser(user);
		session.commit();
		System.out.println("当前增加的用户为:"+user.getId()+" "+user.getUserAddress());
		session.close();
	}
更新:先获取对象再修改保存,commit
	@Test
	public void update(){
		SqlSession session = sqlSessionFactory.openSession();
		IUserOperation userOperation = session.getMapper(IUserOperation.class);
		User user = userOperation.selectUserById(2);
		user.setUserName("巨像");
		user.setUserAge("19");
		user.setUserAddress("aaaaa");
		userOperation.updateUser(user);
		session.commit();
		session.close();
	}
删除:传id:
	@Test
	public void deleteUser(){
		SqlSession session = sqlSessionFactory.openSession();
		IUserOperation userOperation = session.getMapper(IUserOperation.class);
		userOperation.deleteUser(12);
		session.commit();
		session.close();
	}

获取多对一集合:传入user.id
	@Test
	public void getUserArticles(){
        SqlSession session = sqlSessionFactory.openSession();
        try {
            IUserOperation userOperation=session.getMapper(IUserOperation.class);           
            List<Article> articles = userOperation.getUserArticles(1);
            for(Article article:articles){
                System.out.println(article.getTitle()+":"+article.getContent()+
                        ":作者是:"+article.getUser().getUserName()+":地址:"+
                         article.getUser().getUserAddress());
            }
        } finally {
            session.close();
        }
    }
}



3.总结:

1.创建mybatis配置文件:数据库连接、别名类匹配、以及导入之后创建的mapper XML

2.创建对象javabean,并根据需求配置javabean的mapper操作XML文件

3.创建操作接口,对应mapper内的 id、传入值名称和类型

4.通过加载配置文件获取sqlsessionfactory对象,在获取session,通过session.getMapper(xxx.class) 获取操作接口类对象xxx,通过接口方法直接执行CRUD.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值