脚本宝典收集整理的这篇文章主要介绍了MyBatis入门,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
MyBatis 是一个支持普通SQL查询、存储过程以及高级映射的持久层框架,它消除了几乎所有的JDBC 代码和参数的手动设置以及对结果集的检索,并使用简单的XML 或注解进行配置和原始映射,用以将接口和Java的POJO(Plain Old Java Object,普通Java 对象)映射成数据库中的记录,使得Java开发人员可以使用面向对象的编程思想来操作数据库。
归纳总结一下
CREATE TABLE users(
id int(32) Primary KEY AUTO_INCREMENT,
username vArchar(50),
job VARchar(50),
phone varchar(16)
);
INSERT INTO users VALUES(1,'f','b','110');
INSERT INTO users VALUES(2,'fo','ba',120);
INSERT INTO users VALUES(3,'foo','bar',119);
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration
log4j.logger.COM.ssm=DEBUG
Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
<?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">
<mapper namespace="tech.rpish.mapper.UserMapper">
<select id="findUserById" parameterType="Integer" resultType="tech.rpish.po.User">
select * From users where id=#{id} </select>
</mapper>
<?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>
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/spring_db" />
<property name="username" value="root" />
<property name="password" value="pass" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="tech.rpish.mapper.UserMapper.xml"/>
</mappers>
</configuration>
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junIT.test;
import tech.rpish.po.User;
import java.io.InputStream;
public class MyBatisTest {
@Test
public void findUserByIdTest() throws Exception {
// 读配置文件
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
// 根据配置文件构建SqlSessionFactory Instance
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// 公共SqlSessionFactory创建SqlSession Instance
SqlSession sqlSession = sqlSessionFactory.openSession();
// sqlSession执行映射文件中定义的sql,并返回结果
User user = sqlSession.selectOne("tech.rpish.mapper.UserMapper.findUserById", 1);
// 输出结果
System.out.println(user);
// 关闭sqlSession
sqlSession.close();
}
}
调试运行,就能查询到结果了.
然后记得要修改mybatis配置文件中mapper的资源路径
Okay,这就是大致的一个过程,然后上面这是findUserById的Demo,那大家可以仿照着写下findAllUsers,addUser,deleteUser,updateUser (只要修改mapper.xml,然后写测试类就可以了) 然后,如果遇到卡壳,可以参考下我发到github的demo
InputStream inputStream = Resources.getResourceAsStream("ConfigurationFile");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream)
<configuration xmlns="http://mybatis.org/schema/mybatis-config">
<!-- 属性-->
<properties></properties>
<!-- 设置-->
<settings></settings>
<!-- 类型命名-->
<typeAliases></typeAliases>
<!-- 类型处理器-->
<typeHandlers></typeHandlers>
<!-- 对象工厂-->
<objectFactory type=""></objectFactory>
<!-- 插件-->
<plugins></plugins>
<!-- 配置环境(事务管理器,数据源)-->
<environments default="">
<environment id="">
<transactionManager type=""></transactionManager>
<dataSource type=""></dataSource>
</environment>
</environments>
<!-- 数据库厂商标识符-->
<databaseidProvider type=""></databaseIdProvider>
<!-- 映射器-->
<mappers></mappers>
</configuration>
<mapper resource="tech/rpish/mapper/Mapper.xml" />
<mapper url=file:///C:/SSM-bootstrap/mapper/Mapper.xml />
<mapper class="tech.rpish.mapper.Mapper" />
<package name"tech.rpish.mapper" />
mybatis的动态sql就是对sql语句动态组装的功能. 通过使用OGNL ExPression+tags 对sql语句进行逻辑判断,代替开发人员手动拼接sql语句. 大致有如下几类:
具体demo,详见:Commit:MyBatis-2 动态SQL · rpishgithub/SSM-bootstrap@d314427
我们常用的查询不可能总像getUsernameById这么简单,时常要处理复杂类型和多张表多个对象间的复杂的关系. 这时候就要用到mybatis的关联映射来处理对象间的一对一,一对多,多对多关联关系了.
mybatis有两种加载关联关系的方式:
一对一关系通常在resultMap中添加association嵌套查询或嵌套结果
一对多和多对多则是利用resultMap中的collection,它的大部分属性association相同,不同的是它的ofType属性,它与javaType属性对应,用于指定实体对象中集合类属性所包含的元素类型. 具体使用,详见:
然后提一下注意事项
mapper.xml
namespace同名的mapper接口,声明一方法与查询名参数返回类型对应这上边只是我看书上讲mybatis做的笔记,更多具体内容还得看官方文档. mybatis – MyBatis 3 | 简介 然后,肯定会接触到一些sql语句,这部分可以看菜鸟教程 MySQL 教程 | 菜鸟教程 (runoob.com)
以上是脚本宝典为你收集整理的MyBatis入门全部内容,希望文章能够帮你解决MyBatis入门所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。