mybatis详解(一)

一、mybatis介绍:

mybatis是用来封装jdbc的一个持久层框架,它和Hibernate都属于ORM框架。但Hibernate属于完全的ORM框架,mybatis属于不完全的ORM框架。

mybatis让程序员只关注sql本身,而不去关心连接的创建,statement的创建等等其他操作。


二、HelloWorld

1.导入jar包:

a.mysql-connector-java-5.1.22-bin.jar mysql驱动包

b.mybatis-3.3.0.jar  mybatis核心包

c.mybatis依赖包


2.mybatis的配置文件

<?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>  
  
  	<!-- 加载java的配置文件,如db.properties -->
  	<properties resource="db.properties"></properties>
  	<!-- 省却包名 -->
  	<typeAliases>
  		<package name="com.milan.entity"/>
  	</typeAliases>
  
    <!-- 配置mybatis的环境信息,与spring整合,该信息由spring来管理 -->  
    <environments default="development">  
        <environment id="development">  
            <!-- 配置JDBC事务控制,由mybatis进行管理 -->  
            <transactionManager type="JDBC"></transactionManager>  
            <!-- 配置数据源,采用mybatis连接池 -->  
            <dataSource type="POOLED">  
                <property name="driver" value="${driver}" />  
                <property name="url" value="${url}" />  
                <property name="username" value="${username}" />  
                <property name="password" value="${password}" />  
            </dataSource>  
        </environment>  
    </environments>  
   
    <!-- 加载映射文件 -->  
    <mappers>  
        <mapper resource="User.xml" />  
        <mapper resource="mapper/UserMapper.xml" />  
    </mappers>  
   
</configuration>


3.对应的User类的配置文件

<?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:命名空间,对statement的信息进行分类管理 -->
<!-- 注意:在mapper代理时,它具有特殊及重要的作用 -->
<mapper namespace="com.milan.mapper.UserMapper"><!--dao使用test, mapper代理需要使用全路径com.milan.mapper.UserMapper -->
	<!-- 根据用户ID查询用户信息 -->
	<!-- select:表示一个MappedStatement对象 -->
	<!-- id:statement的唯一标示 -->
	<!-- #{}:表示一个占位符? -->
	<!-- #{id}:里面的id表示输入参数的参数名称,如果该参数是简单类型,那么#{}里面的参数名称可以任意 -->
	<!-- parameterType:输入参数的java类型 -->
	<!-- resultType:输出结果的所映射的java类型(单条结果所对应的java类型) -->
	<select id="findUserById" parameterType="int"
		resultType="User">
		SELECT * FROM t_user WHERE id =#{id}
	</select>

	<!-- 根据用户名称模糊查询用户列表 -->
	<!-- ${}:表示一个sql的连接符 -->
	<!-- ${value}:里面的value表示输入参数的参数名称,如果该参数是简单类型,那么${}里面的参数名称必须是value -->
	<!-- ${}这种写法存在sql注入的风险,所以要慎用!!但是在一些场景下,必须使用${},比如排序时,动态传入排序的列名,${}会原样输出,不加解释 -->
	<select id="findUserByPassword" parameterType="String"
		resultType="User">
		SELECT * FROM t_user WHERE password  LIKE '%${value}%'
	</select>

	<!-- 添加语句 -->
	<!-- selectKey:表示查询主键,标签内需要输入查询主键的sql -->
	<!-- order:表示查询主键的sql与插入语句的sql的执行顺序
			1.如果使用数据库自增,则order值为before,ID设置为int类型,不需要手动传入
			2.如果使用数据库的UUID,则order值为after,ID需要设置为string类型,并且手动传入
	 -->
	<insert id="addUser" parameterType="User">
		<selectKey keyProperty="id" resultType="int" order="AFTER">
			SELECT LAST_INSERT_ID()
		</selectKey>
		INSERT INTO t_user 
			(username,password,idNumber,vip,score,createTime,lastLoginTime) 
		VALUES
			(#{username},#{password},#{idNumber},#{vip},#{score},#{createTime},#{lastLoginTime})
	</insert>

</mapper>


4.数据库的db.properties文件

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/test
username=root
password=root

5.HelloWorld

	@Test
	public void getUserById() throws IOException{
		//读取配置文件
		String resource ="SqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		//创建SqlSessionFactory
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		//创建SqlSession
		SqlSession sqlSession = factory.openSession();
		//调用SqlSession的增删改查方法
		//第一个参数表示statement的唯一标识
		//第二个参数表示参数
		User user = sqlSession.selectOne("test.findUserById",1);
		System.out.println(user.toString());
		System.out.println("===========================================");
		List<User> list = sqlSession.selectList("test.findUserByPassword","111");
		System.out.println(list);
		sqlSession.insert("test.addUser", user);
		sqlSession.commit();
		sqlSession.close();
	}




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值