前言
框架,什么是框架,再没学习框架之前总觉得框架是一个非常上档次的东西,现在才明白,框架就是为了优化代码,减少代码量的形成的,所以,框架在实际开发中的重要性是不难看出来的。
mybatis:
一、mybatis入门
(一)、了解是什么是mybatis
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
(二)、配置相关文件
在使用mybatis之前,首先你要拥有相应的配置,才可以进行相应的使用
一个是mybatis的架包,一个是连接数据库的加载驱动文件,在这同时也需要配置mybatis的来源文件配置,mybatis-config.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>
<!-- 配置数据库访问的基本配置 -->
<properties resource="db.properties">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url"
value="jdbc:mysql://127.0.0.1:3306/smbms?useUnicode=true&characterEncoding=UTF-8" />
<property name="username" value="root" />
<property name="password" value="root" />
</properties>
<!-- 设置延迟加载 -->
<settings>
<setting name="lazyLoadingEnabled" value="false" />
</settings>
<!-- 配置类的别名 -->
<typeAliases>
<!-- <typeAlias type="com.afei.pojo.User" alias="User" />
<typeAlias type="com.afei.pojo.Address" alias="Address" /> -->
<!-- 这种优化的方式高于第一种,如果只写了包名,则默认的别名就是自己的类名 -->
<package name="com.afei.pojo"/>
</typeAliases>
<!-- 配置数据访问的环境 -->
<environments default="development">
<environment id="development">
<!-- 事务的管理 -->
<transactionManager type="JDBC"></transactionManager>
<!-- 数据源的管理 -->
<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>
<!-- 配置测试环境 -->
<environment id="test">
<transactionManager type=""></transactionManager>
<dataSource type=""></dataSource>
</environment>
<!-- 配置生产环境 -->
<environment id="produce">
<transactionManager type=""></transactionManager>
<dataSource type=""></dataSource>
</environment>
</environments>
<!--加载映射文件 -->
<mappers>
<mapper resource="com//afei//user//dao//UserMapper.xml"></mapper>
</mappers>
</configuration>
这个xml文件中的题头属于固定模式,不用理会,用的时候直接从中的内容开始配置。代码中我只配置了数据访问环境中的数据源的配置,其中里面还可以配置测试环境,配置生产环境。
二、mybatis的简单内容步骤总结如下:
从mybatis的概念中了解到,MyBatis 就是通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。在拥有上面的配置文件之后。
(一)、创建一个接口,同时在这个接口包内创建该接口的映射器;
接口的代码如如下:
public interface UserMapper {
//查询用户的总记录数
public int count();
//查询所有的用户
public List<User> getUserList();
//根据指定的用户名进行查询
public User findUserByUserName(String _username);
//根据指定的用户对象进行查询
public List<User> findUserByUser(User _user);
//Map作为参数
public User findUserByMap(Map map);
//查询所有的地址
public List<Address> findAddressAll();
//添加地址
public int add(Address _address);
}
而映射器的代码如下:
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.afei.user.dao.UserMapper">
<!-- 查询统计用户的个数 -->
<select id="count" resultType="Integer">
select count(1) as count from smbms_user
</select>
<!-- 查询所有的用户 -->
<select id = "getUserList" resultType="User">
select * from smbms_user
</select>
<!-- 根据指定用户来进行查询 -->
<select id="findUserByUserName" resultType="User" parameterType="String">
select * from smbms_user where userName like contact('%',#{_username},'%')
</select>
<!--根据指定的用户对象进行查询 -->
<select id="findUserByUser" resultType="User" parameterType="User">
select * from smbms_user where userName=#{userName}
</select>
<!-- Map作为对象参数进行入参查询 -->
<select id="findUserByMap" resultType="User" parameterType="Map">
select * from smbms_user where userName like concat('%',#{uName},'%') and gender =#{gender1}
</select>
<!--查询所有的地址 -->
<select id="findAddressAll" resultType="Address" resultMap="addressDesc">
select * from smbms_address
</select>
<!-- 自定义映射 -->
<resultMap type="Address" id="addressDesc">
<result property="addressInfo" column="addressDesc"/>
</resultMap>
<!--简单添加操作 -->
<insert id="add" parameterType="Address">
insert into smbms_address(id,contact,addressDesc)values(#{id},#{contact},#{addressInfo})
</insert>
</mapper>
映射器的内容主要是sql语句,这里的话就要提到实体类,其中写的字段要和数据库的字段一一对应。
public class User {
private int id;
private String userCode;
private String userName;
private String userPassword;
private int gender;
private Date birthday;
private String phone;
private String address;
private int userRole;
private int createdBy;
private Date creationDate;
private int modifyBy;
private Date modifyDate;
private String idPicPath;
private String workPicPath;
public Address address1;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUserCode() {
return userCode;
}
public void setUserCode(String userCode) {
this.userCode = userCode;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getUserRole() {
return userRole;
}
public void setUserRole(int userRole) {
this.userRole = userRole;
}
public int getCreatedBy() {
return createdBy;
}
public void setCreatedBy(int createdBy) {
this.createdBy = createdBy;
}
public Date getCreationDate() {
return creationDate;
}
public void setCreationDate(Date creationDate) {
this.creationDate = creationDate;
}
public int getModifyBy() {
return modifyBy;
}
public void setModifyBy(int modifyBy) {
this.modifyBy = modifyBy;
}
public Date getModifyDate() {
return modifyDate;
}
public void setModifyDate(Date modifyDate) {
this.modifyDate = modifyDate;
}
public String getIdPicPath() {
return idPicPath;
}
public void setIdPicPath(String idPicPath) {
this.idPicPath = idPicPath;
}
public String getWorkPicPath() {
return workPicPath;
}
public void setWorkPicPath(String workPicPath) {
this.workPicPath = workPicPath;
}
public Address getAddress1() {
return address1;
}
public void setAddress1(Address address1) {
this.address1 = address1;
}
}