Mybatis基本使用(一)

实体:

public class User {

	private Long id;
	private String userName;
	private String pwd;

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

	@Override
	public String toString() {
		return "{id:" + id + ",name:" + userName + ",pwd:" + pwd + "}";
	}

}

数据表:


一、Mybatis的配置

①首先,Mybatis和hibernate一样,都有一个总的配置文件,用来记录数据库等的信息

<?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>
		<!-- 起别名,即User相当于com.bussiness.domain.User -->
		<typeAlias type="com.bussiness.domain.User" alias="User"/>
	</typeAliases>
	<!-- 以下是数据库配置信息,默认使用 -->
	<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="root" />
			</dataSource>
		</environment>
	</environments>
	<!-- 加载映射文件,相当于hibernate中的User.hbm.xml -->
	<mappers>
		<mapper resource="com/bussiness/domain/User.xml" />
	</mappers>
</configuration> 
</pre><pre class="html" name="code" snippet_file_name="blog_20140622_4_4518886" code_snippet_id="401703">②实体配置文件
<pre class="html" name="code"><?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="com.bussiness.domain.User">

	<!-- #{id}只是占位符,写成其他的也可以#{aaa} -->
	<select id="selectUserById" parameterType="long" resultMap="userMap">
		select id,name,pwd from `user` where id = #{id}
	</select>
	
</mapper>

 

二、Mybatis的增、删、查和改

1.增

<mapper namespace="com.bussiness.domain.User">
	<!-- 
		#{id},#{userName},#{pwd} 
			会对应调用实体的getId,getUserName,getPwd方法,
			然后赋值 
		parameterType:传入参数类型,此处指定的是输入User类型
	-->
	<insert id="insertUser" parameterType="com.bussiness.domain.User">
		insert into `user`(id,name,pwd) values (#{id},#{userName},#{pwd});
	</insert>
</mapper>


	/**
	 * 增加User
	 * @throws Exception
	 */
	@Test
	public void testAddUser() throws Exception{
		
		// 加载配置文件
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		// 根据配置文件创建出SessionFactory,相当于数据库连接池一样。
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
		// 获得Session,即连接
		SqlSession session = sf.openSession();
	
		User user = new User();
		user.setId(1l);
		user.setUserName("author");
		user.setPwd("123456");
		
		// 第一个参数时指定执行的是那一条sql,namespace+id可以确定一条sql
		// 第二个参数时输入的参数
		session.insert("com.bussiness.domain.User.insertUser", user);
	
		// Mybatis默认事务是开启的,所以执行增删改时候记得要commit
		session.commit();
		session.close();
	}


2.删

	<!-- 
		这里的#{aaa}只是占位符而已,表示传入的参数
	 -->
	<delete id="deleteUserById" parameterType="long">
		delete from `user` where id = #{aaa}
	</delete>


	/**
	 * 删除User id为2的记录
	 * @throws Exception
	 */
	@Test
	public void testDeleteUser () throws Exception{
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = sf.openSession();
	
		session.insert("com.bussiness.domain.User.deleteUserById", 2l);
	
		session.commit();
		session.close();
	}


3.查

      由于数据字段与实体字段不一致,那么要怎么查呢,下面先用一种比较简单的方法,数据库和实体映射匹配下一篇再涉及

①查询一条记录     

	<!-- 
		给name起别名,实体数据库和实体映射一致
		resultType:返回值类型,这里返回User类型
	 -->
	<select id="selectUserById" parameterType="long" resultType="com.bussiness.domain.User">
		select id,name as userName,pwd from `user` where id = #{aaa}
	</select>	

	/**
	 * 查询id为1的记录
	 * @throws Exception
	 */
	@Test
	public void testSelectUserById() throws Exception{
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = sf.openSession();
	
		// 查询出id 为1的记录 selectOne只能返回一条记录
		User user = session.selectOne("com.bussiness.domain.User.selectUserById", 1l);
		System.out.println(user.getUserName());
		session.close();
	}

②查询所有记录

	<!-- 
		resultType:集合中元素的类型
	 -->
	<select id="selectAllUser" resultType="com.bussiness.domain.User">
		select id,name as userName,pwd from `user`
	</select>

	<strong>/**
	 * 查询所有User
	 * @throws Exception
	 */
	@Test
	public void testSelectAll () throws Exception{
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = sf.openSession();
		// 返回一个List集合
		List<User> users = session.selectList("com.bussiness.domain.User.selectAllUser");
		System.out.println(users.size());
		session.close();
	}</strong>

4.改

	<span style="font-size:12px;"><update id="updateUserById" parameterType="com.bussiness.domain.User">
		update `user` set name=#{userName} where id = #{id}
	</update></span>

	<span style="font-size:12px;">/**
	 * 修改
	 * @throws Exception
	 */
	@Test
	public void testUpdateById() throws Exception{
		InputStream inputStream = Resources.getResourceAsStream("sqlMapConfig.xml");
		SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession session = sf.openSession();
		
		User user = new User();
		user.setId(2l);
		user.setUserName("testUpdate");
		session.update("com.bussiness.domain.User.updateUserById", user);
		
		session.commit();
		session.close();
	}</span>




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值