maven如何搭建 SE项目
- 下载maven http://maven.apache.org/download.cgi bin
- 解压maven压缩文件
- 创建一个本地仓库目录 E:\maven
- E:\tools\maven\apache-maven-3.5.0-bin\apache-maven-3.5.0\conf 修改settings配置文件
- 添加本地仓库配置
<localRepository>E:/maven</localRepository>
- IDE 设置
window – perferences – 搜索maven–user settings – 选择你自己的settings xml的文件位置–应用 - 创建maven项目
file - maven project - √上simple选项 - next
group id (组id)一般写公司名称或者项目名称 com.csxh
artifact id(模块id) 项目名称 mybatis
vsersion 版本 一般选择快照版本,自己也可以根据项目实际版本进行修改
packaging 打包方式 有父项目选pom、 普通选 jar、web 选war
name 名称 组名+模块名 com.csxh.mybatis
确认 - 查看jre版本,如版本与实际jre版本不符,则修改为响应版本
- java 目录放java文件 ,resources放配置等资源文件,pom 是依赖文件
- 打开pom添加你需要的依赖
===========================
原生JDBC持久化操作
- 加载驱动 Class.forName(“”);
- 创建Connection 数据库连接对象
- 创建一个Statemt 或者 PreparableStatement 对象
- Excute 或者 Query 对象数据库元数据进行操作 增删改查操作
- ResultSet 如果查询需要填充
- 遍历ResultSet中的结果集 rs.setXXX();填充对象
- 调用close方法关闭数据库连接关闭statemt和resultSet对象
Mybatis JDBC持久化操作
- 加载config配置文件
- 通过SqlSessionFactoryBuilder.builder() 方法创建一个SqlSessionFactory 实例工厂
- SqlSessionFactory.openSession() 方法获得SqlSession对象
- SqlSession进行持久化操作
- 关闭SqlSession
优点:
- 操作简单容易上手
- 比较灵活
- 与java代码进行解耦
- 提供元数据与java对象自动映射
- 支持动态sql
- 支持复杂的对象关系映射
缺点:
- 当数据查询比较复杂时sql编写工作量大
- Sql依赖于数据库,当遇到数据库迁移时会很麻烦
- 框架比较简陋完成功能较少
- 操作二级缓存机制不佳
mybatis搭建
- 添加依赖pom.xml
<dependencies>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.0</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.23</version>
</dependency>
</dependencies>
- 配置config, 创建jdbc.properties
<?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="development">
<environment id="development">
<transactionManager type="JDBC"/>
<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>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>
- 添加实体类
public class User implements Serializable{
private static final long serialVersionUID = 1L;
private int id;
private String username;
private String password;
public User() {}
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
}
}
- 添加dao,接口
public interface UserDao {
@Select("select id,username,password from t_user where id = #{id}")
public User getUserById(int id);
@Select("select id,username,password from t_user")
public List<User> getUsers();
@Insert("delete from t_user where id = #{id}")
public void delUser(int id);
@Insert("insert into t_user(username,password) values(#{username},#{password})")
public void addUser(User user);
@Insert("update t_user set username = #{username} where id = #{id}")
public void updateUser(int id,String username);
@Select("select * from t_user")
public List<User> queryUser();
}
- 添加mapper文件
<?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="mybaits.dao.UserDao">
<select id="getUserById" parameterType="java.lang.Integer" resultType="mybaits.pojo.User">
select id,username,password from t_user where id = #{id}
</select>
<select id="getUsers" resultType="mybaits.pojo.User">
select id,username,password from t_user
</select>
<insert id="addUser" parameterType="mybaits.pojo.User">
insert into t_user(username,password) values(#{username},#{password})
</insert>
<update id="updateUser" parameterType="mybaits.pojo.User">
update t_user set username = #{username} where id = #{id}
</update>
<delete id="delUser" parameterType="java.lang.Integer" >
delete from t_user where id = #{id}
</delete>
</mapper>
测试类
public class Test {
public static void main(String[] args) {
SqlSession session = null;
try {
InputStream in = Resources.getResourceAsStream("config.xml");
//6.创建sqlsessionfactory对象
SqlSessionFactory ssf = new SqlSessionFactoryBuilder().build(in);
//7.打开session
session = ssf.openSession();
//8.操作sessionsatement对象
UserDao mapper = session.getMapper(UserDao.class);
//9.session提交查询就不用
User user =mapper.getUserById(2);
System.out.println(user.getUsername()+"\t"+user.getPassword());
User user1 = new User("user", "123");
mapper.addUser(user1);
session.commit();
mapper.delUser(2);
session.commit();
mapper.updateUser(2,"gznb");
session.commit(); //提交
PageHelper.startPage(1, 2);
List<User> list = mapper.queryUser();
PageInfo<User> us =new PageInfo<User>(list);
for(User u: us.getList()) {
System.out.println(u);
}
// List<User> list = session.selectList("mybatis.dao.UserDao.getUsers");
// for(User user: list) {
// System.out.println(user.getUsername()+"\t"+user.getPassword());
// }
//10.关闭session
session.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
session.rollback(); //回滚
}
}
}