您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# Weed3-3.1.Xml SQL的使用方法
## 概述
Weed3是一个轻量级的Java ORM框架,其Xml SQL功能通过将SQL语句与Java代码分离,显著提升了项目的可维护性。本文将详细介绍Weed3-3.1版本中Xml SQL的配置和使用方法。
## 一、基础配置
### 1.1 添加依赖
首先需要在项目中引入Weed3的核心依赖:
```xml
<dependency>
<groupId>org.noear</groupId>
<artifactId>weed3</artifactId>
<version>3.1</version>
</dependency>
推荐的项目结构如下:
src/main/resources/
└── sql/
├── user/
│ └── user.xml
└── order/
└── order.xml
在application.yml
中配置数据源:
weed3:
datasource:
default:
url: jdbc:mysql://localhost:3306/test
username: root
password: 123456
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//weed3.org//DTD Mapper 3.0//EN"
"http://weed3.org/dtd/weed3-mapper.dtd">
<mapper namespace="user">
<!-- SQL定义区域 -->
</mapper>
支持四种基本语句类型:
<select id="getById">...</select>
<insert id="create">...</insert>
<update id="update">...</update>
<delete id="delete">...</delete>
<select id="findUsers">
SELECT * FROM user
WHERE 1=1
<if test="name != null">
AND name = #{name}
</if>
<if test="age gt 18">
AND age > #{age}
</if>
</select>
<insert id="batchInsert">
INSERT INTO user(name,age) VALUES
<foreach item="item" collection="list" separator=",">
(#{item.name}, #{item.age})
</foreach>
</insert>
<select id="queryByType">
SELECT * FROM user
<choose>
<when test="type == 1">
WHERE status = 1
</when>
<when test="type == 2">
WHERE status = 0
</when>
<otherwise>
WHERE deleted = 0
</otherwise>
</choose>
</select>
<select id="getById">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="insertUser">
INSERT INTO user(name,age)
VALUES(#{user.name}, #{user.age})
</insert>
<select id="search">
SELECT * FROM article
WHERE title LIKE '%${keyword}%'
</select>
注意:
${}
有SQL注入风险,尽量使用#{}
<select id="getAll" resultType="com.example.User">
SELECT * FROM user
</select>
<resultMap id="userMap" type="User">
<result property="username" column="name"/>
<result property="userAge" column="age"/>
</resultMap>
<select id="getComplexUser" resultMap="userMap">
SELECT * FROM user WHERE id = #{id}
</select>
<select id="findByPage" pageable="true">
SELECT * FROM user
WHERE status = 1
</select>
Java调用代码:
Page page = new Page(1, 10);
List<User> users = db.table("user")
.xmlsql("findByPage")
.getList(new User(), page);
<update id="batchUpdate">
UPDATE user SET status = #{status}
WHERE id IN
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</update>
通过@Db
注解指定数据源:
@Db("slave")
public List<User> findFromSlave(){
return db.table("user")
.xmlsql("findAll")
.getList(new User());
}
get_by_id
问题1:参数为null时报错
解决方案:
<if test="param != null">
AND field = #{param}
</if>
问题2:Like查询特殊处理
解决方案:
AND name LIKE CONCAT('%', #{name}, '%')
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//weed3.org//DTD Mapper 3.0//EN"
"http://weed3.org/dtd/weed3-mapper.dtd">
<mapper namespace="user">
<select id="getById" resultType="com.example.User">
SELECT * FROM user WHERE id = #{id}
</select>
<insert id="create" keyProperty="id" useGeneratedKeys="true">
INSERT INTO user(name, age)
VALUES(#{name}, #{age})
</insert>
<update id="update">
UPDATE user SET
name = #{name},
age = #{age}
WHERE id = #{id}
</update>
</mapper>
// 获取用户
User user = db.table("user")
.xmlsql("user.getById")
.get(new User(), 1);
// 创建用户
User newUser = new User();
newUser.setName("张三");
newUser.setAge(25);
db.table("user").xmlsql("user.create").execute(newUser);
// 更新用户
user.setAge(26);
db.table("user").xmlsql("user.update").execute(user);
Weed3的Xml SQL功能通过以下优势提升开发效率: 1. SQL与Java代码解耦 2. 强大的动态SQL支持 3. 简洁的API调用方式 4. 灵活的结果集处理
建议结合具体业务场景,合理使用各种动态SQL语法,既保证代码的可读性,又能满足复杂业务需求。 “`
注:本文档基于Weed3 3.1版本编写,实际使用时请参考对应版本的官方文档。不同版本可能存在细微差异。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。