SpringDao JDBC技术
SpringMVC 技术
SpringAOP 切面编程
Spring ORM
Hibernate 技术mybatis技术
JAVAEE 服务器集合
Spring IOC技术
SpringData项目 外延技术 扩展功能
SpringBoot项目 简化Spring
不需要xml配置 不需要开启扫描,直接注入参数
Spring Cloud 技术 云服务 微服务
MyBais 简介
iBATIS --MyBtis( Googlecode) --MyBatis(Github 组件)
Mybatis作用:封装了JDBC应用,简化数据库访问。
优点如下:
封装了获取连接执行Sql、释放连接过程
封住了将ResultSet结果映射成实体对象过程
封装类将实体对象映射到SQL参数过程
封装了多表关联查询映射
封装了动态SQL技术、分页查询 、缓存技术
搭建myabtis基本环境
导入jar包
Mybatis.jar包 数据库驱动包ojdbc.jar oracle数据驱动包
mysql-connector-java-5.1.7-bin.jar mysql驱动包
添加配置文件
指定数据源连接参数
sqlmap-config.xml
指定SQL定义文件
<properties />属性
<settings />设置
<typeAliases />类型命名
<typeHandlers />类型处理器
<objectFactory />对象工厂
<plugins />插件
<environments>配置环境
<environment>环境变量
<transactionManager />事务管理器
<dataSource />数据源
</environment>
</environments>
<databaseIdProvider />数据库厂商标识
<mappers />映射器
<?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="environment">
<environment id="environment">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
<property name="driver" value="com.mysql.jdbc.Driver"/>
</dataSource>
</environment>
</environments>
<!-- 指定sql定义文件 -->
<mappers>
<mapper resource="com/tracy/sql/UserMapper.xml"/>
</mappers>
</configuration>
实体类 属性名与数据库保持一致
属性名=字段名
实体类实现序列化 放到缓存中
使用框架封装类Interger 防止空指针异常 报错
文件路径/ UserMapper.xml
编写SQL语句 xml文件进行存放或注解
namespace=“userMapper” 命名空间进行区分
paramterType=“int” int 等价于java.lang.Integer
<mapper namespace="userMapper">
<select id="findAll" resultType="com.tracy.eneity.User">
select * from user
</select>
<select id="findById" parameterType="Integer" resultType="com.tracy.eneity.User">
select * from user where id=#{id}
</select>
<insert id="save" parameterType="com.tracy.eneity.User" >
insert into user (id,name,pwd,head_img) values(#{id},#{name},#{pwd},#{head_img})
</insert>
<delete id="delete" parameterType="Integer">
delete user where id=#{id}
</delete>
<update id="update" parameterType="com.tracy.eneity.User" >
update user set name=#{name},pwd=#{pwd},head_img=#{head_img} where id=#{id}
</update>
</mapper>
MybatisUtil 工具类
public class MybatisUtil {
public static SqlSession getSession() throws IOException {
SqlSessionFactoryBuilder bulider=new SqlSessionFactoryBuilder();
//解析构造Reader对象
Reader read=Resources.getResourceAsReader("sqlmap-config.xml");
SqlSessionFactory factory=bulider.build(read);
//传入配置文件,构建factory对象
SqlSession session=factory.openSession();
return session;
}
}
Mybatis 自动将数据提交设置为false 需要设置为自动提交
session.commit();
无效列类型 null属姓值为空
允许null值 jdbcType=VARCHAR
jdbcType类型
测试类
public class Test1 {
@Test
public void findAll() throws IOException {
SqlSession session=MybatisUtil.getSession(); List<User>
list=session.selectList("findAll");
for(User user:list) {
System.out.println(user.getName()+"|||| "+user.getHead_img());
}
}
@Test
public void save() throws IOException {
SqlSession session=MybatisUtil.getSession();
User user=new User();
user.setId(222);
user.setName("hahahha1");
user.setPwd("123456");
user.setHead_img("1.jpg");
session.insert("save",user);
session.commit();
session.close();
}
@Test
public void findByID() throws IOException {
SqlSession session=MybatisUtil.getSession();
User user=session.selectOne("findById",222);
System.out.println(user.getName()+";;;; "+user.getHead_img());
session.close();
}
@Test
public void update() throws IOException {
SqlSession session=MybatisUtil.getSession();
User user=new User();
user.setId(222);
user.setName("hahahha111111111");
user.setPwd("123456111111");
user.setHead_img("1111111111.jpg");
session.update("update",user);
session.commit();
System.out.println(user.getName()+";;;; "+user.getHead_img());
session.close();
}
}
Mapper映射器
作用·:Mapper映射器 可以自动触发SQL定义的操作
他实际是一个接口,按照一定的标准写出来,具体规则如下:
mapper namespacing=“”包名.Mapper接口名“”
Mapper接口方法中定义的方法需要跟SQL定义的id保持一致
参数类型需要跟SQL“定义的参数的类型一致
ResultType 查询数据特有 实现数据映射
DAO接口
public interface UserMapper {
public List<User> findAll();
public User findById(int id);
public int update(User user);
public int delete(int id);
}
不需要写实现类
Mapper接口相当于DAO实现类
UserMapper namespace=“”com.dao UserMapper“”
测试类
@Test
public void findAll() throws IOException {
SqlSession session=MybatisUtil.getSession();
UserMapper userDao=session.getMapper(UserMapper.class);
List<User> list=userDao.findAll();
for(User user:list) {
System.out.println(user.getName());
}
}