mybatis简单案例体验

package cn.itcast.mybatis.domain;

public class User {
	private String id;
	private String name;
	private Integer age;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", age=" + age
				+ ", address=" + address + "]";
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	private String address;

}
<?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的值是可以随意的,只要保证唯一性就可以了,不要和要test类里面的对应 -->
<mapper namespace="cn.itcast.mybatis.domain.User">
	<sql id="cols">
		id,name,age,address
	</sql>
	<sql id="ucols">
		name=#{name},age=#{age},address=#{address}
	</sql>

	<!-- 查询所有记录 id值是可以随意的,只是用来标识而已-->
	<!-- resultType仍然是User类,会自动封装到list集合里面去-->
	<select id="listAll" resultType="xUser">
		select <include refid="cols"/> from user_c
	</select>
	
	<!--
		 按条件查询   parameterType本来填cn.itcast.mybatis.domain.User
		可以通过在sqlMapConfig.xml写别名来简化,是全局的
	-->
	<select id="find" parameterType="xUser" resultType="xUser">
		select * from user_c 
		<where>
		<if test="name!=null">
			and name like "%"#{name}"%"
		</if>
		<if test="age!=null">
			and age=#{age}
		</if>
		</where>
	</select>
	
	<!-- 查询一个用户 -->
	<select id="get" parameterType="string" resultType="xUser">
		<!-- 可以把字段id,name,age,address提取出来,便于复用 -->
		select <include refid="cols"/> from user_c where id=#{id}
	</select>
	
	<!-- 新增 -->
	<insert id="create" parameterType="xUser">
		insert into user_c (id,name,age,address) values(#{id},#{name},#{age},#{address})
	</insert>
	
	<!-- 修改 -->
	<update id="update" parameterType="xUser">
		update user_c
		 <set>
			 <if test="name!=null">
			 	name=#{name},
			 </if>
			 <if test="age!=null">
			 	age=#{age},
			 </if>
			 <if test="address!=null">
			 	address=#{address},
			 </if>
		 </set>
		 
		where id=#{id}
	</update>
	
	<!-- 删除 ,如果是多条件删除的话,同样是传递User-->
	<delete id="delete" parameterType="string">
		delete from user_c where id=#{id}
	</delete>
</mapper>



package test;

import java.io.InputStream;
import java.util.List;
import java.util.UUID;

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.junit.Before;
import org.junit.Test;

import cn.itcast.mybatis.domain.User;


public class TestMybatis {
	SqlSessionFactory sqlSessionFactory;

	@Before
	public void initFactory() throws Exception{
		String resource = "sqlMapConfig.xml";

		InputStream inputStream = Resources.getResourceAsStream(resource);

		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}
	
	@Test //查询所有
	public void testListAll(){
		SqlSession session = sqlSessionFactory.openSession();
		//通过命名空间+id来说明要找xml配置文件里面的那个,所以User.java和User.xml的名字可以不一致
		List<User> users = session.selectList("cn.itcast.mybatis.domain.User.listAll");
		
		System.out.println(users.size());
	}
	
	@Test //按条件查询
	public void testFind(){
		SqlSession session = sqlSessionFactory.openSession();
		User u = new User();
		u.setName("d");
		
		List<User> users = session.selectList("cn.itcast.mybatis.domain.User.find",u);
		System.out.println(users.size());
	}
	
	@Test //查询一条
	public void testGet(){
		SqlSession session = sqlSessionFactory.openSession();
		User u = session.selectOne("cn.itcast.mybatis.domain.User.get","2");
		System.out.println(u);
	}
	
	@Test	//新增  除了查询都需要commit
	public void testCreate(){
		SqlSession session = sqlSessionFactory.openSession();
		User u = new User();
		u.setId(UUID.randomUUID().toString());
		u.setName("tonyxx");
		u.setAge(23);
		u.setAddress("shanghaixx");
		
		int i = session.insert("cn.itcast.mybatis.domain.User.create",u);
		//没有提交的话就不会真的存放到数据库中
		session.commit();
		System.out.println(i);
	}
	
	@Test //修改  除了查询都需要commit
	public void testUpdate(){
		SqlSession session = sqlSessionFactory.openSession();
//		User u = session.selectOne("cn.itcast.mybatis.domain.User.get","6");
//		u.setName("rose");
//		u.setAge(30);
		
		User u = new User();
		u.setId("6");
		u.setName("rosexx");
		
		int i = session.update("cn.itcast.mybatis.domain.User.update",u);
		session.commit();
		System.out.println(i);
	}
	
	@Test //删除  除了查询都需要commit
	public void testDelete(){
		SqlSession session = sqlSessionFactory.openSession();
		int i = session.delete("cn.itcast.mybatis.domain.User.delete","74467fde-c2f7-4e9e-a6c9-c28d13476119");
		session.commit();
		System.out.println(i);
	}

}



<?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>
		<typeAlias type="cn.itcast.mybatis.domain.User" alias="xUser"/>
	</typeAliases>
	
	<environments default="development">
		<!-- id不是一定要和default的值一样 -->
		<environment id="development">
			<!-- 事务管理交给jdbc -->
			<transactionManager type="JDBC"/>
			<!-- 使用pooled连接池,或者不使用连接池,或者jndi远程连接池 -->
			<dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatisdb?characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
			</dataSource>
		</environment>
	</environments>
	
	<mappers>
		<!-- User不一定是实体文件名字,可以是乱起的 -->
		<mapper resource="cn/itcast/mybatis/domain/User.xml"/>
	</mappers>
</configuration>



转载于:https://my.oschina.net/u/2356176/blog/469506

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值