mybatis学习1

今天是第一天学习mybatis,mybatis是针对dao(持久层的)一种框架
首先进行核心文件配置,文件名:SqlMapConfig.xml

添加config约束及配置数据库代码,引入语句执行文件(statement),这里语句文件名为user1.xml
SqlMapConfig.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>
	<!-- 和spring整合后 environments配置将废除 -->
	<environments default="development">
		<environment id="development">
			<!-- 使用jdbc事务管理 -->
			<transactionManager type="JDBC" />
			<!-- 数据库连接池 -->
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url"
					value="jdbc:mysql://localhost:3307/mybits?characterEncoding=utf-8" />
				<property name="username" value="root" />
				<property name="password" value="513721abcd" />
			</dataSource>
		</environment>
	</environments>
	<mappers><!-- 引入语句执行文件 -->
		<mapper resource="user1.xml" />
	</mappers>
</configuration>

user1.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">
<!--写SQL语句 -->
<mapper namespace="demo1.User1Mapper"><!--namespace用来区分不同此类配置文件下的语句id  -->
<!--parameterType是传入参数的类型。resultType是返回类型,注意:假设数据库返回的是一个对象集合,
这里resultType是指的这个对象,而不是对象集合  -->
	<select id="findbyid" parameterType="Integer" resultType="demo1.User1">
		select *from user where id=#{v} <!-- v可以换成任意值 -->
	</select>
	<!-- #{}: 占位符是字符串时是自带单引号的 select *from user where username=? ?=='?' ?可以直接取值字符串,如张三 
		${}:select * from username like '%${}%' 字符串拼接,不自带单引号 ,如 '%张%',在语句中要写单引号 -->
	<select id="findbyusername" parameterType="String" resultType="demo1.User1">
		select *from user where username like '%${value}%' <!-- 大括号内只能填value -->
		<!--或者 : select *from user where username like "%"#{v}"%" (防注入写法) -->
	</select>
	<insert id="insert" parameterType="demo1.User1">
		<selectKey keyProperty="id" resultType="Integer" order="AFTER">
			select last_insert_id()
		</selectKey>
		insert into user (username,birthday,address,sex)
		values (#{username},#{birthday},#{address},#{sex})
	</insert>
	<update id="update" parameterType="demo1.User1">
		update user set
		username=#{username},birthday=#{birthday},address=#{address},sex=#{sex}
		where id=#{id}
	</update>
	<delete id="delete" parameterType="String">
		delete from user where username=#{f}
	</delete>
</mapper>

进行测试

private static void selectbyid() throws IOException {
		//加载核心配置文件
		String resource="SqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		//创建SqlSessionFactory
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		//创建SqlSession
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//执行sql语句	
		User1 user = sqlSession.selectOne("demo1.User1Mapper.findbyid", 1);//user.xml文件中namespace加上sql语句的id
		//第二个参数一定要与user.xml文件中相对应语句的parameterTyp的类型一致
		System.out.println(user);
	}

执行结果
User [id=1, username=王五, sex=2, birthday=null, address=null]
数据库数据:
在这里插入图片描述
根据username查询

private static void selectbyusername() throws IOException {
		String resource="SqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		List<User1> user = sqlSession.selectList("demo1.User1Mapper.findbyusername", "五");
		System.out.println(user);
	}

插入数据

User1 user=new User1();
		 user.setUsername("李四");
		 user.setBirthday(new Date());
		 user.setSex("男");
		 user.setAddress("福建");
		 String resource="SqlMapConfig.xml";
		 InputStream in = Resources.getResourceAsStream(resource);
		 SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		 SqlSession sqlSession = sqlSessionFactory.openSession();
		 System.out.println(sqlSession.insert("demo1.User1Mapper.insert",user));
		 sqlSession.commit();
		 System.out.println(user.getId());

注意:
System.out.println(sqlSession.insert(“demo1.User1Mapper.insert”,user));
方法参数1是user.xml文件中namespace加上sql语句的id,参数2的类型要与user.xml文件中相对应语句的parameterTyp的类型一致
在进行增删改时在结尾记得提交事务: sqlSession.commit();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值