/**
*
* <p>Title: QueryVo</p>
* <p>Description: 查詢條件對象</p>
*
*/
public class QueryVo implements Serializable {private User user;public User getUser() {return user;}public void setUser(User user) {this.user = user;}
}
/**
*
* <p>Title: IUserDao</p>
* <p>Description: 用戶的業務層接口</p>
*
*/
public interface IUserDao {
/**
* 根據 QueryVo 中的條件查詢用戶
* @param vo
* @return
*/
List<User> findByVo(QueryVo vo);
}
<!-- 根據用戶名稱模糊查詢,參數變成一個 QueryVo 對象了 -->
<select id="findByVo" resultType="cn.myp666.domain.User"
parameterType="cn.myp666.domain.QueryVo">select * from user where username like #{user.username};
</select>
@Test
public void testFindByQueryVo() {QueryVo vo = new QueryVo();User user = new User();user.setUserName("%王%");vo.setUser(user);List<User> users = userDao.findByVo(vo);for(User u : users) {System.out.println(u);}
}
實體類中的屬性名稱必須和查詢語句中的列名保持一致
,否則無法實現封裝。mysql 在 windows 系統中不區分大小寫!
如果實體類中的屬性名稱和查詢語句中的列名不一致則可以通過以下方法實現數據的封裝:
使用別名查詢
<!-- 配置查詢所有操作 -->
<select id="findAll" resultType="cn.myp666.domain.User">select id as userId,username as userName,birthday as userBirthday,
sex as userSex,address as userAddress from user
</select>
<!-- 建立 User 實體和數據庫表的對應關系
type 屬性:指定實體類的全限定類名
id 屬性:給定一個唯一標識,是給查詢 select 標簽引用用的。
-->
<resultMap type="cn.myp666.domain.User" id="userMap">
<id column="id" property="userId"/>
<result column="username" property="userName"/>
<result column="sex" property="userSex"/>
<result column="address" property="userAddress"/>
<result column="birthday" property="userBirthday"/>
</resultMap><!-- 配置查詢所有操作 -->
<select id="findAll" resultMap="userMap">
select * from user
</select>
<!--
<select id="findAll" resultMap="userMap">的userMap為
<resultMap type="cn.myp666.domain.User" id="userMap">中的id屬性-->
主鍵
字段非主鍵
字段 數據庫
列名實體類
屬性名稱SqlMapConfig.xml 中配置的內容和順序
在使用 properties 標簽配置時,我們可以采用兩種方式指定屬性配置。
第一種
<properties><property name="jdbc.driver" value="com.mysql.jdbc.Driver"/><property name="jdbc.url" value="jdbc:mysql://localhost:3306/db1"/><property name="jdbc.username" value="root"/><property name="jdbc.password" value="1419"/>
</properties>
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/db1
jdbc.username=root
jdbc.password=1419
<!-- 配置連接數據庫的信息
resource 屬性:用于指定 properties 配置文件的位置,要求配置文件必須在類路徑下
resource="jdbcConfig.properties"
url 屬性:
URL: Uniform Resource Locator 統一資源定位符
http://localhost:8080/mystroe/CategoryServlet URL
協議 主機 端口 URI
URI:Uniform Resource Identifier 統一資源標識符
/mystroe/CategoryServlet
它是可以在 web 應用中唯一定位一個資源的路徑
-->
<properties url="
file:///D:/IdeaProjects/day02_eesy_01mybatisCRUD/src/main/resources/jdbcConfig.prop
erties">
</properties>
或者
<properties resource="jdbcConfig.properties">
</properties>
<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>
<typeAliases>
<!-- 單個別名定義 -->
<typeAlias alias="user" type="cn.myp666.domain.User"/>
<!-- 批量別名定義,掃描整個包下的類,別名為類名(首字母大寫或小寫都可以) -->
<package name="cn.myp666.domain"/>
<package name="其它包"/>
</typeAliases>
< mapper resource=" " />
<mapper resource="cn/myp666/dao/IUserDao.xml" />
< mapper class=" " />
<mapper class="cn.myp666.dao.UserDao"/>
< package name=""/>
<package name="cn.myp666.dao"/>
<configuration><!-- 配置properties--><properties resource="jdbcConfig.properties"></properties><!--使用typeAliases配置別名,它只能配置domain中類的別名 --><typeAliases><package name="cn.myp666.domain"></package></typeAliases><!--配置環境--><environments default="mysql"><!-- 配置mysql的環境--><environment id="mysql"><!-- 配置事務 --><transactionManager type="JDBC"></transactionManager><!--配置連接池--><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"></property><property name="url" value="${jdbc.url}"></property><property name="username" value="${jdbc.username}"></property><property name="password" value="${jdbc.password}"></property></dataSource></environment></environments><!-- 配置映射文件的位置 --><mappers><package name="cn.myp666.dao"></package></mappers>
</configuration>
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态