java ssm框架学习——mybatis--1
来源:互联网 发布:mac pro使用攻略 编辑:程序博客网 时间:2024/06/06 03:28
MyBatis
1. MyBatis介绍
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatement、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射成java对象并返回。
MyBatis快速入门
1.1. 导入myBatis jar包
1.1.1. 配置MyBatis核心配置文件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>
<!--
关联数据库jdbc -->
<properties resource="db.properties"></properties>
<!--
和spring整合后 environments配置将废除 -->
<environments default="development">
<environment id="development">
<!--
使用jdbc事务管理 -->
<transactionManager type="JDBC" />
<!--
数据库连接池 -->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
</configuration>
1.2. 配置db.properties文件
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc\:mysql\://localhost\:3306/myfirstdb?characterEncoding\=utf-8
jdbc.username=root
jdbc.password=root
1.3. 配置log4j.properties文件
# Global logging configuration
log4j.rootLogger=DEBUG, stdout
# 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
1.4. 创建bean类
public class User {
private Integer id;
private String username;
private String password;
private String sex;
2. 测试
2.1. 配置bean.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">
<!-- namespace:
命名空间,做sql隔离 -->
<mapper namespace="test">
</mapper>
2.2. 配置文件中添加引用
<mappers>
<mapper resource="com/example/batis/domain/User.xml" />
</mappers>
2.3. 测试查询
2.3.1. bean.xml中定义查询的方法
<select id="selectUserById" resultType="com.example.batis.domain.User"
parameterType="int">
select * from t_user where id=#{id}
</select>
<select id="selectUser" resultType="user">
select * from t_user
</select>
2.3.2. 定义工厂测试准备方法
//
会话工厂
private SqlSessionFactory sqlSessionFactory;
@Before
public void createSqlSessionFactory() throws IOException {
//
配置文件
String resource = "SqlMapConfig.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
//
使用SqlSessionFactoryBuilder从xml配置文件中创建SqlSessionFactory
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
2.3.3. 测试查询单个
@Test
public void testQuery() {
SqlSession openSession = sqlSessionFactory.openSession();
User user = openSession.selectOne("test.selectUserById", 5);
System.out.println(user.toString());
openSession.close();
}
2.3.4. 测试查询所有
@Test
public void testQueryList() {
SqlSession openSession = sqlSessionFactory.openSession();
List<User> user = openSession.selectList("test.selectUser");
for (User user2 : user) {
System.out.println(user2.toString());
}
openSession.close();
}
2.3.5. 测试模糊查询
<insert id="saveUser" parameterType="com.example.batis.domain.User">
insert into t_user
(username,password,sex) values(#{username},#{password},#{sex});
</insert>
@Test
public void testInsert() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User("
王五", "123", "男");
sqlSession.insert("test.saveUser", user);
sqlSession.commit();
sqlSession.close();
}
2.3.6. 查询总结
#{}表示一个占位符号,
通过#{}可以实现preparedStatement向占位符中设置值,
自动进行java类型和jdbc类型转换,#{}括号中可以是value或其它名称
${}表示拼接sql串${}括号中只能是value。
传入的内容拼接在sql中且不进行jdbc类型转换。
parameterType:指定输入参数类型
resultType:指定输出结果类型
2.4. 测试添加
<update id="updateUser" parameterType="com.example.batis.domain.User">
update t_user set
username=#{username},password=#{password},sex=#{sex} where id=#{id}
</update>
@Test
public void testUpdate() {
SqlSession sqlSession = sqlSessionFactory.openSession();
User user = new User("
王小九", "1234", "女");
user.setId(5);
sqlSession.update("test.updateUser", user);
sqlSession.commit();
sqlSession.close();
}
2.5. 测试修改
<delete id="deleteUser" parameterType="int" >
delete from t_user where id=#{a}
</delete>
@Test
public void testDelete() {
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.delete("test.deleteUser", 1);
sqlSession.commit();
sqlSession.close();
}
2.6. 测试删除
<delete id="deleteUser" parameterType="int" >
delete from t_user where id=#{a}
</delete>
@Test
public void testDelete() {
SqlSession sqlSession = sqlSessionFactory.openSession();
sqlSession.delete("test.deleteUser", 1);
sqlSession.commit();
sqlSession.close();
}
2.7. 插入数据并获取id
<insert id="insertUserAndgetKey" parameterType="com.example.pojo.User">
<!--keyProperty
指定查询出的id设置到哪个字段上 resultType 结果类型 order 指定为after LAST_INSERT_ID() -->
<selectKey keyProperty="id" resultType="int" order="AFTER">
select
LAST_INSERT_ID()
</selectKey>
insert into t_user
(username,sex,age) values
(#{username},#{sex},#{age});
</insert>
2.8. 插入UUID类型的主键
<insert id="insertPersonUUID" parameterType="com.example.pojo.Person">
<!--
查询出的id对应的字段 order 必须是before -->
<selectKey keyProperty="id" resultType="string" order="BEFORE">
select
uuid()
</selectKey>
insert into t_person
(id,username,sex,age) values
(#{id},#{username},#{sex},#{age});
</insert>
- java ssm框架学习——mybatis--1
- java ssm框架学习——mybatis--2
- java ssm框架学习——mybatis--3
- Java Web学习总结(24)——SSM(Spring+SpringMVC+MyBatis)框架快速整合入门教程
- java ssm框架学习——SpringMVC--1
- 学习日记:java SSM框架(Spring+SpringMVC+MyBatis)
- 三大框架SSM——Mybatis(1)
- java ssm框架学习——三大框架整合
- java ssm框架学习——SpringMVC--2
- 1.JAVA后端学习笔记——SSM框架
- SSM框架(Spring Spring MVC Mybatis)基础入门学习2——Spring入门实例
- SSM框架学习之(一)Mybatis——原始Dao开发
- SSM框架学习之(二)Mybatis——mapper开发
- SSM框架学习之(三)Mybatis——SqlMapConfig配置文件
- SSM框架学习之(四)Mybatis——高级映射(多表查询)
- 学习ssm框架——Mybatis版本问题解决方案(一)
- ssm框架学习---springmvc和mybatis整合
- ssm框架学习---mybatis中缓存
- unity模型任意无限切割插件
- 网络编程socket基本API
- 【Idea】——配置部署非Maven项目
- 最小覆盖_KEY
- 模拟的nginx 配置为域名的的方式直接访问项目
- java ssm框架学习——mybatis--1
- 将图像上雨水去除的四种主流方法
- layui 富文本 图片上传 后端PHP接口
- HDU 1841Find the Shortest Common Superstring
- 布局配合动画的使用 动态改变布局的高度
- 剑指Offer_面试题28_字符串的排列
- ubuntu 下caffe框架内一个训练流程小记
- 安卓usb转串口通讯
- js作用域和作用域链心得