SSM簡單介紹
SSM (用的非常多) 輕量化,簡單
Spring + Spring MVC (struts) + Mybatis (hibernate)
A(IoC容器) + B(MVC框架) + C(ORM框架) object-reation mapping=對象和關係(表)的映射
MyBatis
ybatis,前身ibatis,是一個orm框架
orm=object(對象) relation(關係,表) mapping(映射)
環境搭建步驟:
1.新建Java項目
,引入jar包,mybatis的jar包和mysql的jar包
放到src目錄下2.建立數據庫users
,建立表user(id,userName,userPwd)3.引入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>
<!-- 引入db.properties文件 -->
<properties resource="db.properties"></properties>
<!-- 對事務的管理和連接池的配置 -->
<environments default="development">
<environment id="users">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!-- 主配置文件中將連接參數修改爲變量-->
<property name="driver" value="${db.driver}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</dataSource>
</environment>
</environments>
<!-- mapping 文件路徑配置 -->
<mappers>
<mapper resource="javastudy/userMapper.xml"/>
</mappers>
</configuration>
4.在src目錄下添加db.properties文件
db.driver=com.mysql.jdbc.Driver db.url=jdbc:mysql://localhost/users db.username=root db.password=12345678
5.編寫實體類User
User(id,userName,userPwd)
6.在實體類所在包下,編寫userMapper.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"> <mapper namespace="javastudy.UserMapper"> <select id="selectUser" resultType="javastudy.User"> select * from User where id = #{id} </select> </mapper> <!-- 映射的 SQL 語句文件 -->
7.編寫測試程序
public class MyTest { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub SqlSession session = MyBatisUtils.openSession(); String statement = "javastudy.UserMapper.selectUser"; User user = session.selectOne(statement,1); System.out.println(user); session.close(); } }
完美!!! 這樣Mybatis環境就搭建好了
用Mybatis實現單表的增刪改查
注意提交sesssion.commit();
resultType查找返回參數
parameterType傳入參數
mybatis 插入亂碼
數據庫後面連接添加:useUnicode=true&characterEncoding=utf8
<?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="javastudy.UserMapper"> <select id="selectUser" resultType="javastudy.User"> select * from User where id = #{id} </select> <select id="selectAll" resultType="javastudy.User"> <!-- 查詢所有 select --> select * from User </select> <insert id="addUser" parameterType="javastudy.User"> <!-- 增加 insert --> insert into user (userName,userPwd) values (#{userName},#{userPwd}) </insert> <update id="updateUser" parameterType="javastudy.User"> <!-- 修改 update --> update user set userName=#{userName},userPwd=#{userPwd} where id=#{id} </update> <delete id="deleteUser" parameterType="int"> <!-- 刪除 delete --> delete from user where id=#{id} </delete> </mapper> <!-- 映射的 SQL 語句文件 -->
通過接口的方式訪問增刪改查方法
1.創建一個接口UserMapper接口,接口中的方法與映射中相關的sql命令標籤的id一致。
要求映射文件名稱,映射文件namespace的設置等,都要符合規範。
public interface UserMapper {
public User selectUser(int id);
public List<User> selectAll();
public void addUser(User user);
public void updateUser(User user);
public void deleteUser(int id);
}
2.在主配置文件中,引入接口類型,而不是配置文件名稱。
在mybatis-cfg-xml
<mappers>
<!-- 通過接口實現 -->
<mapper class="javastudy.UserMapper"/>
<!-- 通過userMapper.xml實現 -->
<!-- <mapper resource="javastudy/userMapper.xml"/> -->
</mappers>
將SQL命令通過註解寫入到Mapper類中
@Insert,@Update,@Delete,@Select
注意:需要去掉映射文件,否則會產生衝突!
public interface UserMapper {
@Select("select * from User where id = #{id}")
public User selectUser(int id);
@Select("select * from User")
public List<User> selectAll();
@Insert("insert into user (userName,userPwd) values (#{userName},#{userPwd})")
public void addUser(User user);
@Update("update user set userName=#{userName},userPwd=#{userPwd} where id=#{id}")
public void updateUser(User user);
@Delete("delete from user where id=#{id}")
public void deleteUser(int id);
}
將SQL命令寫入一個專門的類中通過註解引入
專門存儲SQL命令的類
public class SqlProvider {
public String selectUser() {
return "select * from User where id = #{id}";
}
public String selectAll() {
return "select * from User";
}
public String addUser() {
return "insert into user (userName,userPwd) values (#{userName},#{userPwd})";
}
public String updateUser() {
return "update user set userName=#{userName},userPwd=#{userPwd} where id=#{id}";
}
public String deleteUser() {
return "delete from user where id=#{id}";
}
}
通過註解引入
public interface UserMapper {
@SelectProvider(type=SqlProvider.class,method="selectUser")
public User selectUser(int id);
@SelectProvider(type=SqlProvider.class,method="selectAll")
public List<User> selectAll();
@InsertProvider(type=SqlProvider.class,method="addUser")
public void addUser(User user);
@UpdateProvider(type=SqlProvider.class,method="updateUser")
public void updateUser(User user);
@DeleteProvider(type=SqlProvider.class,method="deleteUser")
public void deleteUser(int id);
}