MyBatis学习总结一

MyBatis学习历程(一)

公司现在的项目组用的持久层框架是MyBatis,之前没接触过,好吧,不是没接触过,是学过都忘了。现在重新学一遍好吧…….

首先用的工具是maven还是比较强大的东西。

用的两个jar包分别是MyBatis和mysql的包

<dependency>

        <groupId>org.mybatis</groupId>

        <artifactId>mybatis</artifactId>

        <version>3.4.1</version>

</dependency>

<dependency>

        <groupId>mysql</groupId>

        <artifactId>mysql-connector-java</artifactId>

        <version>5.1.40</version>

</dependency>

 

首先是MyBatis配置文件:

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTDConfig 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

   

    <typeAliases>

       <typeAlias type="com.shi.pojo.User" alias="User"/>

       <typeAlias type="com.shi.pojo.Article" alias="Article"/>

    </typeAliases>

   

    <environments default="developmet">

       <environment id="developmet">

           <transactionManager type="JDBC"/>

           <dataSource type="POOLED">

              <property name="driver" value="com.mysql.jdbc.Driver"/>

              <property name="url" value="jdbc:mysql://localhost:3306/shi"/>

              <property name="username" value="root"/>

              <property name="password" value="qqqqq"/>

           </dataSource>

       </environment>

    </environments>

   

    <mappers>

       <mapper resource="com/shi/mapper/UserMapper.xml"/>

       <mapper resource="com/shi/mapper/ArticleMapper.xml"/>

    </mappers>

</configuration>

 

其中的TypeAliases是为实体类设置别名,简化书写,在对象映射文件的<resultMap type=”XX”>可以直接使用alias所设置的别名

 

设置的实体类不多说,是个人就会。。。

然后是对象映射文件

就用User来举例,User有三个属性,分别是:id,name,age

然后UserMapper.xml就是

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTDMapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.shi.mapper.UserMapper">

    <resultMap type="User" id="UserList">

       <id column="id"property="id"/>

       <result column="NAME" property="name"/>

       <result column="age" property="age"/>

    </resultMap>

   

    <select id="selectByid" resultType="User" parameterType="int">

       select* from users where id = #{id}

    </select>

   

    <select id="selectAll" resultMap="UserList">

       select* from users

    </select>

   

    <insert id="addUser" useGeneratedKeys="true"parameterType="User" keyProperty="id">

       insertinto users values(#{id},#{name},#{age})  

    </insert>

   

    <delete id="delUser" parameterType="User">

       deletefrom users where id=#{id}

    </delete>

</mapper>

 

这个mapper映射文件:

ResultMap就是设置查询返回的类型,然后在<select>中的resultType就能直接引用(刚开始不会,在做项目遇到了好大的坑,哎,都是泪)

 

再说下如何使用的问题,这个地方我自己敲了七八遍。

具体做法肯定要使用类加载器加载文件,然后开启一个SqlSession

    private static SqlSession sqlSession;

   

    static{

       InputStreaminputStream= APP2.class.getClassLoader().getResourceAsStream("mybatis.xml");

      

       SqlSessionFactorysqlSessionFactory= newSqlSessionFactoryBuilder().build(inputStream);

      

       sqlSession = sqlSessionFactory.openSession();

    }

   

    public static SqlSessiongetSqlSession(){

       return sqlSession;

    }

使用静态代码块写的。

 

用查询举例:

首先定义了一个常量final

private static final String NS ="com.shi.mapper.ArticleMapper.";

 

NS的内容就是Mapper文件的路径,如果使用还要加上<select>id的值,如下所示:

 

    public void test(){

             

       List<User>list= sqlSession.selectList(NS+"selectAll");

      

       for(User u1:list){

          System.out.println(u1.toString());

       }  

}

 

Ps:有个小知识点,就是如果想返回List的话,resultType的类型可以是对象也可以是一个Map,具体忘了…好像还有就是有两个参数不能放在一起,具体还真忘了。。

先写这些吧。明儿去公司发上去,住的地方也没网,我写的什么东西,我都不知道狗日的…….光和妹子聊天了……

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 、可私信6博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值