mybatis详解(一)

来源:互联网 发布:淘宝店描述怎么写范例 编辑:程序博客网 时间:2024/05/17 06:22

一、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.Driverurl=jdbc:mysql://localhost:3306/testusername=rootpassword=root

5.HelloWorld

@Testpublic void getUserById() throws IOException{//读取配置文件String resource ="SqlMapConfig.xml";InputStream inputStream = Resources.getResourceAsStream(resource);//创建SqlSessionFactorySqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);//创建SqlSessionSqlSession 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
原创粉丝点击