mybatis入门案例

mybatis入门案例

主要目的:CRUD实现, 在实际项目中mybatis的使用

创建项目

  1. 创建项目 ,新建一个Maven Project,在Create a simple project(skip archetype selection)前的框框打上对勾,再点击下一步,Groupid—组名:指当前项目属于哪个分组,通常组名定义格式为:域名倒置+模块化;Atrifactid—项目名:不是整体的项目名称(可以还是模块,针对模块重新命子项目名称);Version—版本:可自行选择,本次所选1.1;Packaging—设置项目的本质属于哪一种项目(eg java项目(jar),web项目(war),父项目(pom))本项目选择war(跟原生态jdbc作比较);
  2. 引入jar包在pom.xml文件中实现配置,而maven通过配置加载jar包(下载、引入),
 <!-- 配置,告诉maven项目需要什么jar包 -->
  <dependencies>
  <dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>3.4.6</version>
  </dependency>
  
  <dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>5.1.47</version>
  </dependency>
  
  <!-- 用于测试 -->
   <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.12</version>
  <scope>test</scope>
  </dependency>
  </dependencies>
  1. 需求:实现国家表的查询,对应表的类—实体类
  2. 创建两种配置文件:核心文件、映射文件
    核心文件中关键的配置:驱动、url–找到数据库的路径、用户名、密码;
    映射文件中关键的配置是SQL语句
    5.测试.与数据库的连接、发送的SQL语句数据库是否能够收到、查询结果是否能够获取回来(从程序发送SQL到数据库–可能有参数,数据库接收到SQL做出处理、处理结果送回程序)

CRUD

C----create(insert)—增加操作

实体类不变

//和country表一一对应

public class Country {
	//类中的属性和表中的字段一一对应
	private Integer cid;//id
	private String cname;//名称
	private String caddress;//地址
	public Integer getCid() {
		return cid;
	}
	public void setCid(Integer cid) {
		this.cid = cid;
	}
	public String getCname() {
		return cname;
	}
	public void setCname(String cname) {
		this.cname = cname;
	}
	public String getCaddress() {
		return caddress;
	}
	public void setCaddress(String caddress) {
		this.caddress = caddress;
	}
	
}

核心文件不变

<environments default="development">
  	<!-- 环境 -->
    <environment id="development">
      <transactionManager type="JDBC"/>
      <dataSource type="POOLED">
      	<!-- 如果mysql数据库是8.0之上,那么驱动也要设置相应的 -->
        <property name="driver" value="com.mysql.jdbc.Driver"/>
        <!-- 指定要连接的数据库 -->
        <!-- 如果有同学的mysql数据库是8.0以上版本,注意?后面的参数项要多添加一个时区配置项 -->
        <property name="url" value="jdbc:mysql://localhost:3306/test1?characterEncoding=utf8"/>
        <!-- 数据库登录时的用户名和密码 -->
        <property name="username" value="root"/>
        <property name="password" value=""/>
      </dataSource>
    </environment>
  </environments>
  <!-- 加载映射文件,把映射文件加载到核心文件中来,读取核心文件的同时映射文件的内容也会被读取到 -->
  <mappers>
    <mapper resource="mappers/country.xml"/>
  </mappers>

映射文件

<mapper namespace="country">

	<!-- 增加操作 -->
	<!-- 把新增操作的值(数据),考虑保存到一个对象中(可以在程序中操作对象),然后把对象传入到此处,从对象中的属性中获取到值,传递到对应的位置 -->
	<!-- parameterType属性的作用是指定传入数据时,封装数据的对象所属的类型 -->
	<!-- 占位符 -->
	<insert id="insertCountry" parameterType="com.offcn.bean.Country">
		insert into country(cname,caddress) value(#{cname},#{caddress})
	</insert>
</mapper> 

测试

@Test
	public void insertTest() throws IOException{
		String name = "mybatis-config.xml";
		InputStream is = Resources.getResourceAsStream(name);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		SqlSession session = factory.openSession();
		
		//准备数据
		Country cou = new Country();
		cou.setCname("东晋");
		cou.setCaddress("南京");
		//第一个参数指定SQL语句的位置
		session.insert("country.insertCountry", cou);
		
		//提交---手动提交,mybatis框架会先把自动提交关闭,然后手动提交结束之后再重新开启自动提交
		session.commit();
		session.close();
	}

D—delete—删除:按照id实现删除

映射文件的配置

<!-- 删除操作 -->
	<!-- 按照iD删除 -->
	<delete id="deleteById" parameterType="int">
		delete from country where cid = #{id}
	</delete>

测试

//删除测试
	@Test
	public void deleteTest() throws IOException{
		String name = "mybatis-config.xml";
		InputStream is = Resources.getResourceAsStream(name);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		SqlSession session = factory.openSession();
		
		//条件值只有一个,不需要封装对象中
		session.delete("country.deleteById", 7);
		
		session.commit();
		session.close();
	}

U—update—修改操作:按照id实现数据的修改

映射文件配置

<!-- 修改操作 -->
	<!-- 按照id实现修改数据 -->
	<update id="updateCountryById" parameterType="com.offcn.bean.Country">
		update country set cname = #{cname},caddress = #{caddress}	where cid = #{cid}
	</update>

测试

//修改测试
	@Test
	public void updateTest() throws IOException{
		String name = "mybatis-config.xml";
		InputStream is = Resources.getResourceAsStream(name);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		SqlSession session = factory.openSession();
		
		Country cou = new Country();
		cou.setCid(3);
		cou.setCname("吴");
		cou.setCaddress("建康");
		//条件值只有一个,不需要封装对象中
		session.update("country.updateCountryById", cou);
		
		session.commit();
		session.close();
	}

R—retrieve(select)—查询:按照id实现查询

映射文件配置

<!-- 按照id查询数据 -->
	<select id="selectCountryById" parameterType="int" resultType="com.offcn.bean.Country">
		select * from country where cid = #{id}
	</select>

测试

@Test
	public void selectByIdTest() throws IOException{
		String name = "mybatis-config.xml";
		InputStream is = Resources.getResourceAsStream(name);
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		SqlSession session = factory.openSession();
		
		//条件值只有一个,不需要封装对象中
		Country c = session.selectOne("country.selectCountryById", 1);
		System.out.println(c.getCid() + "--" + c.getCname() + "--" + c.getCaddress());
		
		session.commit();
		session.close();
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值